Tarification régionale

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Avec la tarification gérée, vous pouvez offrir des prix spécifiques à la région pour vos articles et construire une économie mondiale plus inclusive et accessible. Après avoir déterminé un prix global par défaut pour un article, Roblox utilise une variété de signaux tels que le pouvoir d'achat de la région, les taux de change des devises et le comportement de dépense local pour définir le prix le plus approprié pour cet article, région par région.

Vous pouvez choisir les articles que vous souhaitez tarifer régionalement. Lorsque vous activez la tarification gérée pour un article dans votre jeu, Roblox ajuste automatiquement le prix de cet article pour les utilisateurs en fonction de leur localisation économique.

La localisation économique n'est pas toujours la même que la localisation du compte. Pour déterminer la localisation économique d'un utilisateur, Roblox examine des signaux, y compris l'utilisation de VPN, l'historique de facturation et l'historique du compte. Si leur localisation économique ne peut pas être déterminée, les utilisateurs voient le prix global par défaut de l'article à la place.

Pour prévenir l'arbitrage de prix lorsque les utilisateurs offrent ou échangent des articles avec des prix gérés différents, vous pouvez gérer les transferts dans le jeu avec l'API GetUsersPriceLevelsAsync.

Activer la tarification régionale

Pour les passes

La tarification régionale est activée par défaut pour tous les nouveaux et anciens passes via la tarification gérée.

Pour désactiver la tarification gérée pour un passe :

  1. Allez dans Créations et sélectionnez un jeu.
  2. Allez dans MonétisationPasses.
  3. Sélectionnez un ou plusieurs passes existants.
  4. Cliquez sur Désactiver la tarification gérée.
  5. OPTIONNEL
    Pour voir les prix gérés par pays ou région, sélectionnez un passe et allez à sa page Ventes. La liste Top Pays/Régions se met à jour pour afficher les prix ajustés en fonction du prix par défaut du passe. Pour voir les prix pour tous les pays et régions, cliquez sur Voir tous les pays.

Pour les produits des développeurs

Pour activer la tarification gérée pour un produit des développeurs :

  1. Vérifiez que vos produits des développeurs ont des prix scriptés de manière dynamique.
  2. Implémentez la méthode GetUsersPriceLevelsAsync pour réguler les transferts d'articles en fonction des niveaux de prix des utilisateurs.
  3. Allez dans Créations et sélectionnez un jeu.
  4. Allez dans MonétisationProduits Développeurs.
  5. Sélectionnez un ou plusieurs produits existants, ou créez un nouveau produit.
  6. Cliquez sur Activer la tarification gérée.
  7. OPTIONNEL
    Pour voir la tarification gérée par pays ou région, sélectionnez un produit et allez à sa page Paramètres de base. La liste Top Pays/Régions se met à jour pour afficher les prix ajustés en fonction du prix par défaut du produit. Pour voir la tarification gérée pour tous les pays et régions, cliquez sur Voir tous les pays.

Pour les abonnements

La tarification gérée est activée par défaut pour les abonnements évalués en Robux et ne peut pas être désactivée. Pour plus d'informations, voir Créer des abonnements.

La tarification gérée n'est pas disponible pour les abonnements évalués en devise locale.

Pour les articles Avatar

Pour activer la tarification gérée pour un article Avatar, voir Tarification dans la page Publier sur le Marketplace.

Vérifier les prix dynamiques

Lorsque vous activez la tarification gérée, le prix de l'article s'ajuste pour les utilisateurs dans différentes régions, que ce soit en vente à l'intérieur ou à l'extérieur de votre jeu. Cependant, si vous avez codé le prix en dur dans l'interface utilisateur de votre jeu, ce chiffre ne se met pas à jour car il n'est pas dynamique ou accessible par Roblox. En conséquence, les utilisateurs sont facturés au prix spécifique à la région, mais l'interface utilisateur leur montre toujours la valeur codée en dur.

L'outil de vérification des prix dynamiques met à jour tous les articles à vendre dans votre jeu avec un faux prix Robux ou une fausse localisation économique pour vous aider à identifier quels prix sont codés en dur dans l'interface utilisateur de votre jeu et lesquels sont scriptés dynamiquement avec MarketplaceService et appelés depuis un script client. Une fois que vous avez identifié les passes codées en dur, vous pouvez les mettre à jour pour utiliser les fonctions MarketplaceService.

Pour utiliser l'outil de vérification des prix dynamiques :

  1. Allez dans Monétisation.
    • Pour les passes, allez dans Passes.
    • Pour les produits des développeurs, allez dans Produits Développeurs.
  2. Cliquez sur et sélectionnez Vérification des prix dynamiques.
  3. Sous Ajouter des comptes de test, entrez jusqu'à cinq utilisateurs Roblox pour vérifier les prix codés en dur.
  4. Sélectionnez un type de test.
    • Prix épinglé met à jour tous les prix scriptés dynamiquement avec un montant fixe en Robux.
    • Localisation épinglée met à jour tous les prix scriptés dynamiquement avec un prix spécifique à la région pour une fausse localisation économique.
  5. Cliquez sur Activer. Après quelques minutes, entrez dans votre jeu pour identifier les prix codés en dur.

Pour désactiver l'outil de vérification des prix dynamiques, allez sur la page Vérification des prix dynamiques et cliquez sur Désactiver.

Pour plus d'informations sur les prix codés en dur contre les prix dynamiquement scriptés, voir Vérifier les prix dynamiques dans la page d'optimisation des prix. Pour plus d'informations sur la vente de passes et de produits de développeurs avec les fonctions MarketplaceService, voir Vendre un passe à l'intérieur de votre jeu et Vendre un produit développeur à l'intérieur de votre jeu.

Afficher les prix régionaux dans votre jeu

Avec la tarification gérée, le prix qu'un utilisateur voit peut varier en fonction de sa localisation. Si vous affichez des prix dans une interface utilisateur personnalisée dans le jeu, comme un TextLabel, vous pouvez récupérer les informations sur le produit au moment de l'exécution pour vous assurer que le prix affiché correspond à celui montré dans l'invite d'achat.

Pour afficher le prix régional pour un produit développeur ou un passe unique, utilisez GetProductInfoAsync.

Pour afficher le prix régional pour tous les produits développeurs, utilisez GetDeveloperProductsAsync.

Protéger vos échanges et cadeaux

La tarification gérée peut affecter les transferts dans le jeu, comme les échanges et les cadeaux. En raison des différences de prix entre les régions, l'arbitrage de prix (exploiter les différences de prix entre les mêmes produits pour générer un profit) peut se produire. Pour gérer le potentiel d'arbitrage de prix, vous pouvez utiliser l'API GetUsersPriceLevelsAsync, qui vous permet de déterminer les niveaux de prix relatifs des utilisateurs afin que vous puissiez implémenter une logique pour réguler les transferts d'articles en fonction de ces niveaux.

GetUsersPriceLevelsAsync fournit une valeur numérique entre 1 et 1000 qui indique le niveau de prix d'un utilisateur. Cette valeur est conçue pour représenter le pourcentage du prix plein qu'un utilisateur est censé payer. Le niveau de prix 1000 représente le prix global plein, tandis que les niveaux de prix inférieurs indiquent que l'utilisateur paie généralement un prix inférieur en raison de sa localisation économique.

Une différence de niveau de prix inférieure signifie qu'il y a une différence de prix plus petite entre le prix global plein et le prix géré de l'utilisateur. Une différence de niveau de prix plus élevée signifie qu'il y a une plus grande différence de prix entre les deux. Par exemple :

  • L'utilisateur A a le niveau de prix 1000, qui représente le prix global plein. Cet utilisateur paie 100 % du prix de base pour un article.
  • L'utilisateur B a le niveau de prix 500, qui représente 50 % du prix global plein. Cet utilisateur paie 50 % du prix de base pour un article.
  • Une fois que vous connaissez le niveau de prix de chaque utilisateur, vous pouvez choisir d'approuver ou de bloquer l'offre ou l'échange entre l'utilisateur A et l'utilisateur B en fonction de leur différence de niveau de prix de 500.

Implémenter GetUsersPriceLevelsAsync

Pour obtenir les niveaux de prix des utilisateurs impliqués dans un transfert d'article, appelez la fonction GetUsersPriceLevelsAsync dans le MarketplaceService. Cette fonction prend un tableau d'ID d'utilisateur comme argument et retourne un tableau d'objets PriceLevelInfo avec les champs suivants :


type PriceLevelInfo = {
UserId: number,
PriceLevel: number
}

Après avoir implémenté la fonction, utilisez les niveaux de prix retournés pour choisir si vous souhaitez permettre qu'un transfert d'article ait lieu. Par exemple, vous pouvez permettre aux utilisateurs avec un niveau de prix plus élevé de faire des cadeaux à des utilisateurs avec un niveau de prix plus bas, mais uniquement permettre les échanges entre utilisateurs ayant le même niveau de prix. Voir les exemples disponibles pour plus d'informations.

Pour plus d'informations sur l'API GetUsersPriceLevelsAsync, voir MarketplaceService.

Exemples

Exemples de la manière dont vous pouvez utiliser GetUsersPriceLevelsAsync avec des prix régionaux.

Exemple 1 : Vérifier les niveaux de prix pour une liste d'utilisateurs

Cet exemple vous montre comment récupérer les niveaux de prix pour une liste d'utilisateurs, ce qui peut vous aider à choisir si vous souhaitez permettre qu'un transfert d'article ait lieu.


-- Get the MarketplaceService
local MarketplaceService = game:GetService("MarketplaceService")
-- Define a function to retrieve price levels for a list of users and creates a lookup table of UserId to PriceLevel
local function getPriceLevelsLookup(userIds)
local success, result = pcall(function()
return MarketplaceService:GetUsersPriceLevelsAsync(userIds)
end)
if success then
-- Map each PriceLevelInfo to a UserId -> PriceLevel lookup table
local lookup = {}
for _, userData in ipairs(result) do
lookup[userData.UserId] = userData.PriceLevel
end
return lookup
else
warn("Error getting price levels:", result)
return nil
end
end
-- Example using placeholder IDs
local user1Id = 123456789
local user2Id = 987654321
-- Call the function and store the result
local priceLevels = getPriceLevelsLookup({user1Id, user2Id})
-- If successful, print each user's level
if priceLevels then
print("Niveau de prix pour l'Utilisateur 1:", priceLevels[user1Id])
print("Niveau de prix pour l'Utilisateur 2:", priceLevels[user2Id])
else
print("Échec de la récupération des niveaux de prix.")
end
Exemple 2 : Comparer le niveau de prix d'un expéditeur à celui d'un destinataire

Cet exemple vous montre une implémentation d'exemple de la manière de vérifier le niveau de prix d'un expéditeur par rapport au niveau de prix du destinataire. Cela peut vous aider à gérer les cadeaux d'utilisateurs dans des régions à prix plus élevés vers des utilisateurs dans des régions à prix plus bas.


-- Get the MarketplaceService
local MarketplaceService = game:GetService("MarketplaceService")
-- Define a function to retrieve price levels for a list of users and creates a lookup table of UserId to PriceLevel
local function getPriceLevelsLookup(userIds)
local success, result = pcall(function()
return MarketplaceService:GetUsersPriceLevelsAsync(userIds)
end)
if success then
-- Map each PriceLevelInfo to a UserId -> PriceLevel lookup table
local lookup = {}
for _, userData in ipairs(result) do
lookup[userData.UserId] = userData.PriceLevel
end
return lookup
else
warn("Error getting price levels:", result)
return nil
end
end
-- Define a function that checks if the sender has a higher or equal price level to the recipient
-- The parameters are the Player sending the item and the Player receiving the item
-- The function returns true if the sender's price level is greater than or equal to the recipient's price level
function isSenderPriceLevelHigherOrEqualforGifting(sender, recipient)
local priceLevelsLookup = getPriceLevelsLookup({ sender.UserId, recipient.UserId })
if not priceLevelsLookup then
error("MarketplaceService:GetUsersPriceLevelsAsync failed. Unable to retrieve user price levels.")
end
local senderPriceLevel = priceLevelsLookup[sender.UserId]
local recipientPriceLevel = priceLevelsLookup[recipient.UserId]
return senderPriceLevel >= recipientPriceLevel
end
Exemple 3 : Vérifiez si deux utilisateurs ont le même niveau de prix

Cet exemple vous montre une implémentation d'exemple de la manière de vérifier si deux utilisateurs ont le même niveau de prix. Cela peut vous aider à gérer les échanges et à garantir un échange équitable entre des utilisateurs de différentes régions.


-- Get the MarketplaceService
local MarketplaceService = game:GetService("MarketplaceService")
-- Define a function to retrieve price levels for a list of users and creates a lookup table of UserId to PriceLevel
local function getPriceLevelsLookup(userIds)
local success, result = pcall(function()
return MarketplaceService:GetUsersPriceLevelsAsync(userIds)
end)
if success then
-- Map each PriceLevelInfo to a UserId -> PriceLevel lookup table
local lookup = {}
for _, userData in ipairs(result) do
lookup[userData.UserId] = userData.PriceLevel
end
return lookup
else
warn("Error getting price levels:", result)
return nil
end
end
-- Define a function that checks if two users have the same price level
-- The parameters are the two users whose price levels you want to compare
-- The function returns true if both users have the same price level
function haveSamePriceLevelForTrading(userA, userB)
local priceLevelsLookup = getPriceLevelsLookup({ userA.UserId, userB.UserId })
if not priceLevelsLookup then
error("MarketplaceService:GetUsersPriceLevelsAsync failed. Unable to retrieve user price levels.")
end
local userAPriceLevel = priceLevelsLookup[userA.UserId]
local userBPriceLevel = priceLevelsLookup[userB.UserId]
return userAPriceLevel == userBPriceLevel
end
©2026 Société Roblox. Roblox, le logo Roblox et Powering Imagination font partie de nos marques déposées aux États-Unis et dans d'autres pays.