Um produto de desenvolvedor é um item ou habilidade que um usuário pode comprar mais de uma vez, como moeda do jogo, munição ou poções.

Criar um produto de desenvolvedor
Para criar um produto de desenvolvedor:
- Vá para Criações e selecione um jogo.
- Vá para Monetização ⟩ Produtos de Desenvolvedor.
- Clique em Criar produto de desenvolvedor.
- Faça o upload de uma imagem para exibir como o ícone do produto. Certifique-se de que a imagem não exceda 512x512 pixels, não inclua detalhes importantes fora de seus limites circulares e esteja no formato .jpg, .png ou .bmp.
- Insira um nome e uma descrição para o produto.
- Selecione uma categoria para o produto. A categoria é usada para organizar itens na sua Loja dentro do jogo.
- Defina o preço do produto em Robux. O preço mínimo é 1 Robux, e o preço máximo é 1 bilhão de Robux.
- Clique em Salvar Alterações.
Obter o ID do produto de desenvolvedor
Para usar a programação, você precisa de um ID de produto de desenvolvedor. Para obter o ID do produto:
Vá para Monetização ⟩ Produtos de Desenvolvedor.
Passe o mouse sobre a miniatura de um produto, clique no botão ⋯ e selecione Copiar ID do Ativo no menu de contexto.

Vender um produto de desenvolvedor
Antes de vender produtos de desenvolvedor, certifique-se de que você está processando corretamente os recibos de vendas e concedendo aos usuários os produtos que eles compraram. Para fazer isso, você deve:
- Usar a API ProcessReceipt para verificar recibos de compras. ProcessReceipt lê e reconhece automaticamente que um usuário comprou um produto fora do jogo.
- Validar cada recibo para User ID, Developer Product ID e o status do recibo.
- Se o recibo tiver um status de Aberto, conceda ao usuário os itens de desenvolvedor que eles compraram.
- Responda à API ProcessReceipt com uma mensagem reconhecendo o recibo e validando que os itens comprados foram concedidos.
Você pode vender produtos de desenvolvedor de duas maneiras:
Dentro do seu jogo
Para implementar e vender um produto de desenvolvedor dentro de um jogo, chame funções MarketplaceService.
Use GetProductInfo para recuperar informações sobre um produto de desenvolvedor, como nome e preço, e, em seguida, exibir esse produto para os usuários. Você pode vender o produto dentro da loja do seu jogo, por exemplo. Para produtos de desenvolvedor, o segundo parâmetro deve ser Enum.InfoType.Product.
local MarketplaceService = game:GetService("MarketplaceService")
-- Substitua o ID do placeholder pelo seu ID de produto de desenvolvedor
local productId = 000000
local success, productInfo = pcall(function()
return MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
end)
if success and productInfo then
-- Exibir informações do produto
-- Substitua as instruções de impressão pelo código da UI para exibir o produto
print("Nome do Produto de Desenvolvedor: " .. productInfo.Name)
print("Preço em Robux: " .. productInfo.PriceInRobux)
print("Descrição: " .. productInfo.Description)
end
Use GetDeveloperProductsAsync para recuperar todos os produtos de desenvolvedor associados ao seu jogo. Esta função retorna um objeto Pages que você pode inspecionar e filtrar para construir coisas como uma loja no jogo ou uma interface de lista de produtos.
local MarketplaceService = game:GetService("MarketplaceService")
local success, developerProducts = pcall(function()
return MarketplaceService:GetDeveloperProductsAsync()
end)
if success and developerProducts then
local firstPage = developerProducts:GetCurrentPage()
for _, developerProduct in firstPage do
-- Substitua a declaração de impressão pelo código da UI para exibir o produto
print(field .. ": " .. value)
end
end
Use PromptProductPurchase para solicitar compras de produtos dentro do seu jogo. Você pode chamar essa função quando um usuário realiza ações como pressionar um botão ou falar com um NPC vendedor.
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Substitua o ID do placeholder pelo seu ID de produto de desenvolvedor
local productId = 000000
local function promptProductPurchase()
local success, errorMessage = pcall(function()
MarketplaceService:PromptProductPurchase(player, productId)
end)
if success then
print("Solicitação de compra exibida com sucesso")
end
end
Você também pode combinar funções dentro de um LocalScript. Por exemplo, você pode criar um elemento UI como um botão ou um NPC vendedor e, em seguida, usar GetProductInfo() para conectar um produto de desenvolvedor existente a esse elemento, verificar se o produto está à venda e usar PromptProductPurchase() para solicitar uma compra sempre que o usuário clicar nele.
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
-- Substitua o ID do placeholder pelo seu ID de produto de desenvolvedor
local productId = 000000
-- Obtém informações do produto quando o usuário clica no botão da UI
button.MouseButton1Click:Connect(function()
local success, productInfo = pcall(function()
return MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
end)
if success and productInfo then
-- Verifica se o produto está à venda
if productInfo.IsForSale then
print("Este produto está à venda")
-- Solicita a compra do produto
MarketplaceService:PromptProductPurchase(player, productId)
else
-- Notifica que o produto não está à venda
print("Este produto não está atualmente à venda.")
end
else
print("Erro ao recuperar as informações do produto: " .. tostring(productInfo))
end
end)
Fora do seu jogo
Para habilitar compras de produtos de desenvolvedor fora do seu jogo, você deve trabalhar com a API ProcessReceipt. Após um usuário fazer uma compra na aba Loja da página de detalhes do seu jogo, você deve usar ProcessReceipt para confirmar a compra e conceder os itens a eles assim que entrarem no seu jogo.
Modo de teste
O recurso modo de teste ajuda você a validar seu fluxo de compras simulando uma compra de produto de desenvolvedor fora do seu jogo. Você deve usar o modo de teste para garantir que implementou ProcessReceipt corretamente antes de permitir vendas externas de produtos de desenvolvedor.
Os produtos de desenvolvedor que você disponibiliza para venda no modo de teste podem ser vistos apenas por você e por membros do seu grupo. Eles não são visíveis para os usuários.
Para testar sua implementação:
- No Creator Hub, vá para Monetização ⟩ Produtos de Desenvolvedor.
- Clique no menu ⋮ e selecione Configurações de Compra Externa.
- Na página Configurações de Compra Externa, clique em Ativar modo de teste.
- Depois que o modo de teste estiver ativo, volte à página Produtos de Desenvolvedor e selecione um produto para testar.
- Na página Configurações Básicas, selecione a caixa de seleção Permitir compras externas e salve suas alterações.
- Vá para a aba Loja da página de detalhes do seu jogo e compre o produto que você disponibilizou para venda.
- Entre no jogo e confirme que você recebeu o produto que comprou. O status do recibo da API ProcessReceipt deve ser atualizado para Fechado.
Após testar sua implementação, o Roblox verifica se o teste foi concluído com sucesso e permite que você ative completamente o recurso de venda de produtos de desenvolvedor fora dos seus jogos.
Para mais informações sobre a API ProcessReceipt e sua implementação, consulte a página ProcessReceipt.
Habilitar vendas externas
Para habilitar vendas externas:
- Vá para a página Configurações de Compra Externa.
- Ative Compras Externas.
- Volte para a página Produtos de Desenvolvedor e selecione os produtos que você deseja vender fora do seu jogo.
- Na página Configurações Básicas, selecione a caixa de seleção Permitir compras externas e salve suas alterações.
- Confirme que os produtos agora estão disponíveis para compra na aba Loja da página de detalhes do jogo.
Para desabilitar a venda externa de um produto de desenvolvedor, selecione o produto na página Produtos de Desenvolvedor e desmarque a caixa de seleção Permitir compras externas.
Limitações
- Itens à venda no modo de teste custam Robux reais. Recomendamos testar produtos de desenvolvedor de baixo custo.
- Itens à venda no modo de teste podem ser vistos apenas por você ou por membros do seu grupo.
- Para serem vendidos externamente, seus produtos de desenvolvedor devem ter uma miniatura.
- Você não deve vender o seguinte fora do seu jogo:
- Itens aleatórios pagos
- Itens que são limitados a quantidades específicas, tempo, lugar ou configurações e funções de usuário
Lidar com a compra de um produto de desenvolvedor
Após um usuário comprar um produto de desenvolvedor, você deve lidar e registrar a transação. Para fazer isso, use um Script dentro de ServerScriptService usando a função ProcessReceipt.
Para mais informações sobre a API ProcessReceipt e sua implementação, consulte a página ProcessReceipt.
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local productFunctions = {}
-- Exemplo: o ID do produto 123123 traz o usuário de volta à saúde total
productFunctions[123123] = function(receipt, player)
local character = player.Character
local humanoid = character and character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
humanoid.Health = humanoid.MaxHealth
-- Indica uma compra bem-sucedida
return true
end
end
-- Exemplo: o ID do produto 456456 concede 100 moedas de ouro ao usuário
productFunctions[456456] = function(receipt, player)
local leaderstats = player:FindFirstChild("leaderstats")
local gold = leaderstats and leaderstats:FindFirstChild("Gold")
if gold then
gold.Value += 100
return true
end
end
local function processReceipt(receiptInfo)
local userId = receiptInfo.PlayerId
local productId = receiptInfo.ProductId
local player = Players:GetPlayerByUserId(userId)
if player then
-- Obtém a função manipuladora associada ao ID do produto de desenvolvedor e tenta executá-la
local handler = productFunctions[productId]
local success, result = pcall(handler, receiptInfo, player)
if success then
-- O usuário recebeu seus itens
-- Retorna "PurchaseGranted" para confirmar a transação
return Enum.ProductPurchaseDecision.PurchaseGranted
else
warn("Falha ao processar o recibo:", receiptInfo, result)
end
end
-- Os itens do usuário não puderam ser concedidos
-- Retorna "NotProcessedYet" e tenta novamente da próxima vez que o usuário entrar no jogo
return Enum.ProductPurchaseDecision.NotProcessedYet
end
-- Define o callback
-- Isso pode ser feito apenas uma vez por um script do lado do servidor
MarketplaceService.ProcessReceipt = processReceipt
Personalizar sua loja no jogo
Você pode usar APIs de inteligência de produtos para classificar e recomendar produtos de desenvolvedor para usuários. Personalizar sua loja no jogo ajuda a destacar os itens mais relevantes para cada usuário, aumentando o engajamento e a receita. Ao adaptar produtos de desenvolvedor às preferências dos usuários, você pode melhorar sua descoberta, aumentar as taxas de conversão e desbloquear novas oportunidades de monetização.
Classificar produtos de desenvolvedor à venda
RankProductsAsync recebe uma lista de IDs de produtos e retorna uma lista ordenada personalizada desses produtos. Você pode usar esse método para fornecer recomendações personalizadas de itens para seus usuários em sua loja no jogo.

local MarketplaceService = game:GetService("MarketplaceService")
-- Crie um array de produtos que você deseja classificar
local productIdentifiers = {
{InfoType = Enum.InfoType.GamePass, Id = 123},
{InfoType = Enum.InfoType.Product, Id = 456},
{InfoType = Enum.InfoType.Product, Id = 789}
}
-- Faça uma chamada protegida para lidar com erros
local success, rankedProducts = pcall(function()
return MarketplaceService:RankProductsAsync(productIdentifiers)
end)
if not success then
error("Falha ao classificar produtos")
end
-- Carregue os itens retornados na loja
for i, rankedItem in ipairs(rankedProducts) do
local productIdentifier = rankedItem.ProductIdentifier
local productInfo = rankedItem.ProductInfo
-- ...
-- Lógica para adicionar produtos na loja
end
Exibir seus principais produtos de desenvolvedor
RecommendTopProductsAsync leva um array de valores de InfoType e retorna até 50 itens com os quais um usuário é mais propenso a interagir e comprar. Você pode usar esse método para criar uma seção "Principais Escolhas" na sua loja no jogo.
Se nenhuma recomendação puder ser determinada, RecommendTopProductsAsync retorna 0 itens.
Em casos raros, chamadas ao modelo de classificação podem ser lentas. Para ajudar a evitar adições tardias para usuários, recomendamos usar task.spawn para tornar a chamada para RecommendTopProducts não bloqueante.

local MarketplaceService = game:GetService("MarketplaceService")
-- Crie um array de tipos de produtos que você deseja incluir nas recomendações -- Este exemplo inclui passes e produtos de desenvolvedor
local productTypes = {Enum.InfoType.GamePass, Enum.InfoType.Product}
-- Faça uma chamada protegida para lidar com erros
local success, topRankedItems = pcall(function()
return MarketplaceService:RecommendTopProductsAsync(productTypes)
end)
if not success then
error("Falha ao classificar produtos")
end
-- Carregue os itens retornados na loja
-- Certifique-se de filtrar qualquer item inelegível de topRankedItems, como produtos de desenvolvedor que o usuário não pode mais comprar
for i, rankedItem in ipairs(topRankedItems) do
local productIdentifier = rankedItem.ProductIdentifier
local productInfo = rankedItem.ProductInfo
-- ...
-- Lógica para adicionar produtos na loja
end
Análise de produtos de desenvolvedor
Use a análise de produtos de desenvolvedor para analisar o sucesso de produtos individuais, identificar tendências e prever possíveis ganhos futuros.
Com a análise, você pode:
- Visualizar seus principais produtos de desenvolvedor ao longo de um período de tempo selecionado.
- Exibir até oito itens mais vendidos em um gráfico de séries temporais para analisar vendas totais e receita líquida.
- Monitorar seu catálogo e classificar itens por vendas e receita líquida.
Para acessar a análise de produtos de desenvolvedor:
- Vá para Criações e selecione um jogo.
- Vá para Monetização ⟩ Produtos de Desenvolvedor.
- Selecione a aba Análise.
