Robux 转账

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

Robux 转账 允许 Roblox Plus 订阅者直接将 Robux 发送给其他用户。

要在您的游戏中支持转账,请调用 PromptRobuxTransferAsync 打开转账提示,并使用 BindReceiptHandler 处理转账收据。当订阅者完成转账时,您的游戏可以获得发送的 Robux 的 10%,而接收者将收到剩余的 90%。例如,100 Robux 转账会将 90 Robux 支付给接收者,并将 10 Robux 支付给您的游戏。

您的游戏从转账中获得的 Robux 符合 DevEx 计划。Roblox 不会从这些转账中收取费用。

作为创造者,您无法访问转账详情或控制执行。所有 Robux 转账都由 Roblox 平台处理和管理,所有发件人和接收人操作都经过相同的安全性和资格检查。在您的游戏中,转账通过 Roblox 控制的用户界面完成,以确保安全和符合政策。

提示 Robux 转账

要在您的游戏中发起 Robux 转账:

  1. 从服务器脚本调用 PromptRobuxTransferAsync
  2. 传递所需的参数:
    • sender: 发起转账的玩家。
    • receiverUserId: 接收者的用户 ID。
    • amount: 要转账的 Robux 数量。
  3. 存储返回的 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(`转账已发起,TransferRequestId: {result}`)
else
warn(`转账失败: {result}`)
end
end)

处理转账收据

成功转账后,Roblox 会为发件人和接收人生成收据。您可以使用 BindReceiptHandler 处理这些收据,以确认转账是否成功完成。

为了鼓励 Plus 订阅者在您的游戏中转账 Robux,您可以为每笔成功转账提供物品或其他福利。如果您这样做,请在授予奖励之前处理收据,以确保只有在完成转账后才给予奖励。

要处理 Robux 转账收据:

  1. 使用 BindReceiptHandler 注册一个处理程序,处理 RobuxTransferSender 的收据,该收据是为发起转账的用户处理的。
  2. RobuxTransferReceiver 注册第二个处理程序,该收据是为接收到 Robux 的用户处理的。
  3. 在每个处理程序中,检查收据信息,包括 PlayerIdTransferRequestId。这两种收据类型都包含一个与 PromptRobuxTransferAsync 返回的 transferRequestId 匹配的 TransferRequestId
  4. 从您的处理程序返回一个 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})`)
-- 您可以在这里授予任何发件人侧确认或更新用户界面
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})`)
-- 您可以在这里授予任何接收人侧福利或更新用户界面
return Enum.ReceiptDecision.Processed
end
)
©2026 Roblox Corporation、Roblox、Roblox 标志及 Powering Imagination 是我们在美国及其他国家或地区的注册与未注册商标。