訂閱 內的體驗讓您可以為用戶提供定期優惠,以月費。與 通行證 類似,訂閱和通行證的主要區別是,通行證的福利是永久的,而通行證的福利是條件付款。在 Roblox 上,訂閱有以下特徵:
- 自動重新購買: 訂閱是自動重新購買,不是一次性購買,並且以本地貨幣價格。
- Robux 支付: 您在 Robux 上收到訂閱收入。For more details, see 使用訂閱獲得。
- 單一層級: 所有體驗內的訂閱可以由用戶同時擁有。不支持互相獨立的訂閱。
用戶可以在桌上應用程式或網站上購買訂閱,使用 Roblox 禮券積分或信用點數卡,或通過 Apple 和 Google 商店中的付款方式來管理和查看他們的訂閱購買。用戶可以在 Roblox 帳戶設定中查看和管理他們的訂閱購買。
訂閱將在未來滾出到更多區域。 不可用區域包括: 阿根廷、哥倫比亞、印度、印度尼西亞、日本、俄羅斯、台灣、土耳其、烏克蘭、烏克蘭、烏克蘭、烏克蘭、烏克蘭、烏克蘭、烏克蘭、烏克蘭、烏克蘭、烏克蘭、烏克蘭、烏克蘭、烏克蘭、烏克蘭、烏克蘭、烏克蘭、烏
訂閱指南
在創建您的訂閱前,確認它們與 Roblox 的使用條款 一致,並且遵守本地法律。任何涉及騙局、試圖欺騙用戶、或者違反我們的 社區標準 的體驗將被撤下。 另外,請確保您的訂閱遵守以下指引:
- 提供清清除、區別明確的訂閱選項: 使用短、成り立即的和自我解釋的名稱來區別訂閱選項之間。 指定價格和持續時間對於每個選項當購物體驗。
- 在平台和裝置上提供相同的優惠: 無論訂閱是否從特定的訂閱計劃購買,確保用戶在任何給定的訂閱計劃中獲得相同的優惠。
- 設計訂閱以適合彼此和整體體驗: 提供「青銅」、「銀色」和「黃金」等層級,這些層級相互獨立,目前無法使用。請確保訂閱代表不同的套件獎勵。
- 提供訂閱期的完整福利: 一旦訂閱期開已發布,請尊重已述賞品,並且不要在場景後取消福利。
- 不要將用戶指向在其他平台(例如移動、網頁等)購買體驗: 雖然您可以自由與用戶通訊,但使用 Roblox 應用程序指向用戶在其他平台購買是禁止的。
- 不要因為用戶付付費時再次提供門票優惠而限制用戶的福利: 要求用戶執行額外的任務,例如發布到社交媒體,以獲得付款的權利。這個指南線條不適用於購買訂閱。 這個指南線條不適用於購買訂閱。
創建訂閱
在您創建訂閱前,您必須是電話或身份確認文件。 要創建訂閱:
在 創作者面板 中導航至您的體驗,然後選擇 金錢化產品 > 訂閱 。然後按一下 1>創建訂閱1>。
為您的訂閱上傳一張封面圖像。圖像在審核後對其他人可見。
創建一個獨一無二的 訂閱名稱 。在體驗中,不能有兩個訂閱者使用相同的名稱。此訂閱名稱會在帳單狀態欄中顯示一個簡短版本的您的體驗名稱。允許的角色是 a-z、A-Z、0-9、空格和 .,:/!?#'/&'/'/
寫下您的訂閱 說明 。這是用戶在決定購買您的訂閱時所看到的內容。您的說明必須清楚地描述您的訂閱提供的好處。說明是以 1,000 個字元為限,並且支持 emoji。一旦您啟用訂閱,您就無法減少它的好處。
選擇訂閱 產品類型 。有三種產品類型:
- 耐久: 永久物品,例如武器。如果訂閱包含一組不同類型的產品,其中一個或多個為耐久,例如劍和藥水,請選擇 耐久 作為其產品輸入。
- 消耗品: 暫時重新購買物品,這些物品在使用或獲得後會過期,例如可以提供暫時強化效果的消耗品,例如可以過期的消耗品。
- 貨幣: 任何可以用於體驗中購買物品的中間交換方式。
選擇您的訂閱價格(以USD計價)。您以Robux價格購買網站服務(以USD計價)。移動應用程序訂閱者以USD價格購買。訂閱者以本地貨幣價格購買。
重複速度是用戶訂閱的費用。目前,此值是每月的。點擊 創建訂閱 。
雙重檢查細節,然後按一下 建立。
啟用訂閱
訂閱準備好上架時,請單擊 ⋯ 在訂閱頁面的右上角,然後選擇 啟用 。啟用的訂閱會在 體驗細節 頁面和體驗本身中可購買。
在第一次啟用您的訂閱時,您必須確認您的體驗名稱的簡縮版本。這個簡縮版本的體驗名稱會顯示在用戶訂閱時,並且在創建訂閱中創建的訂閱名稱旁邊顯示。它也會在 Roblox 和 App Store 設定中管理訂閱。
編輯訂閱
您可以在啟用和關閉子訂閱體驗之間擁有最多 50 個訂閱。要編輯訂閱,請前往您的體驗在 創作者面板 中,然後選擇 產品化產品 > 訂閱 。
您可以編輯訂閱者的圖像、說明或狀態。如果您想要編輯這些屬性以上,您需要先刪除並重新創建訂閱者。
變更圖像
要更新訂閱者的圖像:
選擇訂閱後,按一下 變更 按鈕。
選擇新圖像,然後按一下 儲存 ,然後 儲存變更。新圖像會在通過審核後上線。
變更說明
要變更訂閱者的說明:
- 選擇訂閱時,點擊 說明 字段。
- 編輯說明,然後按一下 儲存變更。說明最多為 1,000 個字元,可以支援 emoji。
- 確認變更,點擊確認窗口上的 是,確認 按鈕。描述更新將立即反饋。
變更狀態
訂閱有兩種可能的狀態:
- 有效 — 有效訂閱可以在開始下一個期間時重新購待售。
- 無效 — 無效的訂閱不可用買賣。
要變更訂閱狀態:
- 在訂閱頁面上,單擊 ⋯ 在訂閱瓦盤的右上角。 要么 啟用 要么 關閉銷售 顯示,這取決於訂閱瓦盤的當前狀態,並且與一些其他選項一起提供。
- 選擇 啟用 或 取下銷售 來翻轉訂閱狀態。
- 如果您選擇 從銷售中取消 ,您將被提供允許現有訂閱者重新續訂或取消未來的重新購買為現有訂閱者。 一般來說,建議您允許現有訂閱者重新購買,除非您正在計劃永久從您的體驗移除儲存的訂閱者。
將訂閱結合到體驗中
此代碼示例是一個簡單的示例,如何在您的體驗中實現訂閱偵測:
-- 在服務伺服器上執行此代碼
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。Roblox 在 30% 的平台費中獲取 1 Robux,這表示您從第二個月開始獲得全部訂閱收入。這種收入分配是在所有平台上一致的。
舉例來說,如果使用者以原價 US$ 9.99 (桌面) 或 $12.99 (移動) 訂購時:
- 第一個月: 創作者訂閱會收到 999 * .7 = 699 (桌面) 或 1299 * .7 = 909 (移動)。
- 第二個月開始: 創作者訂閱會收到 999 = 999 (桌面) 或 1299 = 1299 (移動)。
積分會在訂閱期結束後的30天內被保留,並在用戶要求退款的時候,用戶將在 Robux 餘額中減去積分,而不會收到該交易的付款。如果用戶在訂閱期內通過銀行或應用商店提出退款請求,積分將被取消,並且你將不會收到該交易的付款。
在持有窗口外收到的退款將結果為您所退回的交易金額的付款。如果您的體驗屬於群組,群組的餘額少於退款金額,剩餘金額將從群組所有者的 Robux 餘額中減去。
使用者取消已訂閱的訂閱,並且無法重新訂閱它們,不會自動導致退款。用戶必須手動要求退款,這是由案件對案件進行處理。有關用戶訂閱退款程序的更多資訊,請查看協助中心。
訂閱結算
Robux Balance > 我的交易 中找到Robux:
訂閱 和 群組訂閱 的付款會在 收入 Robux 中,而0>退款0>會在3>出去3> Robux 中作為 3>付款重新 3>。 訂閱和群組訂閱頁面為各自的類別提供額外信息。
要檢視個別用戶的退款資訊,請使用 MarketplaceService:GetUserSubscriptionPaymentHistoryAsync()。
訂閱分析
訂閱分析 可以幫助您評估個人訂閱的成功,識別趨勢,並預測未來的潛在收益。訂閱會在啟用時首次添加到訂閱分析頁面,並且在停用時不會移除。您可以通過創作者後台檢視預製分析,或者使用 webhook 在實時時間後傳輸�
通過創作者後台
要在創作者控制板上使用訂閱分析:
前往 創作者面板 頁面,選擇您的體驗。
導航到 金錢化 標籤,然後選擇 訂閱 。
訂閱分析追蹤以下指標:
- 訂閱: 總是您體驗中的訂閱總數。
- 預估收入: 體驗費後獲得的凈收入。 不包括退款資訊。
- 訂閱者斷線: 不同類型的訂閱者。
- 新增 : 首次訂閱者的訂閱次數。
- 已更新 : 在較早期購買的訂閱期數量。
- 復活了 : 用戶先前取消的訂閱者購買的新訂閱數量。
- 取消子訂閱 : 不會更新的訂閱次數。這包括所有取消子訂閱的次數,無論是由使用者取消、創作者的訂閱創建或其他方式。
- 取消是與退款不同的。取消的訂閱是訂閱期未重新更新但仍然付款的訂閱,而退款會將付款的訂閱費用返回給用戶。
- 按平台購買訂閱 : 按平台購買的訂閱數量。
- 平台盈利 : 通過每個平台購買訂閱獲得的盈利。
此資訊以 趨勢 標籤下方的日期範圍和全面清單的總訂閱提供為基礎,以及 歷史 標籤下的眾多總訂閱。
通過 Webhook
雲端 API 網路連接器功能包括四個訂閱事件的觸發程式碼:取消、購買、退款和續購。這些通知會立即發生,因此您可以在實時時間內回應或創建自訂分析。有關設定網路連接器的更多資訊,請參閱網路連接器通知。