Robux 전송은 Roblox Plus 구독자가 다른 사용자에게 Robux를 직접 보낼 수 있게 해줍니다.
게임에서 전송을 지원하려면 PromptRobuxTransferAsync를 호출하여 전송 프롬프트를 열고, BindReceiptHandler를 사용하여 전송 영수증을 처리해야 합니다. 구독자가 전송을 완료하면, 당신의 게임은 보낸 Robux의 **10%**를 획득하고 수신자는 나머지 **90%**를 받습니다. 예를 들어, 100 Robux 전송은 수신자에게 90 Robux를 지급하고, 당신의 게임은 10 Robux를 받습니다.
게임에서 전송으로 얻은 Robux는 DevEx 프로그램에 적격입니다. Roblox는 이러한 전송에서 수수료를 받지 않습니다.

창작자로서 전송 세부정보에 접근하거나 실행을 제어할 수 없습니다. 모든 Robux 전송은 Roblox 플랫폼에 의해 처리 및 관리되며, 모든 발신자 및 수신자 작업은 동일한 안전 및 적격성 검사를 거칩니다. 게임 내에서 전송은 안전하고 정책 준수를 보장하기 위해 Roblox가 제어하는 UI를 통해 완료됩니다.
Robux 전송 요청
게임 내에서 Robux 전송을 시작하려면:
- 서버 측 스크립트에서 PromptRobuxTransferAsync를 호출합니다.
- 필수 매개변수를 전달합니다:
- sender: 전송을 시작한 플레이어.
- receiverUserId: 수신자의 사용자 ID.
- amount: 전송할 Robux의 양.
- 전송 요청을 식별하는 반환된 transferRequestId를 저장하고 나중에 영수증과 연관짓는 데 사용할 수 있습니다.
다음 예제는 두 사용자 간의 Robux 전송을 시작합니다:
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
-- 사용자가 RemoteEvent를 트리거 할 때 Robux를 전송합니다.
local transferEvent = game.ReplicatedStorage:WaitForChild("RequestTransfer")
transferEvent.OnServerEvent:Connect(function(sender, receiverUserId, amount)
-- 입력값 유효성 검사
if not sender or not sender:IsA("Player") then
return
end
if typeof(receiverUserId) ~= "number" or receiverUserId <= 0 then
warn("유효하지 않은 receiverUserId")
return
end
if typeof(amount) ~= "number" or amount <= 0 then
warn("유효하지 않은 금액")
return
end
local success, result = pcall(function()
return MarketplaceService:PromptRobuxTransferAsync(sender, receiverUserId, amount)
end)
if success then
print(`전송이 initiated with TransferRequestId: {result}`)
else
warn(`전송 실패: {result}`)
end
end)
전송 영수증 처리
전송이 성공적으로 완료되면, Roblox는 발신자와 수신자 모두에 대해 영수증을 생성합니다. BindReceiptHandler를 사용하여 이러한 영수증을 처리하여 전송이 성공적으로 완료되었는지 확인할 수 있습니다.
Plus 구독자가 게임 내에서 Robux를 전송하도록 유도하기 위해, 각 성공적인 전송에 대해 아이템이나 기타 혜택을 제공할 수 있습니다. 이 경우, 보상을 부여하기 전에 영수증을 처리하여 완료된 전송에 대해서만 보상을 제공하도록 합니다.
Robux 전송 영수증을 처리하려면:
- BindReceiptHandler를 사용하여 전송을 시작한 사용자의 영수증을 처리하는 RobuxTransferSender를 위한 핸들러를 등록합니다.
- RobuxTransferReceiver|Enum.ReceiptType.RobuxTransferReceiver의 영수증을 처리하는 두 번째 핸들러를 등록합니다.
- 각 핸들러에서 영수증 정보를 검사하여 PlayerId와 TransferRequestId를 포함합니다. 두 영수증 유형은 PromptRobuxTransferAsync에서 반환된 transferRequestId와 일치하는 TransferRequestId를 포함합니다.
- 핸들러에서 Enum.ReceiptDecision 값을 반환합니다:
- 영수증 처리가 완료된 후 Processed를 반환합니다. 이는 영수증을 완료로 표시하고 Robux 전송이 성공적으로 이루어졌음을 확인합니다.
- 영수증을 아직 처리할 수 없는 경우 (예: 사용자가 더 이상 서버에 존재하지 않는 경우) NotProcessedYet를 반환합니다. 이는 영수증을 미해결 상태로 유지하여 나중에 (예: 사용자가 서버에 다시 접속할 때) 배달할 수 있습니다.
다음 예제는 발신자와 수신자의 영수증에 대해 핸들러를 등록합니다:
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
-- 발신자 영수증 처리 (Robux를 보낸 사용자)
local senderConnection = MarketplaceService:BindReceiptHandler(
Enum.ReceiptType.RobuxTransferSender,
function(receiptInfo)
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if not player then
-- 사용자가 서버를 떠났음 - 영수증 처리는 사용자가 서버에 다시 접속할 때까지 연기됩니다.
return Enum.ReceiptDecision.NotProcessedYet
end
print(`{player.Name}이 Robux를 보냈습니다 (TransferRequestId: {receiptInfo.TransferRequestId})`)
-- 여기에 발신자 측 인정을 부여하거나 UI를 업데이트할 수 있습니다.
return Enum.ReceiptDecision.Processed
end
)
-- 수신자 영수증 처리 (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}이 Robux를 받았습니다 (TransferRequestId: {receiptInfo.TransferRequestId})`)
-- 여기에 수신자 측 혜택을 부여하거나 UI를 업데이트할 수 있습니다.
return Enum.ReceiptDecision.Processed
end
)