體驗內的訂閱 讓您為用戶提供每月收費的持續優惠。與 通行證 類似,簽訂訂閱和通行證之間的主要差異在於通行證的好處是永久授予,而訂閱的好處則取決於用戶支付每月費用。Roblox 上的訂閱有以下特性:
- 自動續訂: 訂閱會自動續訂,不是一次性購買,並以當地貨幣價格。
- Robux 支付: 您在Robux中收到訂閱收入。如需更多詳情,請參閱透過訂閱獲得收入。
- 單層結構:: 體驗中的所有訂閱都可以同時擁有用戶。不支持相互獨家訂閱。
使用者可以使用 Roblox 禮品卡積分或信用點數卡或借記卡在桌面應用程式或網站上購買訂閱,並通過資格區內的 Apple 和 Google 商店的付款方式購買。使用者可以在其 Roblox 帳戶設定的 訂閱 標籤中查看和管理訂閱購買。
訂閱將在未來擴展到更多區域。 無法使用的區域包括: 阿根廷、哥倫比亞、印度、印尼、日本、俄羅斯、臺灣、土耳其(土耳其)、阿聯酋、烏克蘭和越南。
訂閱指南
在創建您的訂閱之前,請確保它們與 Roblox 使用條款 相一致,並遵守當地法律。任何參與詐騙、嘗試誤導使用者以虛假優惠或其他違反我們的 社群標準 的經驗都會被取下。此外,確保您的訂閱遵守以下指引:
- 提供清除、易於區分的訂閱選項:: 使用短、精簡、易於自我解釋的名稱來區分訂閱選項與其他訂閱選項。在體驗商品化時,指定每個選項的價格和期限。
- 在平台和裝置上提供相同的好處:: 無論在哪裡購買訂閱,都要確保使用者獲得相同的訂閱計畫好處。
- 設計訂閱以配合各自和整體體驗提供: 將相同套件的好處分為"銅"、"銀"和"金"層級,如提供互相獨立的"銅"、"銀"和"金"層級,目前無法使用。確保訂閱代表不同的利益集合。
- 為訂閱期全部提供獎勵:: 一旦訂閱服務生已發布,請遵守已描述的獎勵,並不要在幕後取消獎勵。
- 不要將使用者導向到另一個平台上購買(例如體驗中的手機、網頁等.): 雖然您可以與平台外的用戶通訊,使用 Roblox 應用程式將用戶導向到另一個地方購買是被禁止的。
- 一旦使用者付付費,不要因額外需求而取消訂閱門戶功能: 要求使用者執行額外任務,例如發布到社交媒體,以獲得他們付過的福利的存取權是被禁止的。這個指引並不會影響戰鬥通行證,您可以創建和市場作為訂閱購買的通行證。
建立訂閱
在您創建訂閱之前,您必須是電話或ID驗證。要創建訂閱:
在 創作者面板 導航到您的體驗,然後選擇 盈利產品 > 訂閱 。然後單擊 創建訂閱 。
為您的訂閱上傳封面圖像。圖像在審核後對其他人可見。
創建獨特的 訂閱名稱 。體驗中的兩個訂閱不能共享相同的名稱。此訂閱名稱會出現在你的收費聲明中,旁邊是簡短版本的體驗名稱。允許的字符是 a-z、A-Z、0-9、空格和 .,:/!?@#&' 。
寫一個 說明 您的訂閱的內容。這是用戶在決定購買您的訂閱時看到的內容。您的描述必須清楚描述您的訂閱服務提供哪些好處。說明限制為 1,000 個字符,並支持表情符號。一旦您啟用訂閱,您無法減少其好處。
選擇訂閱 產品類型 。有三種產品類型:
- 耐用: 使用或取得後仍存在的永久物品,例如物理物品,如武器。如果訂閱包含不同類型的商品,其中一個或多個是可持續的,例如帶有劍和藥水的價值包,請選擇 可持續 作為其產品輸入。
- 消耗品:: 可暫時重複購買的物品,例如消耗性藥水,可提供暫時提升,隨著時間過去而失效。
- 貨幣:: 任何用戶可以使用的交換媒介,用於在體驗中購買物品。
選擇您的訂閱的 價格 (以美元計)。您依據網站價格獲得 Robux。移動應用訂閱者需支付更高的價格。訂閱者以當地貨幣支付費用。
持續頻率 是用戶每次被訂閱的頻率。目前,此值總是每月。點擊 創建訂閱 。
檢查詳情,然後單擊 創建 。
啟用訂閱功能
一旦訂閱準備好發售,點擊 ⋯ 在訂閱瓷磚右上角,然後選擇 啟用 。已啟用的訂閱可在 體驗詳情 頁面和體驗本身中出售。

在第一次啟用訂閱之前,您必須確認簡化版本的體驗名稱。縮短的體驗名稱會顯示給用戶當他們訂閱時,與你在 創建訂閱 中創建的訂閱名稱一起出現。它也可以在 Roblox 和應用商店設定中管理訂閱。
編輯訂閱
您可以在啟用和停用訂閱之間擁有最多 50 個訂閱體驗。若要編輯訂閱,請前往創作者面板,選擇 營收產品 > 訂閱 。
您可以編輯訂閱的圖像、說明或狀態。如果您想編輯這些屬性以上的內容,您需要刪除並重新創建具有所需變更的訂閱。
變更圖像
要更新訂閱的圖像:
選擇訂閱後,點擊 變更 按鈕。
選擇新圖像,然後單擊 儲存 和 儲存變更 。新圖像會在通過審核後生效。
變更說明
要變更訂閱的說明:
- 選擇訂閱後,點擊 說明 欄位。
- 編輯說明,然後點擊 儲存變更 。說明的字數上限為 1,000 個字符,並且可以支持表情符號。
- 在確認窗口點擊 是,確認 即可確認變更。說明更新將立即反映。
變更狀態
訂閱有兩種可能狀態:
- 啟用 — 啟用訂閱可供待買賣,訂閱者可以在下一個期間開始時續訂訂閱。
- 非作用中 — 非作用中的訂閱無法待買賣。
要變更訂閱狀態:
- 在訂閱頁面上,點擊 ⋯ 在訂閱瓷磚塊的右上角。無論是 啟用 或 停止銷售 顯示,取決於目前狀態的訂閱,以及一些其他選項。
- 選擇 啟用 或 停止銷售 來翻轉訂閱狀態。
- 如果您選擇 停止銷售 ,您將被提供允許現有訂閱者續訂或取消未來續訂對現有訂閱者的選擇。一般來說,建議允許現有訂閱者續訂,除非您正在計劃永久從體驗中移除相關訂閱優惠。
將訂閱整合到體驗中
這個代碼示例是在體驗中實現訂閱偵測的簡單示例:
-- 在伺服器上執行此代碼
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local SUBSCRIPTION_ID = "EXP-11111111" -- 以您的訂閱者ID取代
local function grantAward(player: Player)
-- 您應在此授予與訂閱相關的獎項
end
local function revokeAwardIfGranted(player: Player)
-- 這個方法被稱為每個玩家,如果他沒有訂閱_not_
-- 如果您的代碼儲存到數據儲存或提供一些需要「取消」的好處
-- 您應該使用此方法來處理撤消
end
local function checkSubStatus(player)
local success, response = pcall(function()
return MarketplaceService:GetUserSubscriptionStatusAsync(player, SUBSCRIPTION_ID)
end)
if not success then
warn(`Error while checking if player has subscription: {response}`)
return
end
if response.IsSubscribed then
grantAward(player)
else
revokeAwardIfGranted(player)
end
end
local function onUserSubscriptionStatusChanged(player: Player, subscriptionId: string)
if subscriptionId == SUBSCRIPTION_ID then
checkSubStatus(player)
end
end
Players.PlayerAdded:Connect(checkSubStatus)
Players.UserSubscriptionStatusChanged:Connect(onUserSubscriptionStatusChanged)
以訂閱取代遊戲通行證
在您的體驗中部署訂閱的一個選擇是,將現有的遊戲通行證替換為訂閱。這是一個很好的選擇,如果你想快速在體驗中實現訂閱,而不需要新增功能或獎項。
當將遊戲通行證替換為訂閱時,有兩個重要考慮因素:
- 現有的遊戲通行證持有者應繼續收到他們支付的好處。
- 遊戲通行證應該下架銷售,以便新用戶可以直接購買訂閱。
- 訂閱可以被取消,這意味著如果您之前的遊戲通行證保留了其好處到數據商店 商家存中,您需要「撤銷」這些好處。這個考慮不適用於所有遊戲通行證實現,但可能適用於更複雜的實現。
以下代碼示例顯示如何用訂閱替換遊戲通行證:
-- 在伺服器上執行此代碼
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local LEGACY_GAME_PASS_ID = 1234 -- 以取代游戏通行证的订阅ID替换
local SUBSCRIPTION_ID = "EXP-11111111" -- 以您的訂閱者ID取代
local function awardBenefit(player: Player)
-- 你應該在這裡授予訂閱權
end
local function revokeBenefitIfGranted(player: Player)
-- 這個方法被稱為每個玩家,如果他沒有訂閱_not_
-- 如果您的代碼儲存到數據儲存或提供一些需要「取消」的好處
-- 您應該使用此方法來處理撤消
end
local function checkSubscriptionStatus(player: Player)
local success, result = pcall(function()
return MarketplaceService:GetUserSubscriptionStatusAsync(player, SUBSCRIPTION_ID)
end)
if not success then
print(`Error fetching subscription status: {result}`)
return
end
if result.IsSubscribed then
awardBenefit(player)
else
revokeBenefitIfGranted(player)
end
end
local function onPlayerAdded(player: Player)
local success, result = pcall(function()
return MarketplaceService:UserOwnsGamePassAsync(player.UserId, LEGACY_GAME_PASS_ID)
end)
if not success then
print(`Error fetching game pass status: {result}`)
return
end
if result then
-- 如果玩家購買了舊版遊戲通行證,我們不需要查找他們的訂閱狀態
-- 因為他們有終生獲得的好處
awardBenefit(player)
return
end
checkSubscriptionStatus(player)
end
local function onUserSubscriptionStatusChanged(player: Player, subscriptionId: string)
if subscriptionId == SUBSCRIPTION_ID then
checkSubscriptionStatus(player)
end
end
local function onPromptGamePassPurchaseFinished(player: Player, purchasedPassID: number, purchaseSuccess: boolean)
if purchaseSuccess and purchasedPassID == LEGACY_GAME_PASS_ID then
awardBenefit(player)
end
end
Players.PlayerAdded:Connect(onPlayerAdded)
Players.UserSubscriptionStatusChanged:Connect(onUserSubscriptionStatusChanged)
-- 我們將繼續聆聽遊戲通行證購買,以防遊戲通行證仍然在銷買賣中
MarketplaceService.PromptGamePassPurchaseFinished:Connect(onPromptGamePassPurchaseFinished)
快速訂閱購買
雖然使用者可以直接從體驗的 遊戲詳情 頁面購買訂閱,但您也應該添加一種方法來在遊戲中購買訂閱。
當您要求訂閱購買時,Players.UserSubscriptionStatusChanged會發生,如果玩家已經擁有訂閱,這有助於捕捉玩家從 遊戲詳情頁 購買訂閱的情況,當他們已經在遊戲中時。
雖然您可以從客戶伺服器提示訂閱購買,但必須從服務器上檢查用戶是否已經擁有訂閱MarketplaceService.GetUserSubscriptionStatusAsync。
這個例子創建了一個 RemoteFunction 客戶可以使用來請求訂閱狀態的:
--此代碼應在伺服器上運行
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- 創建一個遠端功能,客戶可以使用來請求訂閱狀態的功能
local getSubscriptionStatusRemote = Instance.new("RemoteFunction")
getSubscriptionStatusRemote.Name = "GetSubscriptionStatus"
getSubscriptionStatusRemote.Parent = ReplicatedStorage
getSubscriptionStatusRemote.OnServerInvoke = function(player: Player, subscriptionId: string)
assert(typeof(subscriptionId) == "string")
return MarketplaceService:GetUserSubscriptionStatusAsync(player, subscriptionId)
end
-- 此代碼應在客戶端執行
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local SUBSCRIPTION_ID = "EXP-11111111" -- 以您的訂閱者ID取代
local getSubscriptionStatusRemote = ReplicatedStorage:WaitForChild("GetSubscriptionStatus")
local purchaseSubscriptionButton = script.Parent.PromptPurchaseSubscription -- 替換為您的按鈕
local function playerHasSubscription()
-- 注意,如果您的訂閱正在替換遊戲通行特權證,您也需要檢查是否這裡也擁有遊戲通行證
local success, result = pcall(function()
return getSubscriptionStatusRemote:InvokeServer(SUBSCRIPTION_ID)
end)
if not success then
print(`Error fetching subscription status: {result}`)
return
end
return result.IsSubscribed
end
-- 如果玩家已經擁有訂閱,就隱藏按鈕
local function hideButtonIfPlayerHasSubscription()
if playerHasSubscription() then
purchaseSubscriptionButton.Visible = false
end
end
local function onPromptSubscriptionPurchaseFinished(player: Player, subscriptionId: string, didTryPurchasing: boolean)
if didTryPurchasing then
-- 訂閱登記可能需要一段時間,因此我們會檢查是否在 10 秒內完成購買
-- 並隱藏按鈕,如果它有
task.delay(10, hideButtonIfPlayerHasSubscription)
end
end
-- 如果玩家已經擁有訂閱,我們就不想顯示按鈕
hideButtonIfPlayerHasSubscription()
purchaseSubscriptionButton.Activated:Connect(function()
MarketplaceService:PromptSubscriptionPurchase(Players.LocalPlayer, SUBSCRIPTION_ID)
-- 如果玩家已經擁有訂閱,則隱藏按鈕
hideButtonIfPlayerHasSubscription()
end)
MarketplaceService.PromptSubscriptionPurchaseFinished:Connect(onPromptSubscriptionPurchaseFinished)
其他相關功能
其他相關功能可在 MarketplaceService 中使用:
透過訂閱獲得收入
訂閱以本地貨幣價格,但你會在平台費用後,根據你選擇的基礎平台價格賺取 Robux 的速率為 0.01 美元到 1 Robux。Roblox 只在第一個月收取 30% 平台費,這意味著你從第二個月開始就能收到完整的訂閱收入。這個收入分配是在所有平台上一致的。
例如,如果使用者以基本價格 $9.99 (桌面) 或 $12.99 (手機) 訂閱:
- 第一個月: 訂閱創建者收到999 * .7 = 699或1299 * .7 = 909。
- 第二個月起: 訂閱的創建者收到 999 = 999 或 1299 = 1299 (移動)。
收入將受到 30 天的暫停,並將在續訂期限結束後添加到您的 Robux 餘額中。如果使用者在月度暫停期間通過銀行或應用商店請求退款以取消訂閱,暫停期將被取消,您將無法收到該交易的付款。
在暫停窗口之外收到的退款將導致退款交易的付款金額從您的 Robux 餘額中扣除。如果您的體驗屬於一個群組,且該群組的餘額小於要扣除的金額,剩餘金額將從群組所有者的 Robux 餘額中扣除。
使用者取消已啟用的訂閱並未能及時續訂會導致退款失敗。使用者必須手動請求退款,這些退款將依個案處理。有關使用者訂閱退款過程的更多資訊,請查看幫助中心。
訂閱付款
付款發現在 Robux 餘額 > 我的交易 :

訂閱 和 群組訂閱 付款出現在 收入 Robux 下,而退款則被集中在 出去 Robux 下作為 付款撤回 。訂閱和群組訂閱子頁面提供各自類別的額外資訊。

要查看個別使用者的退款資訊,請使用 MarketplaceService:GetUserSubscriptionPaymentHistoryAsync() 。
訂閱分析
訂閱分析 幫助您測量個人訂閱的成功,識別趨勢,並預測未來的潛在收入。在啟用後的第一次後,訂閱將被添加到訂閱分析頁面,並在停用或刪除時不會被移除。您可以通過創作者後台存取預製分析,或使用網絡鉤在實時模式下捕捉訂閱更新。
透過創作者後台
要在創作者後台上存取訂閱分析:
在 創作者面板 上導航到你的 創作頁面 並選擇你的體驗。
導航到 盈利 標籤,然後選擇 訂閱 。
訂閱分析跟蹤以下指標:
- 訂閱: 您體驗中的總訂閱數量。
- 預估收入: 經費後體驗所獲得的淨收入。不包含退款資訊。
- 訂閱者分布: 不同類型的訂閱者。
- 新 : 首次訂閱者購買訂閱數量。
- 已續訂 : 在以前期間購買的續訂訂閱數量。
- 復活 : 由以前取消訂閱的使用者購買的新訂閱數量。
- 取消 : 未續訂的訂閱數量。這包括所有取消,無論是使用者取消、創作者停用訂閱或其他手段取消。
- 取消與退款不同。取消訂閱是不再續訂但仍全額支付剩餘訂購周期費用的訂閱,而退款將將支付的訂閱金額返回給用戶。
- 平台的訂閱數量 : 每個平台購買的訂閱數量。
- 平台收入 :每個平台購買的訂閱收入的淨收入。
這些資訊可以在 趨勢 標籤下的日期範圍基礎上顯示為圖表,以及在 歷史 標籤下的完整訂閱列表。

通過網路鉤子
雲端 API 網關功能包括四個訂閱事件的觸發器:取消、已購買、已退款和已續訂。這些通知會立即發射,因此您可以在實時回應或創建自己的自訂分析。要了解有關如何設置網絡通道的更多信息,請參閱網絡通知。