Transfery Robux pozwalają subskrybentom Roblox Plus wysyłać Robux bezpośrednio do innych użytkowników.
Aby wspierać transfery w swojej grze, wywołaj PromptRobuxTransferAsync, aby otworzyć okno transferu, a następnie użyj BindReceiptHandler, aby przetworzyć potwierdzenia transferu. Gdy subskrybent zakończy transfer, Twoja gra zarabia 10% przesyłanych Robux, a odbiorca otrzymuje pozostałe 90%. Na przykład transfer 100 Robux przekazuje 90 Robux odbiorcy i 10 Robux do Twojej gry.
Robux, które Twoja gra zarabia na transferach, jest kwalifikowane do programu DevEx. Roblox nie pobiera prowizji za te transfery.

Jako twórca, nie masz dostępu do szczegółów transferów ani kontroli nad ich wykonaniem. Wszystkie transfery Robux są przetwarzane i zarządzane przez platformę Roblox, a wszystkie działania nadawcy i odbiorcy przechodzą przez te same kontrole bezpieczeństwa i uprawnień. W Twojej grze transfery są realizowane za pomocą interfejsu użytkownika kontrolowanego przez Roblox, aby zapewnić ich bezpieczeństwo i zgodność z polityką.
Prośba o transfer Robux
Aby rozpocząć transfer Robux w swojej grze:
- Wywołaj PromptRobuxTransferAsync z skryptu serwerowego.
- Przekaż wymagane parametry:
- sender: Gracz inicjujący transfer.
- receiverUserId: ID użytkownika odbiorcy.
- amount: Kwota Robux do przetransferowania.
- Zapisz zwrócone transferRequestId, które identyfikuje prośbę o transfer i może być użyte do logowania lub korelowania transferu z potwierdzeniami później.
Poniższy przykład inicjuje transfer Robux między dwoma użytkownikami:
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
-- Transferuje Robux, gdy użytkownik wyzwala RemoteEvent
local transferEvent = game.ReplicatedStorage:WaitForChild("RequestTransfer")
transferEvent.OnServerEvent:Connect(function(sender, receiverUserId, amount)
-- Walidacja danych wejściowych
if not sender or not sender:IsA("Player") then
return
end
if typeof(receiverUserId) ~= "number" or receiverUserId <= 0 then
warn("Invalid receiverUserId")
return
end
if typeof(amount) ~= "number" or amount <= 0 then
warn("Invalid amount")
return
end
local success, result = pcall(function()
return MarketplaceService:PromptRobuxTransferAsync(sender, receiverUserId, amount)
end)
if success then
print(`Transfer initiated with TransferRequestId: {result}`)
else
warn(`Transfer failed: {result}`)
end
end)
Obsługa potwierdzeń transferu
Po udanym transferze, Roblox generuje potwierdzenia dla nadawcy i odbiorcy. Możesz przetwarzać te potwierdzenia używając BindReceiptHandler, aby potwierdzić, że transfer zakończył się pomyślnie.
Aby zachęcić subskrybentów Plus do transferowania Robux w swojej grze, możesz oferować przedmioty lub inne bonusy za każdy udany transfer. Jeśli to zrobisz, przetwórz potwierdzenie przed przyznaniem nagrody, aby upewnić się, że jest ono przyznane tylko za zakończone transfery.
Aby przetworzyć potwierdzenia transferu Robux:
- Użyj BindReceiptHandler, aby zarejestrować handler dla RobuxTransferSender, który obsługuje potwierdzenia dla użytkownika, który zainicjował transfer.
- Zarejestruj drugi handler dla RobuxTransferReceiver, który obsługuje potwierdzenia dla użytkownika, który otrzymał Robux.
- W każdym handlerze sprawdź informacje potwierdzenia, w tym PlayerId i TransferRequestId. Oba typy potwierdzeń zawierają TransferRequestId, które pasuje do transferRequestId zwróconego przez PromptRobuxTransferAsync.
- Zwróć wartość Enum.ReceiptDecision z Twojego handlera:
- Zwróć Processed po zakończeniu obsługi potwierdzenia. To oznacza potwierdzenie jako ukończone i potwierdza, że transfer Robux był udany.
- Zwróć NotProcessedYet, jeśli potwierdzenie nie może być jeszcze przetworzone (na przykład, jeśli użytkownik nie jest już na serwerze). To sprawia, że potwierdzenie pozostaje nierozwiązane, aby mogło być dostarczone później (na przykład, gdy użytkownik ponownie dołączy na serwer).
Poniższy przykład rejestruje handlery dla potwierdzeń nadawcy i odbiorcy:
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
-- Obsługuje potwierdzenia nadawców (użytkownik, który wysłał Robux)
local senderConnection = MarketplaceService:BindReceiptHandler(
Enum.ReceiptType.RobuxTransferSender,
function(receiptInfo)
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if not player then
-- Użytkownik opuścił serwer - przetwarzanie potwierdzenia jest opóźnione, aż użytkownik ponownie dołączy do serwera
return Enum.ReceiptDecision.NotProcessedYet
end
print(`{player.Name} sent Robux (TransferRequestId: {receiptInfo.TransferRequestId})`)
-- Możesz przyznać dowolne uznanie po stronie nadawcy lub zaktualizować interfejs użytkownika tutaj
return Enum.ReceiptDecision.Processed
end
)
-- Obsługuje potwierdzenia odbiorców (użytkownik, który otrzymał 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} received Robux (TransferRequestId: {receiptInfo.TransferRequestId})`)
-- Możesz przyznać dowolne korzyści po stronie odbiorcy lub zaktualizować interfejs użytkownika tutaj
return Enum.ReceiptDecision.Processed
end
)