As assinaturas dentro das experiências permitem que você ofereça benefícios recorrentes aos usuários por uma taxa mensal. Semelhante aos Passes, a principal diferença entre assinaturas e passes é que os benefícios de um passe são concedidos em perpetuidade, enquanto os benefícios de uma assinatura dependem do usuário pagar uma taxa mensal. As assinaturas no Roblox têm as seguintes características:
- Renovação automática: As assinaturas são renovadas automaticamente, não são compras únicas, e têm preço em moeda local.
- Pagamento de Robux: Você recebe receita de assinatura em Robux. Para mais detalhes, consulte Ganhando com Assinaturas.
- Única camada: Todas as assinaturas dentro de uma experiência podem ser possuídas por usuários simultaneamente. Assinaturas mutuamente exclusivas não são suportadas.
Os usuários podem comprar assinaturas no aplicativo de desktop ou no site usando um cartão presentede crédito ou débito e através de métodos de pagamento nas lojas da Apple e do Google em regiões qualificadas. Os usuários podem visualizar e gerenciar suas compras de assinatura na guia Assinaturas nas configurações da conta do Roblox.
As assinaturas serão lançadas em mais regiões no futuro. Regiões indisponíveis incluem: Argentina, Colômbia, Índia, Indonésia, Japão, Rússia, Taiwan, Türkiye (Turquia), Emirados Árabes Unidos, Ucrânia e Vietnã.
Diretrizes de Assinatura
Antes de criar suas assinaturas, certifique-se de que estejam em conformidade com os Termos de Uso do Roblox e com as leis locais. Qualquer experiência que envolva golpes, tentativas de enganar usuários com ofertas falsas ou viole nossos Padrões da Comunidade será removida. Além disso, certifique-se de que suas assinaturas sigam as seguintes diretrizes:
- Forneça opções de assinatura limpare distinguíveis: Use nomes breves, sucintos e auto-explicativos que diferenciem as opções de assinatura umas das outras. Especifique o preço e a duração de cada opção ao vender na experiência.
- Ofereça os mesmos benefícios em todas as plataformas e dispositivos: Independentemente de onde a assinatura foi comprada, certifique-se de que o usuário receba os mesmos benefícios para qualquer plano de assinatura.
- Crie assinaturas para se adequarem às ofertas de experiência geral: A classificação do mesmo conjunto de benefícios, como oferecer níveis "Bronze," "Silver" e "Gold" que são mutuamente exclusivos, não está atualmente disponível. Certifique-se de que as assinaturas representem conjuntos distintos de benefícios.
- Ofereça os benefícios pelo período completo da assinatura: Uma vez que uma oferta de assinatura estiver publicado/ao vivo, honre os benefícios descritos e não revogue os benefícios nos bastidores.
- Não direcione os usuários para comprar em outra plataforma (por exemplo, celular, web, etc.) na experiência: Enquanto você está livre para se comunicar com os usuários fora da plataforma, o uso do aplicativo Roblox para direcionar os usuários para comprar em outro lugar é proibido.
- Não limite os benefícios da assinatura por requisitos adicionais uma vez que um usuário tenha pago: É proibido exigir que um usuário realize tarefas adicionais, como postar nas mídias sociais, para obter acesso aos benefícios que pagou. Esta diretriz não afeta os passes de batalha, que você pode criar e comercializar como uma comprarde assinatura.
Criando Assinaturas
Antes de poder criar uma assinatura, você deve ser telefone ou ID verificado . Para criar uma assinatura:
Navegue até sua experiência no Painel do Criador e selecione Produtos de Monetização > Assinaturas . Em seguida, clique em Criar Uma Assinatura .
Carregue uma imagem de capa para sua assinatura. A imagem é visível para os outros após a moderação.
Crie um único Nome de Assinatura . Nenhuma assinatura dentro de uma experiência pode compartilhar o mesmo nome. Este nome de assinatura aparece ao lado de uma versão abreviada do nome da sua experiência nas declarações de faturamento. Os caracteres permitidos são a-z, A-Z, 0-9, espaços e .,:/!?@#&' .
Escreva uma Descrição da sua assinatura. Isso é o que os usuários vêem quando decidem comprar sua assinatura. Sua descrição deve descrever claramente quais benefícios sua assinatura oferece. As descrições são limitadas a 1.000 caracteres e suportam emojis. Depois de ativar uma assinatura, você não pode reduzir seus benefícios.
Selecione a assinatura Tipo de produto . Existem três tipos de produto:
- Durável: Itens permanentes que persistem após o uso ou aquisição, como itens físicos como armas. Se uma assinatura incluir um pacote de diferentes tipos de bens, com um ou mais deles duráveis, como um pacote de valor com uma espada e uma poção, escolha Durável como seu digitarde produto.
- Consumíveis: Itens temporariamente reutilizáveis que expiram após o uso ou aquisição, como poções consumíveis que concedem boosts temporários que expiram ao longo do tempo.
- Moeda: Qualquer meio de troca que os usuários possam usar para comprar itens dentro de sua experiência.
Selecione o Preço da sua assinatura (em USD). Você ganha Robux com base no preço da web. Os assinantes do aplicativo móvel são cobrados a um preço mais alto. Os assinantes são cobrados em sua moeda local.
O Recurring Cadence é a frequência com que o usuário é cobrado pela assinatura. Atualmente, esse valor é sempre mensal / mensalmente. Clique em Create Subscription .
Verifique novamente os detalhes e clique em Criar .
Ativando Assinaturas
Quando uma assinatura estiver pronta para entrar em venda, clique em **** no canto superior direito do bloco de assinatura e selecione Ativar . As assinaturas ativadas estão disponíveis para venda na página Detalhes da experiência e dentro da própria experiência.
Antes de ativar sua assinatura pela primeira vez, você deve confirmar uma versão abreviada do nome da sua experiência. Este nome de experiência abreviada é exibido ao usuário quando ele assinar/assinatura, aparecendo ao lado do nome da assinatura que você criou em Criando Assinaturas. Também é visível ao gerenciar assinaturas nas configurações do Roblox e da App Store.
Editando Assinaturas
Você pode ter até 50 assinaturas por experiência entre assinaturas ativas e inativas. Para editar assinaturas, navegue até sua experiência no Creator Dashboard e selecione Monetization Products > Subscriptions .
Você pode editar a imagem, descrição ou status de uma assinatura. Se você quiser editar mais do que essas propriedades, você precisa excluir e recriar as assinaturas com as alterações desejadas.
Mudando de imagem
Para atualizar a imagem de uma assinatura:
Com a assinatura selecionada, clique no botão Alterar .
Escolha uma nova imagem e clique em Salvar , então Salvar Alterações . A nova imagem vai ao vivo após passar com sucesso a moderação.
Mudando Descrição
Para alterar a descrição de uma assinatura:
- Com a assinatura selecionada, clique no campo Descrição .
- Edite a descrição e clique em Salvar Mudanças . As descrições são limitadas a 1.000 caracteres e podem suportar emojis.
- Confirme as alterações clicando Sim, Confirme na janela de confirmação. As atualizações de descrição são refletidas imediatamente.
Mudança de Estado
As assinaturas têm dois estados possíveis:
- Active As assinaturas ativas estão disponíveis à promoção/venda, com assinantes capazes de renovar sua assinatura no início do próximo período.
- Inativa As assinaturas inativas não estão disponíveis à promoção/venda.
Para alterar o estado de uma assinatura:
- Na página de Assinaturas, clique em **** no canto superior direito do ladrilho da assinatura. O Ativar ou o Take Off Sale são exibidos, dependendo do estado atual da assinatura, ao lado de algumas outras opções.
- Selecione Ativar ou Decolar Venda para reverter o estado da assinatura.
- Se você selecionar Take Off Sale , você receberá a opção de permitir que assinantes existentes renovarou cancelar renovações futuras para assinantes atuais. Em geral, é aconselhável permitir que assinantes existentes renovem, a menos que você esteja planejando remover permanentemente os benefícios de assinatura associados da sua experiência.
Integrando Assinaturas em uma Experiência
Este exemplo de código é um exemplo simples de como implementar a detecção de assinatura em sua experiência:
-- Corra este código no servidor
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local SUBSCRIPTION_ID = "EXP-11111111" -- Substitua com o seu ID de assinatura
local function grantAward(player: Player)
-- Você deve conceder o prêmio associado à assinatura aqui
end
local function revokeAwardIfGranted(player: Player)
-- Este método é chamado para todos os jogadores que _não_ tem a assinatura
-- Se o seu código salvar assinaturas de Armazéns de Dados ou fornecer algum benefício que precise ser 'revogado'
-- você deve usar este método para lidar com a revogação
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)
Substituindo um Passe de Jogo por uma Assinatura
Uma opção para implantar assinaturas em sua experiência é substituir um Passe de Jogo existente por uma assinatura. Essa é uma ótima opção se você quiser implementar assinaturas rapidamente em sua experiência sem adicionar novas características ou prêmios.
Existem duas considerações importantes ao substituir um Passe de Jogo por uma assinatura:
- Qualquer detentor existente do Passe de Jogo deve continuar a receber o benefício que pagou.
- O Passe de Jogo deve ser retirado da venda para que novos usuários possam comprar a assinatura em vez disso.
- As assinaturas podem ser revogadas, o que significa que se o seu Passe de Jogo anteriormente persistir em seus benefícios para um lojade dados, você precisa "cancelar" esses benefícios. Essa consideração não se aplica a todas as implementações do Passe de Jogo, mas pode se aplicar a implementações mais complexas.
O código a seguir mostra como substituir um Passe de Jogo por uma assinatura:
-- Corra este código no servidor
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local LEGACY_GAME_PASS_ID = 1234 -- Substituir com o ID do passe de jogo sendo substituído por uma assinatura
local SUBSCRIPTION_ID = "EXP-11111111" -- Substitua com o seu ID de assinatura
local function awardBenefit(player: Player)
-- Você deve atribuir a assinatura aqui
end
local function revokeBenefitIfGranted(player: Player)
-- Este método é chamado para todos os jogadores que _não_ tem a assinatura
-- Se o seu código salvar assinaturas de Armazéns de Dados ou fornecer algum benefício que precise ser 'revogado'
-- você deve usar este método para lidar com a revogação
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
-- Se o jogador comprou o passe de jogo legado, não precisamos verificar o status de assinatura dele
-- como eles têm o benefício concedido para a vida
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)
-- Continuaremos ouvindo sobre compras de passe no jogo caso o passe ainda esteja à promoção/venda
MarketplaceService.PromptGamePassPurchaseFinished:Connect(onPromptGamePassPurchaseFinished)
Solicitando Compras de Assinatura
Embora os usuários possam comprar assinaturas diretamente na página de Detalhes do Jogo de uma experiência, você também deve adicionar uma maneira de comprar uma assinatura no jogo.
Quando você solicita uma comprarde assinatura, Players.UserSubscriptionStatusChanged dispara se o jogador já possui a assinatura, o que ajuda a capturar cenários em que um jogador compra uma assinatura na página Detalhes do Jogo enquanto eles já estão no jogo.
Embora você possa solicitar uma compra de assinatura do cliente, verificar se um usuário já tem uma assinatura via MarketplaceService.GetUserSubscriptionStatusAsync deve ser feito a partir do servidor.
Este exemplo cria um RemoteFunction que o cliente pode usar para solicitar o status de uma assinatura:
--Este código deve funcionar no servidor
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Crie uma Função Remota que o cliente possa usar para solicitar o status da assinatura
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
-- Este código deve ser rodado no cliente
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local SUBSCRIPTION_ID = "EXP-11111111" -- Substitua com o seu ID de assinatura
local getSubscriptionStatusRemote = ReplicatedStorage:WaitForChild("GetSubscriptionStatus")
local purchaseSubscriptionButton = script.Parent.PromptPurchaseSubscription -- Substitua com o seu botão
local function playerHasSubscription()
-- Observe se sua assinatura está substituindo um passe de jogo, você precisará verificar se o passe de jogo também é possuído aqui
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
-- Esconda o botão se o jogador já tiver a assinatura
local function hideButtonIfPlayerHasSubscription()
if playerHasSubscription() then
purchaseSubscriptionButton.Visible = false
end
end
local function onPromptSubscriptionPurchaseFinished(player: Player, subscriptionId: string, didTryPurchasing: boolean)
if didTryPurchasing then
-- Pode demorar um pouco para que a assinatura seja registrada, então verificaremos se a compra foi feita em 10 segundos
-- e esconda o botão se tiver
task.delay(10, hideButtonIfPlayerHasSubscription)
end
end
-- Se o jogador já tem a assinatura, não queremos mostrar o todas / todos
hideButtonIfPlayerHasSubscription()
purchaseSubscriptionButton.Activated:Connect(function()
MarketplaceService:PromptSubscriptionPurchase(Players.LocalPlayer, SUBSCRIPTION_ID)
-- Se o jogador já tiver a assinatura, esconda o botão
hideButtonIfPlayerHasSubscription()
end)
MarketplaceService.PromptSubscriptionPurchaseFinished:Connect(onPromptSubscriptionPurchaseFinished)
Outras funções relevantes
Outras funções relevantes estão disponíveis em MarketplaceService :
Ganhando com Assinaturas
As assinaturas são cobradas em moeda local, mas você ganha Robux a uma taxa de US $ 0,01 a 1 Robux de acordo com o preço da plataforma base que você selecionou para a assinatura após as taxas da plataforma. A Roblox cobra uma taxa de 30% da plataforma apenas pelo primeiro mês, o que significa que você recebe a receita total da assinatura a partir do segundo mês em diante. Essa divisão de receita é consistente em todas as plataformas.
Por exemplo, se um usuário se inscreve no preço base de US $ 9,99 (Área de trabalho) ou $ 12,99 (mobile):
- Primeiro mês: O criador da assinatura recebe 999 * .7 = 699 (Área de trabalho) ou 1299 * .7 = 909 (mobile).
- Segundo mês em diante: O criador da assinatura recebe 999 = 999 (Área de trabalho) ou 1299 = 1299 (mobile).
Os ganhos estão sujeitos a retenções de 30 dias e serão adicionados ao seu saldo de Robux após o término completo da assinatura ter sido entregue. Se um usuário solicitar um reembolso por uma assinatura através de seu banco ou loja de aplicativos dentro do período de retenção de um mês, a retenção será cancelada e você não receberá o pagamento por essa transação.
Os reembolsos recebidos fora da janela de retenção resultarão na dedução do valor do pagamento da transação reembolsada do seu saldo de Robux. Se sua experiência for propriedade de um Grupo e o saldo do Grupo for inferior ao valor a ser deduzido, o restante será deduzido do saldo de Robux do proprietário do grupo.
Usuários que cancelam uma assinatura ativa e não a renovam não resultam automaticamente em um reembolsar. O usuário tem que solicitar reembolsos manualmente, que são processados caso a caso. Para obter mais informações sobre o processo de reembolso da assinatura do usuário, confira a central de ajuda .
Pagamentos de assinatura
Os pagamentos são encontrados em Saldo de Robux > Minhas transações :
Assinaturas e Pagamentos de Assinatura de Grupo aparecem em Robux Incoming , enquanto os reembolsos são agrupados em Robux Outgoing como uma Reversão de Pagamento . As subscrições e subscrições de grupo fornecem informações adicionais para suas respectivas categorias.
Para ver as informações de reembolso de usuários individuais, use MarketplaceService:GetUserSubscriptionPaymentHistoryAsync() .
Análises de assinatura
Análises de assinatura ajudam você a avaliar o sucesso de assinaturas individuais, identificar tendências e prever ganhos futuros potenciais. As assinaturas são adicionadas à página de análise de assinaturas após a primeira ativação e não são removidas quando são desativadas ou excluídas. Você pode acessar análises prontas através do Painel do Criador ou você pode capturar atualizações de assinatura em tempo real usando webhooks.
Através do Painel do Criador
Para acessar as análises de assinatura no Painel do Criador:
Navegue até sua página de Criações no Painel do Criador e selecione sua experiência.
Navegue até a guia Monetização e selecione Assinaturas .
Análises de assinatura rastreiam as seguintes métricas:
- Assinaturas: A quantidade total de assinaturas ativas em sua experiência.
- Receita Estimada: A receita líquida obtida por experiências após as taxas. Não inclui informações de reembolso.
- Divisão de assinantes: Os diferentes tipos de assinantes.
- Novo : O número de compras de assinatura por assinantes pela primeira vez.
- Renovado : O número de assinaturas de renovação compradas em um período anterior.
- Resurreto : O número de novas assinaturas compradas por usuários que haviam cancelado anteriormente.
- Cancelamentos : O número de assinaturas que não foram renovadas. Isso inclui todos os cancelamentos, independentemente do gatilho, seja o cancelamento do usuário, a desativação da assinatura pelo criador ou por outros meios.
- Os cancelamentos são diferentes dos reembolsos. As assinaturas canceladas são assinaturas que não serão mais renovadas, mas são pagas na íntegra pelo restante do ciclo de faturamento, enquanto os reembolsos devolvem o valor da assinatura paga ao usuário.
- Assinaturas por Plataforma : O número de assinaturas compradas em cada plataforma.
- Lucros da Plataforma : A receita líquida obtida através de assinaturas compradas em cada plataforma.
Esta informação é visível na forma de gráficos com base em um intervalo de datas na guia Tendências e como uma lista abrangente de assinaturas totais oferecidas na guia Histórico .
Através de Webhooks
A função Webhook da Cloud API inclui gatilhos para quatro eventos de assinatura: cancelados, comprados, reembolsados e renovados. Essas notificações são acionadas imediatamente, para que você possa responder em tempo real ou criar suas próprias Dados analíticos. Para mais informações sobre como configurar um webhook, consulte Notificações de Webhook.