I trasferimenti di Robux permettono agli abbonati di Roblox Plus di inviare Robux direttamente ad altri utenti.
Per supportare i trasferimenti nel tuo gioco, chiama PromptRobuxTransferAsync per aprire il prompt di trasferimento e utilizza BindReceiptHandler per elaborare le ricevute di trasferimento. Quando un abbonato completa un trasferimento, il tuo gioco guadagna il 10% dei Robux inviati e il destinatario riceve il restante 90%. Ad esempio, un trasferimento di 100 Robux paga 90 Robux al destinatario e 10 Robux al tuo gioco.
I Robux che il tuo gioco guadagna dai trasferimenti sono idonei per il programma DevEx. Roblox non addebita commissioni su questi trasferimenti.

In qualità di creatore, non hai accesso ai dettagli del trasferimento o controllo sull'esecuzione. Tutti i trasferimenti di Robux sono elaborati e gestiti dalla piattaforma Roblox, e tutte le azioni del mittente e del destinatario passano attraverso gli stessi controlli di sicurezza e idoneità. All'interno del tuo gioco, i trasferimenti vengono completati tramite un'interfaccia utente controllata da Roblox per garantire che siano sicuri e conformi alle politiche.
Richiesta di trasferimento di Robux
Per avviare un trasferimento di Robux all'interno del tuo gioco:
- Chiama PromptRobuxTransferAsync da uno script lato server.
- Passa i parametri richiesti:
- sender: Il giocatore che inizia il trasferimento.
- receiverUserId: L'utente ID del destinatario.
- amount: L'importo di Robux da trasferire.
- Memorizza il transferRequestId restituito che identifica la richiesta di trasferimento e può essere utilizzato per registrare o correlare il trasferimento con le ricevute in seguito.
Il seguente esempio avvia un trasferimento di Robux tra due utenti:
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
-- Trasferisce Robux quando un utente attiva un RemoteEvent
local transferEvent = game.ReplicatedStorage:WaitForChild("RequestTransfer")
transferEvent.OnServerEvent:Connect(function(sender, receiverUserId, amount)
-- Valida gli input
if not sender or not sender:IsA("Player") then
return
end
if typeof(receiverUserId) ~= "number" or receiverUserId <= 0 then
warn("receiverUserId non valido")
return
end
if typeof(amount) ~= "number" or amount <= 0 then
warn("importo non valido")
return
end
local success, result = pcall(function()
return MarketplaceService:PromptRobuxTransferAsync(sender, receiverUserId, amount)
end)
if success then
print(`Trasferimento avviato con TransferRequestId: {result}`)
else
warn(`Trasferimento fallito: {result}`)
end
end)
Gestire le ricevute di trasferimento
Dopo un trasferimento riuscito, Roblox genera ricevute sia per il mittente che per il destinatario. Puoi elaborare queste ricevute utilizzando BindReceiptHandler per confermare che il trasferimento sia stato completato con successo.
Per incoraggiare gli abbonati a Plus a trasferire Robux all'interno del tuo gioco, puoi offrire oggetti o altri vantaggi per ogni trasferimento riuscito. Se lo fai, elabora la ricevuta prima di concedere il premio per garantire che venga dato solo per trasferimenti completati.
Per elaborare le ricevute di trasferimento di Robux:
- Usa BindReceiptHandler per registrare un gestore per RobuxTransferSender, che gestisce le ricevute per l'utente che ha avviato il trasferimento.
- Registra un secondo gestore per RobuxTransferReceiver, che gestisce le ricevute per l'utente che ha ricevuto i Robux.
- In ogni gestore, ispeziona le informazioni della ricevuta, compresi PlayerId e TransferRequestId. Entrambi i tipi di ricevuta includono un TransferRequestId che corrisponde al transferRequestId restituito da PromptRobuxTransferAsync.
- Restituisci un valore di Enum.ReceiptDecision dal tuo gestore:
- Restituisci Processed dopo aver finito di gestire la ricevuta. Questo segna la ricevuta come completata e conferma che il trasferimento di Robux è stato riuscito.
- Restituisci NotProcessedYet se la ricevuta non può ancora essere elaborata (ad esempio, se l'utente non è più nel server). Questo mantiene la ricevuta irrisolta in modo che possa essere consegnata più tardi (ad esempio, quando l'utente rientra nel server).
Il seguente esempio registra gestori per le ricevute sia del mittente che del destinatario:
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
-- Gestisce le ricevute del mittente (l'utente che ha inviato i Robux)
local senderConnection = MarketplaceService:BindReceiptHandler(
Enum.ReceiptType.RobuxTransferSender,
function(receiptInfo)
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if not player then
-- L'utente ha lasciato il server - l'elaborazione della ricevuta è rinviata fino a quando l'utente rientra nel server
return Enum.ReceiptDecision.NotProcessedYet
end
print(`{player.Name} ha inviato Robux (TransferRequestId: {receiptInfo.TransferRequestId})`)
-- Puoi concedere qualsiasi tipo di riconoscimento per il mittente o aggiornare l'interfaccia qui
return Enum.ReceiptDecision.Processed
end
)
-- Gestisce le ricevute del destinatario (l'utente che ha ricevuto i Robux)
local receiverConnection = MarketplaceService:BindReceiptHandler(
Enum.ReceiptType.RobuxTransferReceiver,
function(receiptInfo)
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if not player then
return Enum.ReceiptDecision.NotProcessedYet
end
print(`{player.Name} ha ricevuto Robux (TransferRequestId: {receiptInfo.TransferRequestId})`)
-- Puoi concedere eventuali vantaggi per il destinatario o aggiornare l'interfaccia qui
return Enum.ReceiptDecision.Processed
end
)