Un produit de développeur est un article ou une capacité qu'un utilisateur peut acheter plusieurs fois, comme une monnaie de jeu, des munitions ou des potions.

Créer un produit de développeur
Pour créer un produit de développeur :
- Allez dans Créations et sélectionnez un jeu.
- Allez dans Monétisation ⟩ Produits de développeur.
- Cliquez sur Créer un produit de développeur.
- Téléchargez une image à afficher comme icône du produit. Assurez-vous que l'image ne dépasse pas 512x512 pixels, n'inclut pas de détails importants en dehors de ses limites circulaires, et est au format .jpg, .png ou .bmp.
- Entrez un nom et une description pour le produit.
- Sélectionnez une catégorie pour le produit. La catégorie est utilisée pour organiser les articles dans votre boutique du jeu.
- Définissez le prix du produit en Robux. Le prix minimum est de 1 Robux, et le prix maximum est de 1 milliard de Robux.
- Cliquez sur Enregistrer les modifications.
Obtenir l'ID du produit de développeur
Pour utiliser la script, vous avez besoin d'un ID de produit de développeur. Pour obtenir l'ID du produit :
Allez dans Monétisation ⟩ Produits de développeur.
Survolez la miniature d'un produit, cliquez sur le bouton ⋯ et sélectionnez Copier l'ID d'actif dans le menu contextuel.

Vendre un produit de développeur
Avant de vendre des produits de développeur, assurez-vous que vous traitez correctement les reçus de vente et accordez aux utilisateurs leurs produits achetés. Pour ce faire, vous devez :
- Utiliser l'API ProcessReceipt pour vérifier les reçus d'achat. ProcessReceipt lit et reconnaît automatiquement qu'un utilisateur a acheté un produit en dehors du jeu.
- Valider chaque reçu pour User ID, Developer Product ID, et le statut du reçu.
- Si le reçu a un statut de Ouvert, accordez à l'utilisateur les articles de développeur qu'il a achetés.
- Répondez à l'API ProcessReceipt avec un message reconnaissant le reçu et validant que les articles achetés ont été accordés.
Vous pouvez vendre des produits de développeur de deux manières :
À l'intérieur de votre jeu
Pour mettre en œuvre et vendre un produit de développeur à l'intérieur d'un jeu, appelez les fonctions de MarketplaceService.
Utilisez GetProductInfo pour récupérer des informations sur un produit de développeur, comme le nom et le prix, puis afficher ce produit aux utilisateurs. Vous pouvez vendre le produit à l'intérieur du marché de votre jeu, par exemple. Pour les produits de développeur, le deuxième paramètre doit être Enum.InfoType.Product.
local MarketplaceService = game:GetService("MarketplaceService")
-- Remplacez l'ID de l'espace réservé par votre ID de produit de développeur
local productId = 000000
local success, productInfo = pcall(function()
return MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
end)
if success and productInfo then
-- Affichez les informations sur le produit
-- Remplacez les instructions print par du code UI pour afficher le produit
print("Nom du produit de développeur : " .. productInfo.Name)
print("Prix en Robux : " .. productInfo.PriceInRobux)
print("Description : " .. productInfo.Description)
end
Utilisez GetDeveloperProductsAsync pour récupérer tous les produits de développeur associés à votre jeu. Cette fonction renvoie un objet Pages que vous pouvez inspecter et filtrer pour créer des éléments comme une boutique ou une liste de produits dans le jeu.
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
-- Remplacez l'instruction print par du code UI pour afficher le produit
print(field .. ": " .. value)
end
end
Utilisez PromptProductPurchase pour inviter à acheter des produits à l'intérieur de votre jeu. Vous pouvez appeler cette fonction lorsqu'un utilisateur effectue des actions comme appuyer sur un bouton ou parler à un NPC vendeur.
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Remplacez l'ID de l'espace réservé par votre ID de produit de développeur
local productId = 000000
local function promptProductPurchase()
local success, errorMessage = pcall(function()
MarketplaceService:PromptProductPurchase(player, productId)
end)
if success then
print("Invite à acheter affichée avec succès")
end
end
Vous pouvez également combiner des fonctions à l'intérieur d'un LocalScript. Par exemple, vous pouvez créer un élément UI comme un bouton ou un NPC vendeur, puis utiliser GetProductInfo() pour connecter un produit de développeur existant à cet élément, vérifier si le produit est en vente, et utiliser PromptProductPurchase() pour inviter à acheter chaque fois que l'utilisateur clique dessus.
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
-- Remplacez l'ID de l'espace réservé par votre ID de produit de développeur
local productId = 000000
-- Obtient les informations sur le produit lorsque l'utilisateur clique sur le bouton UI
button.MouseButton1Click:Connect(function()
local success, productInfo = pcall(function()
return MarketplaceService:GetProductInfo(productId, Enum.InfoType.Product)
end)
if success and productInfo then
-- Vérifie si le produit est en vente
if productInfo.IsForSale then
print("Ceci est à vendre")
-- Invite à acheter le produit
MarketplaceService:PromptProductPurchase(player, productId)
else
-- Notifie que le produit n'est pas à vendre
print("Ce produit n'est actuellement pas à vendre.")
end
else
print("Erreur lors de la récupération des informations sur le produit : " .. tostring(productInfo))
end
end)
À l'extérieur de votre jeu
Pour activer les achats de produits de développeur en dehors de votre jeu, vous devez travailler avec l'API ProcessReceipt. Après qu'un utilisateur a effectué un achat dans l'onglet Boutique de votre page de détails de jeu, vous devez utiliser ProcessReceipt pour confirmer son achat et lui accorder ses articles une fois qu'il entre dans votre jeu.
Mode test
La fonctionnalité mode test vous aide à valider votre flux d'achat en simulant un achat de produit de développeur en dehors de votre jeu. Vous devez utiliser le mode test pour vous assurer que vous avez mis en œuvre ProcessReceipt correctement avant d'activer les ventes de produits de développeur externes.
Les produits de développeur que vous mettez en vente en mode test ne peuvent être vus que par vous et par les membres de votre groupe. Ils ne sont pas visibles par les utilisateurs.
Pour tester votre implémentation :
- Dans le Creator Hub, allez dans Monétisation ⟩ Produits de développeur.
- Cliquez sur le menu ⋮ et sélectionnez Paramètres d'achat externes.
- Dans la page Paramètres d'achat externes, cliquez sur Activer le mode test.
- Une fois le mode test activé, revenez à la page Produits de développeur et sélectionnez un produit à tester.
- Dans la page Paramètres de base, cochez la case Autoriser les achats externes et enregistrez vos modifications.
- Allez dans l'onglet Boutique de la page de détails du jeu et achetez le produit que vous avez rendu disponible à la vente.
- Entrez dans le jeu et confirmez que vous avez reçu le produit que vous avez acheté. Le statut du reçu de l'API ProcessReceipt devrait se mettre à jour à Fermé.
Après avoir testé votre implémentation, Roblox vérifie que le test a été effectué avec succès et vous permet d'activer entièrement la fonctionnalité pour vendre des produits de développeur en dehors de vos jeux.
Pour plus d'informations sur l'API ProcessReceipt et son implémentation, consultez la page ProcessReceipt.
Activer les ventes externes
Pour activer les ventes externes :
- Allez dans la page Paramètres d'achat externes.
- Activez Achats externes.
- Retournez à la page Produits de développeur et sélectionnez les produits que vous souhaitez vendre en dehors de votre jeu.
- Dans la page Paramètres de base, cochez la case Autoriser les achats externes et enregistrez vos modifications.
- Confirmez que les produits sont désormais disponibles à l'achat dans l'onglet Boutique de la page de détails du jeu.
Pour désactiver la vente externe d'un produit de développeur, sélectionnez le produit sur la page Produits de développeur et décochez la case Autoriser les achats externes.
Limitations
- Les articles à vendre en mode test coûtent réellement des Robux. Nous recommandons de tester des produits de développeur à faible coût.
- Les articles à vendre en mode test ne peuvent être vus que par vous ou par les membres de votre groupe.
- Pour être vendus à l'extérieur, vos produits de développeur doivent avoir une miniature.
- Vous ne devez pas vendre les éléments suivants en dehors de votre jeu :
- Articles aléatoires payants
- Articles qui sont limités à des quantités, temps, lieux ou paramètres et rôles d'utilisateurs spécifiques
Gérer un achat de produit de développeur
Après qu'un utilisateur a acheté un produit de développeur, vous devez gérer et enregistrer la transaction. Pour ce faire, utilisez un Script au sein de ServerScriptService en utilisant la fonction ProcessReceipt.
Pour plus d'informations sur l'API ProcessReceipt et son implémentation, consultez la page ProcessReceipt.
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local productFunctions = {}
-- Exemple : l'ID du produit 123123 ramène l'utilisateur à pleine santé
productFunctions[123123] = function(receipt, player)
local character = player.Character
local humanoid = character and character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
humanoid.Health = humanoid.MaxHealth
-- Indique un achat réussi
return true
end
end
-- Exemple : l'ID du produit 456456 attribue 100 pièces d'or à l'utilisateur
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
-- Obtient la fonction de gestion associée à l'ID du produit de développeur et tente de l'exécuter
local handler = productFunctions[productId]
local success, result = pcall(handler, receiptInfo, player)
if success then
-- L'utilisateur a reçu ses articles
-- Renvoie "PurchaseGranted" pour confirmer la transaction
return Enum.ProductPurchaseDecision.PurchaseGranted
else
warn("Échec du traitement du reçu :", receiptInfo, result)
end
end
-- Les articles de l'utilisateur n'ont pas pu être attribués
-- Renvoie "NotProcessedYet" et essaie à nouveau la prochaine fois que l'utilisateur rejoint le jeu
return Enum.ProductPurchaseDecision.NotProcessedYet
end
-- Définit le rappel
-- Ceci ne peut être fait qu'une seule fois par un script côté serveur
MarketplaceService.ProcessReceipt = processReceipt
Personnalisez votre boutique en jeu
Vous pouvez utiliser les API d'intelligence des produits pour trier et recommander des produits de développeur aux utilisateurs. La personnalisation de votre boutique en jeu aide à faire ressortir les articles les plus pertinents pour chaque utilisateur, augmentant ainsi l'engagement et les revenus. En adaptant les produits de développeur aux préférences des utilisateurs, vous pouvez améliorer leur découverte, augmenter les taux de conversion, et débloquer de nouvelles opportunités de monétisation.
Classer les produits de développeur à vendre
RankProductsAsync prend une liste d'ID de produits et retourne une liste ordonnée personnalisée de ces produits. Vous pouvez utiliser cette méthode pour fournir à vos utilisateurs des recommandations d'articles personnalisées dans votre boutique en jeu.

local MarketplaceService = game:GetService("MarketplaceService")
-- Créer un tableau de produits que vous souhaitez classer
local productIdentifiers = {
{InfoType = Enum.InfoType.GamePass, Id = 123},
{InfoType = Enum.InfoType.Product, Id = 456},
{InfoType = Enum.InfoType.Product, Id = 789}
}
-- Effectuer un appel protégé pour gérer les erreurs
local success, rankedProducts = pcall(function()
return MarketplaceService:RankProductsAsync(productIdentifiers)
end)
if not success then
error("Échec du classement des produits")
end
-- Charger les articles retournés dans la boutique
for i, rankedItem in ipairs(rankedProducts) do
local productIdentifier = rankedItem.ProductIdentifier
local productInfo = rankedItem.ProductInfo
-- ...
-- Logique pour ajouter des produits dans la boutique
end
Affichez vos meilleurs produits de développeur
RecommendTopProductsAsync prend un tableau de valeurs de InfoType et renvoie jusqu'à 50 articles avec lesquels un utilisateur est le plus susceptible d'interagir et d'acheter. Vous pouvez utiliser cette méthode pour créer une section "Meilleurs choix" dans votre boutique en jeu.
Si aucune recommandation ne peut être déterminée, RecommendTopProductsAsync retourne 0 articles.
Dans de rares cas, les appels au modèle de classement peuvent être lents. Pour éviter que cela ne bloque les utilisateurs, nous recommandons d'utiliser task.spawn pour rendre l'appel à RecommendTopProducts non bloquant.

local MarketplaceService = game:GetService("MarketplaceService")
-- Créez un tableau de types de produits que vous souhaitez inclure dans les recommandations -- Cet exemple inclut à la fois des passes et des produits de développeur
local productTypes = {Enum.InfoType.GamePass, Enum.InfoType.Product}
-- Effectuer un appel protégé pour gérer les erreurs
local success, topRankedItems = pcall(function()
return MarketplaceService:RecommendTopProductsAsync(productTypes)
end)
if not success then
error("Échec du classement des produits")
end
-- Charger les articles retournés dans la boutique
-- Assurez-vous de filtrer tous les articles inéligibles parmi topRankedItems tels que les produits de développeur que l'utilisateur ne peut plus acheter
for i, rankedItem in ipairs(topRankedItems) do
local productIdentifier = rankedItem.ProductIdentifier
local productInfo = rankedItem.ProductInfo
-- ...
-- Logique pour ajouter des produits dans la boutique
end
Analytique des produits de développeur
Utilisez l'analytique des produits de développeur pour analyser le succès des produits individuels, identifier les tendances et prévoir les revenus futurs potentiels.
Avec l'analytique, vous pouvez :
- Voir vos meilleurs produits de développeur sur une période sélectionnée.
- Afficher jusqu'à huit articles les plus vendus sur un graphique temporel pour analyser les ventes globales et les revenus nets.
- Surveiller votre catalogue et trier les articles par ventes et revenus nets.
Pour accéder à l'analytique des produits de développeur :
- Allez dans Créations et sélectionnez un jeu.
- Allez dans Monétisation ⟩ Produits de développeur.
- Sélectionnez l'onglet Analytique.
