Passer au contenu

Aperçu

  • Version : 2.0.0
  • Serveurs : https://store.xsolla.com/api
  • Contactez-nous par e-mail
  • URL de contact : https://xsolla.com/
  • Version TLS requise : 1.2

L’API Catalog permet de configurer un catalogue des objets en jeu côté Xsolla et de l’afficher aux utilisateurs dans votre magasin.

L’API permet de gérer les entités de catalogue suivantes :

  • Objets virtuels — objets en jeu tels que armes, skins, boosters.
  • Monnaie virtuelle — monnaie utilisée pour acheter des objets virtuels.
  • Packages de monnaie virtuelle — lots prédéfinis de monnaie virtuelle.
  • Lots — packages combinant objets virtuels, monnaie virtuelle ou clés de jeu vendus sous un seul UGS.
  • Clés de jeu — clés pour jeux et DLC distribuées via Steam ou d’autres fournisseurs DRM.
  • Groupes — regroupements logiques pour organiser et trier les éléments du catalogue.

Appels API

L’API est divisée en groupes suivants :

  • Admin — appels pour créer, mettre à jour, supprimer et configurer les objets et groupes du catalogue. Authentification via l’authentification d’accès de base avec vos identifiants marchand ou projet. Non destinés à un usage côté magasin.
  • Catalog — appels pour récupérer des objets et construire des vitrines personnalisées pour les utilisateurs finaux. Conçue pour gérer des charges importantes. Supporte l’autorisation optionnelle par JWT utilisateur pour retourner des données personnalisées telles que des limites spécifiques à l’utilisateur et des promotions actives.

Authentification

Les appels API nécessitent une authentification au nom d'un utilisateur ou d'un projet. Le schéma d'authentification à utiliser figure dans la section Security de la description de chaque appel.

Authentification à l'aide du JWT utilisateur

L'authentification par JWT utilisateur est utilisée lorsqu'une requête provient d'un navigateur, d'une application mobile ou d'un jeu. Par défaut, le schéma XsollaLoginUserJWT s'applique. Pour savoir comment créer un jeton, consultez la documentation de l'API Xsolla Login.

Transmettez le jeton dans l'en-tête Authorization au format suivant : Authorization: Bearer <user_JWT>, où <user_JWT> représente le jeton utilisateur. Ce jeton identifie l'utilisateur et donne accès à ses données personnalisées.

Vous pouvez également utiliser un jeton pour ouvrir l’interface de paiement.

Authentification HTTP basique

L'authentification HTTP basique est utilisée pour les interactions serveur à serveur, lorsqu'un appel API est envoyé directement depuis votre serveur plutôt que depuis le navigateur ou l'application mobile d'un utilisateur. Elle repose généralement sur une clé API.

Note

La clé API est confidentielle et ne doit jamais être stockée ni utilisée dans une application cliente.

Avec l'authentification basique côté serveur, toutes les requêtes API doivent inclure l'en-tête suivant :

  • pour basicAuthAuthorization: Basic <your_authorization_basic_key>, où your_authorization_basic_key est la paire project_id:api_key encodée en Base64
  • pour basicMerchantAuthAuthorization: Basic <your_authorization_basic_key>, où your_authorization_basic_key est la paire merchant_id:api_key encodée en Base64

Vous trouverez les valeurs des paramètres dans le Compte éditeur :

  • merchant_id s'affiche :
    • Dans Company settings > Company*.
    • Dans l'URL dans la barre d'adresse du navigateur sur n'importe quelle page du Compte éditeur. L'URL a le format suivant : https://publisher.xsolla.com/<merchant_id>.
  • project_id s'affiche :
    • À côté du nom du projet dans le Compte éditeur.
    • Dans l'URL dans la barre d'adresse du navigateur lors de l'utilisation d'un projet dans le Compte éditeur. L'URL a le format suivant : https://publisher.xsolla.com/<merchant_id>/projects/<project_id>.
  • api_key s'affiche dans le Compte éditeur uniquement au moment de la création et doit être stockée en toute sécurité de votre côté. Vous pouvez créer une clé API dans les sections suivantes :
Remarque

Si un appel API requis n'inclut pas le paramètre de chemin project_id, utilisez une clé API valide pour l'ensemble des projets de l'entreprise pour l'autorisation.

Pour plus d'informations sur l'utilisation des clés API, consultez les références API.

Authentification avec prise en charge de l'accès invité

Le schéma d’authentification AuthForCart est utilisé pour les achats via le panier et prend en charge deux modes :

  1. Authentification par JWT utilisateur. Le jeton est passé dans l'en-tête Authorization au format suivant : Authorization: Bearer <user_JWT>, où <user_JWT> représente le jeton utilisateur. Ce jeton identifie l'utilisateur et donne accès à ses données personnalisées. Vous pouvez également utiliser un jeton pour ouvrir l'interface de paiement.

  2. Mode simplifié sans en-tête Authorization. Ce mode est réservé aux utilisateurs non authentifiés et peut être utilisé uniquement pour la vente de clés de jeu. Au lieu d'un jeton, la requête doit inclure les en-têtes suivants :

    • x-unauthorized-id avec un identifiant de requête
    • x-user avec l'adresse e-mail de l'utilisateur encodée en Base64

Structure de l'entité principale

Les objets de tous types (objets virtuels, lots, monnaie virtuelle et clés) partagent une structure de données similaire. Comprendre cette structure de base facilite l’utilisation de l'API et la navigation dans la documentation.

Note

Certains appels peuvent inclure des champs supplémentaires, mais ils ne modifient pas la structure de base.

Identification

  • merchant_id — ID de l'entreprise dans le Compte éditeur
  • project_id — ID de projet dans le Compte éditeur
  • sku — UGS de l'objet, unique au sein du projet

Affichage en magasin

  • name — nom de l'objet
  • description — description de l'objet
  • image_url — URL de l'image
  • is_enabled — disponibilité de l'objet
  • is_show_in_store — affichage de l'objet dans le catalogue

Pour plus d'informations sur la gestion de la disponibilité des objets dans le catalogue, consultez la documentation.

Organisation

  • type — type d'objet, par exemple, un objet virtuel (virtual_item) ou un lot (bundle)
  • groups — groupes auxquels l'objet appartient
  • order — ordre d'affichage dans le catalogue

Conditions de vente

  • prices — prix en devise réelle ou monnaie virtuelle
  • limits — limites d'achat
  • periods — périodes de disponibilité
  • regions — restrictions régionales

Exemple de structure d'entité principale :

{
  "attributes": [],
  "bundle_type": "virtual_currency_package",
  "content": [
    {
      "description": {
        "en": "Main in-game currency"
      },
      "image_url": "https://.../image.png",
      "name": {
        "en": "Crystals",
        "de": "Kristalle"
      },
      "quantity": 500,
      "sku": "com.xsolla.crystal_2",
      "type": "virtual_currency"
    }
  ],
  "description": {
    "en": "Crystals x500"
  },
  "groups": [],
  "image_url": "https://.../image.png",
  "is_enabled": true,
  "is_free": false,
  "is_show_in_store": true,
  "limits": {
    "per_item": null,
    "per_user": null,
    "recurrent_schedule": null
  },
  "long_description": null,
  "media_list": [],
  "name": {
    "en": "Medium crystal pack"
  },
  "order": 1,
  "periods": [
    {
      "date_from": null,
      "date_until": "2020-08-11T20:00:00+03:00"
    }
  ],
  "prices": [
    {
      "amount": 20,
      "country_iso": "US",
      "currency": "USD",
      "is_default": true,
      "is_enabled": true
    }
  ],
  "regions": [],
  "sku": "com.xsolla.crystal_pack_2",
  "type": "bundle",
  "vc_prices": []
}

Processus d'achat de base

L'API Xsolla vous permet d'implémenter la logique de magasin en jeu, notamment la récupération du catalogue des objets, la gestion du panier, la création de commandes et le suivi de leur statut. Selon le scénario d'intégration, les appels API sont répartis en sections Administrateur et Catalogue, qui utilisent différents schémas d'authentification.

L'exemple suivant montre un processus de base pour configurer et exploiter un magasin, de la création d'objets à l'achat.

Création d'objets et de groupes (Administrateur)

Créez un catalogue des objets pour votre magasin, tels que des objets virtuels, des lots ou de la monnaie virtuelle.

Exemples d'appels API :

Configuration de promotions, chaînes et limites (Administrateur)

Configurez des outils d'acquisition d'utilisateurs et de monétisation, tels que des remises, des bonus, des récompenses quotidiennes ou des chaînes d'offres.

Exemples d'appels API :

Récupération d'informations sur un objet (Client)

Configurez l'affichage des objets dans l'application.

Remarque

N'utilisez pas les appels API de la sous-section Administrateur pour créer un catalogue utilisateur. Ces appels API présentent des limites de taux et ne sont pas destinés au trafic utilisateur.

Exemples d'appels API :

Note

Par défaut, les appels API du catalogue renvoient les objets disponibles dans la boutique au moment de la requête. Pour récupérer les objets inactifs ou à durée limitée, ajoutez le paramètre "show_inactive_time_limited_items": 1 dans la requête du catalogue.

Vente des objets

Vous pouvez vendre des objets en utilisant les méthodes suivantes :

  • Achat rapide — vendre une UGS plusieurs fois.
  • Achat via le panier — l'utilisateur ajoute des objets au panier, supprime des objets et modifie les quantités dans une seule commande.

Si un objet est acheté en utilisant de la monnaie virtuelle au lieu des devises réelles, utilisez l'appel API Créer une commande à partir d'un objet spécifique en monnaie virtuelle. L'interface de paiement n'est pas requise, car le coût est traité lors de l'exécution de l'appel API.

Pour l'achat d'un objet gratuit, utilisez l'appel API Créer une commande avec un bien gratuit spécifique ou l'appel API Créer une commande à partir d'un panier gratuit. L'interface de paiement n'est pas requise, la commande est immédiatement définie sur le statut done.

Achat rapide

Utilisez l'appel API côté client pour créer une commande à partir d'un objet spécifique. L'appel renvoie un jeton utilisé pour ouvrir l'interface de paiement.

Note

Les informations sur les remises sont disponibles pour l'utilisateur uniquement dans l'interface de paiement. Les codes promo ne sont pas pris en charge.

Achat via le panier

La configuration et les achats du panier peuvent être gérés côté client ou côté serveur.

Configuration et achat du panier côté client

Implémentez vous-même la logique d'ajout et de suppression des objets. Avant d'appeler l'API pour configurer un panier, vous ne disposerez pas d'informations sur les promotions qui s'appliqueront à l'achat. Le coût total ainsi que les informations des objets bonus ajoutés ne seront donc pas encore connus.

Implémentez la logique suivante pour le panier :

  1. Après que le joueur a rempli un panier, utilisez l'appel API Remplir le panier d'objets. L'appel renvoie les informations actuelles sur les objets sélectionnés (prix avant et après remises, objets bonus).
  2. Mettez à jour le contenu du panier en fonction des actions utilisateur :
Note

Pour obtenir le statut actuel du panier, utilisez l'appel API Lire le panier de l'utilisateur actuel.
  1. Utilisez l'appel API Créer une commande à partir de tous les objets du panier actuel. L'appel renvoie l'ID de commande et le jeton de paiement. La commande nouvellement créée est définie sur le statut new par défaut.

Configuration et achat du panier côté serveur

Cette approche peut nécessiter davantage de temps pour configurer le panier, car chaque modification doit être effectuée via des appels API.

Implémentez la logique suivante pour le panier :

  1. Après que le joueur a rempli un panier, utilisez l'appel API Remplir le panier d'objets. L'appel renvoie les informations à jour sur les objets sélectionnés (prix avant et après remises, objets bonus).
  2. Utilisez l'appel API Créer une commande à partir de tous les objets du panier actuel. L'appel renvoie l'ID de commande et le jeton de paiement. La commande nouvellement créée est définie sur le statut new par défaut.

Ouverture de l'interface de paiement

Utilisez le jeton renvoyé pour ouvrir l'interface de paiement dans une nouvelle fenêtre. D'autres méthodes d'ouverture de l'interface de paiement sont décrites dans la documentation.

ActionEndpoint
Ouverture dans l'environnement de production.https://secure.xsolla.com/paystation4/?token={token}
Ouverture en mode bac à sable.https://sandbox-secure.xsolla.com/paystation4/?token={token}
Note

Utilisez le mode bac à sable pendant le développement et les tests. Les achats de test n'entraînent aucun débit sur des comptes réels. Vous pouvez utiliser des cartes bancaires de test.

Après le premier paiement réel, une politique stricte du mode bac à sable s'applique. Les paiements en mode bac à sable sont disponibles uniquement pour les utilisateurs spécifiés dans la section Company settings > Users du Compte éditeur.

L'achat de monnaie virtuelle et d'objets en devise réelle n'est possible qu'après la signature d'un contrat de licence avec Xsolla. Pour cela, dans le Compte éditeur, accédez à Agreements & Taxes > Agreements, complétez le formulaire et attendez la validation. Le traitement du contrat peut prendre jusqu'à 3 jours ouvrés.

Pour activer ou désactiver le mode bac à sable, modifiez la valeur du paramètre sandbox dans la requête pour l'achat rapide et l'achat via le panier. Le mode bac à sable est désactivé par défaut.

Statuts de commande possibles :

  • new — commande créée
  • paid — paiement reçu
  • done — objet attribué
  • canceled — commande annulée
  • expired — commande expirée

Suivez le statut de la commande en utilisant l'une des méthodes suivantes :

Pagination

Les appels API qui renvoient de grands ensembles d'enregistrements (par exemple lors de la création d'un catalogue) utilisent la pagination. La pagination est un mécanisme qui limite le nombre d'objets renvoyés dans une seule réponse et permet de récupérer les pages suivantes de manière séquentielle.

Utilisez les paramètres suivants pour contrôler le nombre d'objets renvoyés :

  • limit — nombre d'objets par page
  • offset — indice du premier objet sur la page (la numérotation commence à 0)
  • has_more — indique si une autre page est disponible
  • total_items_count — nombre total d'objets

Exemple de requête :

GET /items?limit=20&offset=40

Exemple de réponse :

{
  "items": [...],
  "has_more": true,
  "total_items_count": 135
}

Il est recommandé d'envoyer des requêtes successives jusqu'à ce que la réponse renvoie has_more = false.

Format de date et d'heure

Les dates et les valeurs temporelles sont transmises au format ISO 8601.

Les valeurs suivantes sont prises en charge :

  • Décalage UTC
  • Valeur null lorsqu'il n'y a pas de restriction temporelle pour l'affichage d'un objet
  • Horodatage Unix (en secondes) utilisé dans certains champs

Format : YYYY-MM-DDTHH:MM:SS±HH:MM

Exemple : 2026-03-16T10:00:00+03:00

Localisation

Xsolla prend en charge la localisation des champs destinés aux utilisateurs, tels que le nom et la description de l'objet. Les valeurs localisées sont transmises sous forme d'objet, où le code de langue est utilisé comme clé. La liste complète des langues prises en charge est disponible dans la documentation.

Champs pris en charge

Les paramètres suivants peuvent être localisés :

  • name
  • description
  • long_description

Format de langue

La clé de la langue peut être spécifiée dans l'un des formats suivants :

  • Code de langue à deux lettres : en, ru
  • Code de langue à cinq lettres : en-US, ru-RU, de-DE

Exemples

Exemple avec un code de langue à deux lettres :

{
  "name": {
    "en": "Starter Pack",
    "ru": "Стартовый набор"
  }
}

Exemple avec un code de langue à cinq lettres :

{
  "description": {
    "en-US": "Premium bundle",
    "de-DE": "Premium-Paket"
  }
}

Format de réponse d'erreur

En cas d'erreur, l'API renvoie un statut HTTP ainsi qu'un corps de réponse au format JSON. La liste complète des erreurs liées au magasin est disponible dans la documentation.

Exemple de réponse :

{
  "errorCode": 1102,
  "errorMessage": "Validation error",
  "statusCode": 422,
  "transactionId": "c9e1a..."
}
  • errorCode — code d'erreur.
  • errorMessage — courte description de l'erreur.
  • statusCode — statut de la réponse HTTP.
  • transactionId — ID de la requête. Retourné uniquement dans certains cas.
  • errorMessageExtended — informations supplémentaires sur l'erreur, telles que les paramètres de la requête. Retournées uniquement dans certains cas.

Exemple de réponse détaillée :

{
  "errorCode": 7001,
  "errorMessage": "Chain not found",
  "errorMessageExtended": {
    "chain_id": "test_chain_id",
    "project_id": "test_project_id",
    "step_number": 2
  },
  "statusCode": 404
}

Codes de statut HTTP courants

  • 400 — requête non valide
  • 401 — erreur d'authentification
  • 403 — permissions insuffisantes
  • 404 — ressource non trouvée
  • 422 — erreur de validation
  • 429 — limite de taux dépassée

Recommandations

  • Gérez ensemble le statut HTTP et le corps de la réponse.
  • Utilisez errorCode pour traiter les erreurs liées à la logique de l'application.
  • Utilisez transactionId pour identifier plus rapidement les requêtes lors de l'analyse des erreurs.
Télécharger la description d'OpenAPI
Langues
Serveurs
https://store.xsolla.com/api/
Mock server
https://xsolla.redocly.app/_mock/fr/api/catalog/

Aperçu

Vous pouvez utiliser des objets virtuels et de la monnaie virtuelle pour créer un magasin en jeu et configurer son affichage pour les utilisateurs. Les types d'objets suivants sont disponibles :

  • Objets virtuels — biens en jeu tels que des armes, des skins ou des boosters. Peuvent être vendus contre des devises réelles ou de la monnaie virtuelle.
  • Monnaie virtuelle — monnaie en jeu utilisée pour acheter des objets virtuels. Peut être vendue contre des devises réelles ou de la monnaie virtuelle.
  • Packages de monnaie virtuelle — quantité fixe de monnaie virtuelle. Peuvent être vendus contre des devises réelles ou de la monnaie virtuelle.

Les groupes sont utilisés pour organiser les objets dans le catalogue. Ils vous permettent de regrouper logiquement les objets et de gérer leur affichage.

Utilisez les appels API de la sous-section Administrateur pour créer, modifier et supprimer des objets.

Utilisez les appels API de la sous-section Catalogue pour récupérer des listes d'objets et les afficher aux utilisateurs.

Note

N'utilisez pas les appels API de la sous-section Administrateur pour créer un catalogue de magasin.

Note

L'appel API Lire la liste des objets virtuels renvoie des données détaillées sur les objets, y compris les prix et les attributs, et prend en charge la pagination. Utilisez-le pour afficher les pages du catalogue dans la vitrine.

L'appel API Lire la liste de tous les objets virtuels renvoie l'UGS, le nom, la description des objets, ainsi que l'ID et le nom du groupe sans pagination. Utilisez-le pour la recherche côté client ou l'indexation.

Pour les achats avec de la monnaie virtuelle, utilisez l'appel API Créer une commande à partir d'un objet spécifique en monnaie virtuelle. L'interface de paiement n'est pas requise, le coût est traité lors de l'exécution de l'appel API.

Exemple de processus d'achat avec de la monnaie virtuelle :

Exemple de processus d'achat avec de la monnaie virtuelle

Opérations
Opérations
Opérations

Aperçu

Game keys are single-use unique alphanumeric codes that grant users access to a game or DLC on gaming platforms. You can sell game keys via a direct link, through the store UI, or via a widget. You can also configure regional restrictions to sell game keys in specific countries. For detailed information, refer to the Game keys packages section.

User authentication is not required to sell game keys — the keys are sent to the email the user specified at checkout. You can configure authentication to enable additional scenarios: personalization, purchase limits, or an entitlement system. For detailed information, refer to the How to set up authentication when selling game keys section.

Game key sales flow:

  1. Create a game using the Create game API call.
  2. Configure regional restrictions.
  3. Upload keys to a game key package using the Upload codes API call to make them available for purchase.
  4. Display the game catalog with prices for the user's region using the Get games list API call.
  5. Create an order. For a fast purchase, you can use the Create order with all items from current cart API call, passing the game key SKU. The response returns a token for opening the payment UI.
  6. Implement the opening of the payment UI to pay for the order.

To receive timely notifications about successful payments and deliver items to the user, set up order status tracking, for example, using webhooks. The keys are sent to the email the user specified at checkout, and the order moves to the done status.

Game keys

Opérations
Opérations
Opérations

Aperçu

Bundles are sets of items sold as a single unit. A bundle can include virtual items, virtual currency, virtual currency packages, game keys, and other bundles. Use bundles to create starter packs, seasonal offers, and special deals.

Use the following API call groups to work with bundles:

  • Use API calls from the Admin subsection to create, update, delete bundles, and manage their visibility.
  • Use API calls from the Catalog subsection to retrieve bundles.

Purchase limits are configured via the limits object when creating or updating a bundle. For more information, refer to the Limits overview. You can also configure regional restrictions to sell items in specific countries.

Note

For detailed information on configuring bundles, refer to the Bundles section.

Bundle management scenario:

  1. Create a bundle using the Create bundle API call. To verify the created bundle, use the Get bundle API call. To retrieve all bundles in the project, use the Get list of bundles API call.
  2. If needed, use the Update bundle API call to modify the bundle content or settings.
  3. Implement bundle display logic in your storefront using the Get list of bundles, Get specified bundle, or Get list of bundles by specified group API call.
  4. Create an order using the Cart and payment section. For example, for a fast purchase you can use the Create order with specified item API call, passing the bundle SKU. The response contains a token for opening the payment UI.
  5. Implement opening the payment UI to pay for the order.
  6. Set up order status tracking, for example using webhooks, to promptly receive data on successfully paid items and grant them to the user.

Bundle management scenario

Opérations

Mettre à jour un lotServer-sideAdministrateur

Requête

Updates a bundle. This call fully replaces the bundle — pass all required fields in the request body, not only the fields you want to change. For more information, refer to the Bundles section.

Notice

All items in the content array must be created in your project in advance. The system returns an error if the specified SKU doesn't exist.
Sécurité
basicAuth
Chemin
project_idintegerobligatoire

ID du projet. Vous trouverez ce paramètre dans le Compte éditeur, à côté du nom du projet, ainsi que dans l'URL affichée dans la barre d'adresse du navigateur lorsque vous utilisez ce projet. L'URL présente le format suivant : https://publisher.xsolla.com/<merchant_id>/projects/<project_id>.

Exemple: 44056
skustringobligatoire

UGS du lot.

Exemple: kg_1
Corpsapplication/jsonobligatoire

Objet contenant des données du lot

skustring[ 1 .. 255 ] characters^[a-zA-Z0-9_\-–.]*$obligatoire

ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.

name(object or null)obligatoire

Conteneur objet contenant les localisations du nom de l'objet (item). Il accepte deux formats de codes de langue : les codes à deux lettres minuscules (comme en) et les codes régionaux à cinq caractères (comme en-US). Les deux formats sont valides en entrée, mais les réponses utilisent toujours le format à deux lettres. Si les deux variantes sont fournies pour une même langue (par exemple, en et en-US), seule la dernière est conservée. Consultez la documentation pour la liste complète des langues prises en charge.

Any of:

Codes de langue à deux lettres minuscules.

name.​enstring or null

Anglais

name.​arstring or null

Arabe

name.​bgstring or null

Bulgare

name.​cnstring or null

Chinois (simplifié)

name.​csstring or null

Tchèque

name.​destring or null

Allemand

name.​esstring or null

Espagnol (Espagne)

name.​frstring or null

Français

name.​hestring or null

Hébreu

name.​itstring or null

Italien

name.​jastring or null

Japonais

name.​kostring or null

Coréen

name.​plstring or null

Polonais

name.​ptstring or null

Portugais

name.​rostring or null

Roumain

name.​rustring or null

Russe

name.​thstring or null

Thaï

name.​trstring or null

Turc

name.​twstring or null

Chinois (traditionnel)

name.​vistring or null

Vietnamien

name.​kmstring or null

Khmer

name.​idstring or null

Indonésien

name.​lostring or null

Laotien

name.​mystring or null

Birman

name.​phstring or null

Philippin

name.​nestring or null

Népalais

groupsArray of strings

Groupes auxquels l'objet appartient.

Note. La valeur de la chaîne correspond à l'`external_id` du groupe.
attributesArray of objects<= 20 items

Liste des attributs.

Attention. La création de plus de 20 attributs pour un objet n'est pas autorisée. Toute tentative de dépassement entraîne une erreur.
attributes[].​external_idstring[ 1 .. 255 ] characters^[a-zA-Z0-9-_]+$obligatoire

ID unique de l'attribut. Le external_id ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des tirets et des traits bas.

attributes[].​nameobject

Objet contenant des versions localisées du nom de l'attribut. Les clés sont spécifiées selon la norme ISO 3166-1.

attributes[].​name.​property name*stringpropriété supplémentaire
attributes[].​valuesArray of objectsobligatoire
Attention. La création de plus de 6 valeurs pour un attribut n'est pas autorisée. Toute tentative de dépassement entraînera une erreur.
Exemple: [{"external_id":"strategy","value":{"en":"Strategy","de":"Strategie"}},{"external_id":"action","value":{"en":"Action","de":"Aktion"}}]
attributes[].​values[].​external_idstring[ 1 .. 255 ] characters^[-_.\d\w]+$obligatoire

ID unique de la valeur d'un attribut. Le external_id ne peut comprendre que des caractères alphanumériques latins minuscules, des tirets et des tirets bas.

Exemple: "value_external_id"
attributes[].​values[].​valueobjectobligatoire

Objet contenant des versions localisées du nom de la valeur. Les clés sont spécifiées selon la norme ISO 3166-1.

attributes[].​values[].​value.​property name*stringpropriété supplémentaire
description(object or null)obligatoire

Conteneur objet contenant les localisations de la description de l'objet (item). Il accepte deux formats de codes de langue : les codes à deux lettres minuscules (comme en) et les codes régionaux à cinq caractères (comme en-US). Les deux formats sont valides en entrée, mais les réponses utilisent toujours le format à deux lettres. Si les deux variantes sont fournies pour une même langue (par exemple, en et en-US), seule la dernière est conservée. Consultez la documentation pour la liste complète des langues prises en charge.

Any of:

Codes de langue à deux lettres minuscules.

description.​enstring or null

Anglais

description.​arstring or null

Arabe

description.​bgstring or null

Bulgare

description.​cnstring or null

Chinois (simplifié)

description.​csstring or null

Tchèque

description.​destring or null

Allemand

description.​esstring or null

Espagnol (Espagne)

description.​frstring or null

Français

description.​hestring or null

Hébreu

description.​itstring or null

Italien

description.​jastring or null

Japonais

description.​kostring or null

Coréen

description.​plstring or null

Polonais

description.​ptstring or null

Portugais

description.​rostring or null

Roumain

description.​rustring or null

Russe

description.​thstring or null

Thaï

description.​trstring or null

Turc

description.​twstring or null

Chinois (traditionnel)

description.​vistring or null

Vietnamien

description.​kmstring or null

Khmer

description.​idstring or null

Indonésien

description.​lostring or null

Laotien

description.​mystring or null

Birman

description.​phstring or null

Philippin

description.​nestring or null

Népalais

long_description(object or null)

Conteneur objet contenant les localisations de la description complète de l'objet (item). Il accepte deux formats de codes de langue : les codes à deux lettres minuscules (comme en) et les codes régionaux à cinq caractères (comme en-US). Les deux formats sont valides en entrée, mais les réponses utilisent toujours le format à deux lettres. Si les deux variantes sont fournies pour une même langue (par exemple, en et en-US), seule la dernière est conservée. Consultez la documentation pour la liste complète des langues prises en charge.

Any of:

Codes de langue à deux lettres minuscules.

long_description.​enstring or null

Anglais

long_description.​arstring or null

Arabe

long_description.​bgstring or null

Bulgare

long_description.​cnstring or null

Chinois (simplifié)

long_description.​csstring or null

Tchèque

long_description.​destring or null

Allemand

long_description.​esstring or null

Espagnol (Espagne)

long_description.​frstring or null

Français

long_description.​hestring or null

Hébreu

long_description.​itstring or null

Italien

long_description.​jastring or null

Japonais

long_description.​kostring or null

Coréen

long_description.​plstring or null

Polonais

long_description.​ptstring or null

Portugais

long_description.​rostring or null

Roumain

long_description.​rustring or null

Russe

long_description.​thstring or null

Thaï

long_description.​trstring or null

Turc

long_description.​twstring or null

Chinois (traditionnel)

long_description.​vistring or null

Vietnamien

long_description.​kmstring or null

Khmer

long_description.​idstring or null

Indonésien

long_description.​lostring or null

Laotien

long_description.​mystring or null

Birman

long_description.​phstring or null

Philippin

long_description.​nestring or null

Népalais

image_urlstring or null

URL de l'image. Pour garantir un affichage correct et un chargement rapide dans l'interface de paiement, consultez les recommandations suivantes pour les images et les URL :

  • Formats pris en charge : WebP (recommandé), PNG, JPG.
  • Taille du fichier : ≤ 50 Kb (WebP) ou ≤ 150 Kb (PNG et JPG).
  • Dimensions : 280 x 280 px.
  • Espace colorimétrique : sRGB.
  • Protocole : HTTPS avec mise en cache longue durée pour les URL versionnées.

pricesArray of objects

Prix en devises réelles.

prices[].​amountstring^\d*\.?\d*$obligatoire

Prix de l'objet.

prices[].​currencystringobligatoire

Devise du prix de l'objet. Code à trois lettres selon ISO 4217.

prices[].​is_defaultbooleanobligatoire

Le prix par défaut est utilisé pour constituer le catalogue si aucun prix n'est spécifié dans la devise de l'utilisateur.

prices[].​is_enabledbooleanobligatoire

Le prix est activé.

prices[].​country_isostring or null

Pays où ce prix est disponible. Code à deux lettres selon la norme ISO 3166-1 alpha 2.

Exemple: "US"
vc_pricesArray of objects or null
Any of:
vc_prices[].​skustring

ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.

Exemple: "gold"
vc_prices[].​amountintegerobligatoire
vc_prices[].​is_defaultbooleanobligatoire
vc_prices[].​is_enabledbooleanobligatoire
bundle_typestring

Type de lot. Utilisez standard pour créer un lot contenant des objets et spécifiez les UGS des objet inclus. Utilisez partner_side_content pour créer un lot vide auquel vous ajouterez des objets de votre côté via un webhook. Ce type est réservé à la Personnalisation du catalogue côté partenaire.

Enum"standard""partner_side_content"
contentArray of objectsnon-empty

Array of items included in the bundle. Each entry specifies the item SKU and quantity. All items must be created in your project in advance. The system returns an error if the specified SKU doesn't exist.

Exemple: [{"sku":"com.xsolla.kg_1","quantity":1}]
content[].​skustring[ 1 .. 255 ] characters^[a-zA-Z0-9_\-–.]*$obligatoire

SKU of an item to include in the bundle. The item must be created in your project in advance. The system returns an error if the specified SKU doesn't exist. Allowed characters: a–z, A–Z, 0–9, period (.), hyphen (-), underscore (_).

Exemple: "com.xsolla.kg_1"
content[].​quantityinteger>= 1

Quantité des objets sélectionnés dans le lot.

Par défaut 1
Exemple: 1
is_freeboolean

Détermine la gratuité de l'objet.

is_paid_randomized_rewardboolean

Si l’objet est une récompense payante aléatoire (par exemple, une boîte à butin).

is_enabledboolean

Si ce paramètre est désactivé, l'objet ne peut pas être trouvé ni acheté.

is_show_in_storeboolean

L'objet est disponible à l'achat.

media_listArray of objects or null
Any of:

Ressources supplémentaires du lot.

media_list[].​typestring

Type de média : image/video.

Enum"image""video"
Exemple: "image"
media_list[].​urlstring

Fichier de ressources.

Exemple: "https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg"
orderinteger

Ordre de priorité des lots dans la liste.

regionsArray of objects
regions[].​idinteger>= 1
Exemple: 1
limitsobject

Limites d'objets.

limits.​per_usernull or integer or object

Limites d'objets pour un utilisateur spécifique.

Any of:

Limites d'objets pour un utilisateur spécifique.

null
limits.​per_iteminteger or null

Limites globales d'objets.

limits.​recurrent_scheduleobject or null

Délai d'actualisation des limites.

limits.​recurrent_schedule.​per_userobject

Réinitialisation des limites d'achat effectuée selon l'intervalle de temps spécifié, en heures.

One of:

Réinitialisation des limites d'achat effectuée selon l'intervalle de temps spécifié, en heures.

limits.​recurrent_schedule.​per_user.​interval_typestringobligatoire

Délai d'actualisation récurrent.

Valeur"daily"
limits.​recurrent_schedule.​per_user.​timestring((0[0-9]|1[0-9]|2[0-3]):00:00)(\+|-)(0[0-9]|1...obligatoire

Heure d'actualisation des limites dans le fuseau horaire souhaité (arrondie en heures).

Exemple: "02:00:00+03:00"
periodsArray of objects or null

Période de vente d'objets.

periods[].​date_fromstring(date-time)

Date de mise en vente de l'objet spécifié.

Exemple: "2020-08-11T10:00:00+03:00"
periods[].​date_untilstring or null(date-time)

Date de retrait de la vente de l'objet spécifié. Peut prendre la valeur null.

Exemple: "2020-08-11T20:00:00+03:00"
custom_attributesobject(json)<= 500 characters

Un JSON contenant les attributs de l'objet et leurs valeurs. Les attributs permettent d'ajouter des informations supplémentaires aux objets, telles que le niveau requis du joueur pour utiliser l'objet. Les attributs enrichissent la logique interne de votre jeu et sont accessibles via des méthodes GET et des webhooks spécifiques.

curl -i -X PUT \
  -u <username>:<password> \
  https://store.xsolla.com/api/v2/project/44056/admin/items/bundle/sku/kg_1 \
  -H 'Content-Type: application/json' \
  -d '{
    "sku": "com.xsolla.armour_chest_1",
    "name": {
      "en": "Chest of armour",
      "de": "Brustpanzer"
    },
    "is_enabled": true,
    "is_free": true,
    "is_paid_randomized_reward": true,
    "order": 1,
    "long_description": {
      "en": "Chest of armour for soldiers",
      "de": "Brustpanzer für Soldaten"
    },
    "description": {
      "en": "Chest of armour for soldiers",
      "de": "Brustpanzer für Soldaten"
    },
    "image_url": "https://picture.bundle-with-many-stuff.png",
    "media_list": [
      {
        "type": "image",
        "url": "https://test.com/image0"
      },
      {
        "type": "image",
        "url": "https://test.com/image1"
      }
    ],
    "groups": [
      "chests"
    ],
    "attributes": [
      {
        "external_id": "class",
        "name": {
          "en": "Class"
        },
        "values": [
          {
            "external_id": "soldier",
            "value": {
              "en": "Soldier"
            }
          },
          {
            "external_id": "officer",
            "value": {
              "en": "Officer"
            }
          }
        ]
      }
    ],
    "prices": [
      {
        "currency": "USD",
        "amount": "9.99",
        "is_default": true,
        "is_enabled": true
      },
      {
        "currency": "EUR",
        "amount": "9.99",
        "is_default": false,
        "is_enabled": true
      }
    ],
    "vc_prices": [],
    "content": [
      {
        "sku": "com.xsolla.iron_gloves_1",
        "quantity": 1
      },
      {
        "sku": "com.xsolla.iron_boots_1",
        "quantity": 1
      },
      {
        "sku": "com.xsolla.iron_shield_1",
        "quantity": 1
      },
      {
        "sku": "com.xsolla.iron_armour_1",
        "quantity": 1
      },
      {
        "sku": "com.xsolla.iron_helmet_1",
        "quantity": 1
      }
    ],
    "limits": {
      "per_user": null,
      "per_item": null
    },
    "periods": [
      {
        "date_from": "2020-08-11T10:00:00+03:00",
        "date_until": "2020-08-11T20:00:00+03:00"
      }
    ],
    "custom_attributes": {
      "type": "lootbox",
      "purchased": 0
    }
  }'

Réponses

Le lot a été mis à jour avec succès.

Corps
Réponse
Aucun contenu

Supprimer un lotServer-sideAdministrateur

Requête

Supprime un lot.

Sécurité
basicAuth
Chemin
project_idintegerobligatoire

ID du projet. Vous trouverez ce paramètre dans le Compte éditeur, à côté du nom du projet, ainsi que dans l'URL affichée dans la barre d'adresse du navigateur lorsque vous utilisez ce projet. L'URL présente le format suivant : https://publisher.xsolla.com/<merchant_id>/projects/<project_id>.

Exemple: 44056
skustringobligatoire

UGS du lot.

Exemple: kg_1
curl -i -X DELETE \
  -u <username>:<password> \
  https://store.xsolla.com/api/v2/project/44056/admin/items/bundle/sku/kg_1

Réponses

Le lot a été supprimé avec succès.

Corps
Réponse
Aucun contenu

Requête

Récupère des informations sur un lot au sein d'un projet à des fins d'administration.

Note

N'utilisez pas cet endpoint pour créer un catalogue de magasin.
Sécurité
basicAuth
Chemin
project_idintegerobligatoire

ID du projet. Vous trouverez ce paramètre dans le Compte éditeur, à côté du nom du projet, ainsi que dans l'URL affichée dans la barre d'adresse du navigateur lorsque vous utilisez ce projet. L'URL présente le format suivant : https://publisher.xsolla.com/<merchant_id>/projects/<project_id>.

Exemple: 44056
skustringobligatoire

UGS du lot.

Exemple: kg_1
curl -i -X GET \
  -u <username>:<password> \
  https://store.xsolla.com/api/v2/project/44056/admin/items/bundle/sku/kg_1

Réponses

Le lot spécifié a été reçu avec succès.

Corpsapplication/json
item_idinteger[ 1 .. 255 ] characters

Internal ID unique de l'objet.

skustring[ 1 .. 255 ] characters^[a-zA-Z0-9_\-–.]*$

ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.

name(object or null)

Conteneur objet contenant les localisations du nom de l'objet (item). Il accepte deux formats de codes de langue : les codes à deux lettres minuscules (comme en) et les codes régionaux à cinq caractères (comme en-US). Les deux formats sont valides en entrée, mais les réponses utilisent toujours le format à deux lettres. Si les deux variantes sont fournies pour une même langue (par exemple, en et en-US), seule la dernière est conservée. Consultez la documentation pour la liste complète des langues prises en charge.

Any of:

Codes de langue à deux lettres minuscules.

name.​enstring or null

Anglais

name.​arstring or null

Arabe

name.​bgstring or null

Bulgare

name.​cnstring or null

Chinois (simplifié)

name.​csstring or null

Tchèque

name.​destring or null

Allemand

name.​esstring or null

Espagnol (Espagne)

name.​frstring or null

Français

name.​hestring or null

Hébreu

name.​itstring or null

Italien

name.​jastring or null

Japonais

name.​kostring or null

Coréen

name.​plstring or null

Polonais

name.​ptstring or null

Portugais

name.​rostring or null

Roumain

name.​rustring or null

Russe

name.​thstring or null

Thaï

name.​trstring or null

Turc

name.​twstring or null

Chinois (traditionnel)

name.​vistring or null

Vietnamien

name.​kmstring or null

Khmer

name.​idstring or null

Indonésien

name.​lostring or null

Laotien

name.​mystring or null

Birman

name.​phstring or null

Philippin

name.​nestring or null

Népalais

attributesArray of objects

Liste des attributs.

Exemple: [{"external_id":"attribute_external_id","name":{"en":"Attribute name","de":"Attributname"},"values":[{"external_id":"value_1","name":{"en":"value 1","de":"wert 1"}},{"external_id":"value_2","name":{"en":"value 2","de":"wert 2"}}]}]
attributes[].​external_idstring[ 1 .. 255 ] characters^[a-zA-Z0-9-_]+$obligatoire

ID unique de l'attribut. Le external_id ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des tirets et des traits bas.

Exemple: "attribute_external_id"
attributes[].​nameobject

Objet contenant des versions localisées du nom de l'attribut. Les clés sont spécifiées selon la norme ISO 3166-1.

Exemple: {"en":"Attribute name","de":"Attributname"}
attributes[].​name.​property name*stringpropriété supplémentaire
attributes[].​valuesArray of objectsobligatoire
Exemple: [{"external_id":"value_1","name":{"en":"value 1","de":"wert 1"}},{"external_id":"value_2","name":{"en":"value 2","de":"wert 2"}}]
attributes[].​values[].​external_idstring[ 1 .. 255 ] characters^[-_.\d\w]+$obligatoire

ID unique de la valeur d'un attribut. Le external_id ne peut comprendre que des caractères alphanumériques latins minuscules, des tirets et des tirets bas.

Exemple: "value_external_id"
attributes[].​values[].​valueobjectobligatoire

Objet contenant des versions localisées du nom de la valeur. Les clés sont spécifiées selon la norme ISO 3166-1.

attributes[].​values[].​value.​property name*stringpropriété supplémentaire
typestring

Type d'objet.

bundle_typestring

Type de lot. Renvoyé si le type d'objet est un lot.

Enum"standard""virtual_currency_package""partner_side_content"
description(object or null)

Conteneur objet contenant les localisations de la description de l'objet (item). Il accepte deux formats de codes de langue : les codes à deux lettres minuscules (comme en) et les codes régionaux à cinq caractères (comme en-US). Les deux formats sont valides en entrée, mais les réponses utilisent toujours le format à deux lettres. Si les deux variantes sont fournies pour une même langue (par exemple, en et en-US), seule la dernière est conservée. Consultez la documentation pour la liste complète des langues prises en charge.

Any of:

Codes de langue à deux lettres minuscules.

description.​enstring or null

Anglais

description.​arstring or null

Arabe

description.​bgstring or null

Bulgare

description.​cnstring or null

Chinois (simplifié)

description.​csstring or null

Tchèque

description.​destring or null

Allemand

description.​esstring or null

Espagnol (Espagne)

description.​frstring or null

Français

description.​hestring or null

Hébreu

description.​itstring or null

Italien

description.​jastring or null

Japonais

description.​kostring or null

Coréen

description.​plstring or null

Polonais

description.​ptstring or null

Portugais

description.​rostring or null

Roumain

description.​rustring or null

Russe

description.​thstring or null

Thaï

description.​trstring or null

Turc

description.​twstring or null

Chinois (traditionnel)

description.​vistring or null

Vietnamien

description.​kmstring or null

Khmer

description.​idstring or null

Indonésien

description.​lostring or null

Laotien

description.​mystring or null

Birman

description.​phstring or null

Philippin

description.​nestring or null

Népalais

long_description(object or null)

Conteneur objet contenant les localisations de la description complète de l'objet (item). Il accepte deux formats de codes de langue : les codes à deux lettres minuscules (comme en) et les codes régionaux à cinq caractères (comme en-US). Les deux formats sont valides en entrée, mais les réponses utilisent toujours le format à deux lettres. Si les deux variantes sont fournies pour une même langue (par exemple, en et en-US), seule la dernière est conservée. Consultez la documentation pour la liste complète des langues prises en charge.

Any of:

Codes de langue à deux lettres minuscules.

long_description.​enstring or null

Anglais

long_description.​arstring or null

Arabe

long_description.​bgstring or null

Bulgare

long_description.​cnstring or null

Chinois (simplifié)

long_description.​csstring or null

Tchèque

long_description.​destring or null

Allemand

long_description.​esstring or null

Espagnol (Espagne)

long_description.​frstring or null

Français

long_description.​hestring or null

Hébreu

long_description.​itstring or null

Italien

long_description.​jastring or null

Japonais

long_description.​kostring or null

Coréen

long_description.​plstring or null

Polonais

long_description.​ptstring or null

Portugais

long_description.​rostring or null

Roumain

long_description.​rustring or null

Russe

long_description.​thstring or null

Thaï

long_description.​trstring or null

Turc

long_description.​twstring or null

Chinois (traditionnel)

long_description.​vistring or null

Vietnamien

long_description.​kmstring or null

Khmer

long_description.​idstring or null

Indonésien

long_description.​lostring or null

Laotien

long_description.​mystring or null

Birman

long_description.​phstring or null

Philippin

long_description.​nestring or null

Népalais

image_urlstring or null

URL de l'image. Pour garantir un affichage correct et un chargement rapide dans l'interface de paiement, consultez les recommandations suivantes pour les images et les URL :

  • Formats pris en charge : WebP (recommandé), PNG, JPG.
  • Taille du fichier : ≤ 50 Kb (WebP) ou ≤ 150 Kb (PNG et JPG).
  • Dimensions : 280 x 280 px.
  • Espace colorimétrique : sRGB.
  • Protocole : HTTPS avec mise en cache longue durée pour les URL versionnées.

is_freeboolean

Détermine la gratuité de l'objet.

is_paid_randomized_rewardboolean

Si l’objet est une récompense payante aléatoire (par exemple, une boîte à butin).

groupsArray of objects

Groupes auxquels l'objet appartient.

groups[].​external_idstring
Exemple: "horror"
groups[].​nameobject

Nom de l'objet. Doit comprendre des paires clé/valeur où la clé est une région au format "^[a-z]{2}", la valeur est une chaîne.

Par défaut {"en":"Horror"}
Exemple: {"en":"Horror","de":"Horror"}
groups[].​name.​property name*stringpropriété supplémentaire
pricesArray of objects

Prix en devises réelles.

prices[].​amountstring^\d*\.?\d*$obligatoire

Prix de l'objet.

prices[].​currencystringobligatoire

Devise du prix de l'objet. Code à trois lettres selon ISO 4217.

prices[].​is_defaultbooleanobligatoire

Le prix par défaut est utilisé pour constituer le catalogue si aucun prix n'est spécifié dans la devise de l'utilisateur.

prices[].​is_enabledbooleanobligatoire

Le prix est activé.

prices[].​country_isostring or null

Pays où ce prix est disponible. Code à deux lettres selon la norme ISO 3166-1 alpha 2.

Exemple: "US"
virtual_pricesArray of objects
virtual_prices[].​skustring[ 1 .. 255 ] characters^[a-zA-Z0-9_\-–.]*$

ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.

virtual_prices[].​name(object or null)

Conteneur objet contenant les localisations du nom de l'objet (item). Il accepte deux formats de codes de langue : les codes à deux lettres minuscules (comme en) et les codes régionaux à cinq caractères (comme en-US). Les deux formats sont valides en entrée, mais les réponses utilisent toujours le format à deux lettres. Si les deux variantes sont fournies pour une même langue (par exemple, en et en-US), seule la dernière est conservée. Consultez la documentation pour la liste complète des langues prises en charge.

Any of:

Codes de langue à deux lettres minuscules.

virtual_prices[].​name.​enstring or null

Anglais

virtual_prices[].​name.​arstring or null

Arabe

virtual_prices[].​name.​bgstring or null

Bulgare

virtual_prices[].​name.​cnstring or null

Chinois (simplifié)

virtual_prices[].​name.​csstring or null

Tchèque

virtual_prices[].​name.​destring or null

Allemand

virtual_prices[].​name.​esstring or null

Espagnol (Espagne)

virtual_prices[].​name.​frstring or null

Français

virtual_prices[].​name.​hestring or null

Hébreu

virtual_prices[].​name.​itstring or null

Italien

virtual_prices[].​name.​jastring or null

Japonais

virtual_prices[].​name.​kostring or null

Coréen

virtual_prices[].​name.​plstring or null

Polonais

virtual_prices[].​name.​ptstring or null

Portugais

virtual_prices[].​name.​rostring or null

Roumain

virtual_prices[].​name.​rustring or null

Russe

virtual_prices[].​name.​thstring or null

Thaï

virtual_prices[].​name.​trstring or null

Turc

virtual_prices[].​name.​twstring or null

Chinois (traditionnel)

virtual_prices[].​name.​vistring or null

Vietnamien

virtual_prices[].​name.​kmstring or null

Khmer

virtual_prices[].​name.​idstring or null

Indonésien

virtual_prices[].​name.​lostring or null

Laotien

virtual_prices[].​name.​mystring or null

Birman

virtual_prices[].​name.​phstring or null

Philippin

virtual_prices[].​name.​nestring or null

Népalais

virtual_prices[].​typestring

Type de monnaie virtuelle.

virtual_prices[].​description(object or null)

Conteneur objet contenant les localisations de la description de l'objet (item). Il accepte deux formats de codes de langue : les codes à deux lettres minuscules (comme en) et les codes régionaux à cinq caractères (comme en-US). Les deux formats sont valides en entrée, mais les réponses utilisent toujours le format à deux lettres. Si les deux variantes sont fournies pour une même langue (par exemple, en et en-US), seule la dernière est conservée. Consultez la documentation pour la liste complète des langues prises en charge.

Any of:

Codes de langue à deux lettres minuscules.

virtual_prices[].​description.​enstring or null

Anglais

virtual_prices[].​description.​arstring or null

Arabe

virtual_prices[].​description.​bgstring or null

Bulgare

virtual_prices[].​description.​cnstring or null

Chinois (simplifié)

virtual_prices[].​description.​csstring or null

Tchèque

virtual_prices[].​description.​destring or null

Allemand

virtual_prices[].​description.​esstring or null

Espagnol (Espagne)

virtual_prices[].​description.​frstring or null

Français

virtual_prices[].​description.​hestring or null

Hébreu

virtual_prices[].​description.​itstring or null

Italien

virtual_prices[].​description.​jastring or null

Japonais

virtual_prices[].​description.​kostring or null

Coréen

virtual_prices[].​description.​plstring or null

Polonais

virtual_prices[].​description.​ptstring or null

Portugais

virtual_prices[].​description.​rostring or null

Roumain

virtual_prices[].​description.​rustring or null

Russe

virtual_prices[].​description.​thstring or null

Thaï

virtual_prices[].​description.​trstring or null

Turc

virtual_prices[].​description.​twstring or null

Chinois (traditionnel)

virtual_prices[].​description.​vistring or null

Vietnamien

virtual_prices[].​description.​kmstring or null

Khmer

virtual_prices[].​description.​idstring or null

Indonésien

virtual_prices[].​description.​lostring or null

Laotien

virtual_prices[].​description.​mystring or null

Birman

virtual_prices[].​description.​phstring or null

Philippin

virtual_prices[].​description.​nestring or null

Népalais

virtual_prices[].​image_urlstring or null

URL de l'image. Pour garantir un affichage correct et un chargement rapide dans l'interface de paiement, consultez les recommandations suivantes pour les images et les URL :

  • Formats pris en charge : WebP (recommandé), PNG, JPG.
  • Taille du fichier : ≤ 50 Kb (WebP) ou ≤ 150 Kb (PNG et JPG).
  • Dimensions : 280 x 280 px.
  • Espace colorimétrique : sRGB.
  • Protocole : HTTPS avec mise en cache longue durée pour les URL versionnées.

virtual_prices[].​amountstring^\d*\.?\d*$

Prix de l'objet avec remise.

virtual_prices[].​is_defaultboolean

Indique si le prix est le prix par défaut de l'objet.

media_listArray of objects or null
Any of:

Ressources supplémentaires du lot.

media_list[].​typestring

Type de média : image/video.

Enum"image""video"
Exemple: "image"
media_list[].​urlstring

Fichier de ressources.

Exemple: "https://cdn3.xsolla.com/img/misc/images/71ab1e12126f2103e1868076f0acb21a.jpg"
orderinteger

Ordre de priorité des lots dans la liste.

is_enabledboolean

Si ce paramètre est désactivé, l'objet ne peut pas être trouvé ni acheté.

is_show_in_storeboolean

L'objet est disponible à l'achat.

regionsArray of objects
regions[].​idinteger>= 1
Exemple: 1
contentArray of objects
content[].​skustring[ 1 .. 255 ] characters^[a-zA-Z0-9_\-–.]*$

ID unique de l'objet. L'UGS ne peut comprendre que des caractères alphanumériques latins minuscules et majuscules, des points, des tirets et des traits bas.

content[].​name(object or null)

Conteneur objet contenant les localisations du nom de l'objet (item). Il accepte deux formats de codes de langue : les codes à deux lettres minuscules (comme en) et les codes régionaux à cinq caractères (comme en-US). Les deux formats sont valides en entrée, mais les réponses utilisent toujours le format à deux lettres. Si les deux variantes sont fournies pour une même langue (par exemple, en et en-US), seule la dernière est conservée. Consultez la documentation pour la liste complète des langues prises en charge.

Any of:

Codes de langue à deux lettres minuscules.

content[].​name.​enstring or null

Anglais

content[].​name.​arstring or null

Arabe

content[].​name.​bgstring or null

Bulgare

content[].​name.​cnstring or null

Chinois (simplifié)

content[].​name.​csstring or null

Tchèque

content[].​name.​destring or null

Allemand

content[].​name.​esstring or null

Espagnol (Espagne)

content[].​name.​frstring or null

Français

content[].​name.​hestring or null

Hébreu

content[].​name.​itstring or null

Italien

content[].​name.​jastring or null

Japonais

content[].​name.​kostring or null

Coréen

content[].​name.​plstring or null

Polonais

content[].​name.​ptstring or null

Portugais

content[].​name.​rostring or null

Roumain

content[].​name.​rustring or null

Russe

content[].​name.​thstring or null

Thaï

content[].​name.​trstring or null

Turc

content[].​name.​twstring or null

Chinois (traditionnel)

content[].​name.​vistring or null

Vietnamien

content[].​name.​kmstring or null

Khmer

content[].​name.​idstring or null

Indonésien

content[].​name.​lostring or null

Laotien

content[].​name.​mystring or null

Birman

content[].​name.​phstring or null

Philippin

content[].​name.​nestring or null

Népalais

content[].​typestring

Type d'objet.

content[].​description(object or null)

Conteneur objet contenant les localisations de la description de l'objet (item). Il accepte deux formats de codes de langue : les codes à deux lettres minuscules (comme en) et les codes régionaux à cinq caractères (comme en-US). Les deux formats sont valides en entrée, mais les réponses utilisent toujours le format à deux lettres. Si les deux variantes sont fournies pour une même langue (par exemple, en et en-US), seule la dernière est conservée. Consultez la documentation pour la liste complète des langues prises en charge.

Any of:

Codes de langue à deux lettres minuscules.

content[].​description.​enstring or null

Anglais

content[].​description.​arstring or null

Arabe

content[].​description.​bgstring or null

Bulgare

content[].​description.​cnstring or null

Chinois (simplifié)

content[].​description.​csstring or null

Tchèque

content[].​description.​destring or null

Allemand

content[].​description.​esstring or null

Espagnol (Espagne)

content[].​description.​frstring or null

Français

content[].​description.​hestring or null

Hébreu

content[].​description.​itstring or null

Italien

content[].​description.​jastring or null

Japonais

content[].​description.​kostring or null

Coréen

content[].​description.​plstring or null

Polonais

content[].​description.​ptstring or null

Portugais

content[].​description.​rostring or null

Roumain

content[].​description.​rustring or null

Russe

content[].​description.​thstring or null

Thaï

content[].​description.​trstring or null

Turc

content[].​description.​twstring or null

Chinois (traditionnel)

content[].​description.​vistring or null

Vietnamien

content[].​description.​kmstring or null

Khmer

content[].​description.​idstring or null

Indonésien

content[].​description.​lostring or null

Laotien

content[].​description.​mystring or null

Birman

content[].​description.​phstring or null

Philippin

content[].​description.​nestring or null

Népalais

content[].​image_urlstring or null

URL de l'image. Pour garantir un affichage correct et un chargement rapide dans l'interface de paiement, consultez les recommandations suivantes pour les images et les URL :

  • Formats pris en charge : WebP (recommandé), PNG, JPG.
  • Taille du fichier : ≤ 50 Kb (WebP) ou ≤ 150 Kb (PNG et JPG).
  • Dimensions : 280 x 280 px.
  • Espace colorimétrique : sRGB.
  • Protocole : HTTPS avec mise en cache longue durée pour les URL versionnées.

content[].​quantityinteger>= 1

Quantité du type d'objet dans le lot.

Par défaut 1
limitsobject or null

Limites d'objets.

limits.​per_userobject or null

Limites d'objets pour un utilisateur spécifique.

limits.​per_user.​totalinteger

Nombre maximal d'objets qu'un utilisateur unique peut acheter.

limits.​per_user.​limit_exceeded_visibilitystring

Détermine la visibilité de l'objet dans le catalogue une fois la limite d'achat atteinte, jusqu'à la prochaine réinitialisation de la limite.

S'applique aux objets pour lesquels des réinitialisations de limite récurrentes sont configurées dans le tableau recurrent_schedule.

Si aucune réinitialisation de limite n'est configurée, l'objet n'apparaît plus dans le catalogue une fois la limite d'achat atteinte, quelle que soit la valeur de limit_exceeded_visibility.

Valeurs possibles :

  • show — L'objet est renvoyé dans les appels API de récupération du catalogue après avoir atteint la limite d'achat. Dans les appels côté client, une fois la limite atteinte, l'objet est renvoyé avec l'indicateur can_be_bought: false. La prochaine date de réinitialisation est renvoyée dans reset_next_date.
  • hide — L'objet n'est pas renvoyé dans les appels API de récupération du catalogue après avoir atteint la limite d'achat, jusqu'à la réinitialisation de la limite.
Enum"show""hide"
limits.​per_itemobject or null

Limites globales d'objets.

limits.​per_item.​totalinteger

Nombre maximal d'objets que tous les utilisateurs peuvent acheter.

limits.​per_item.​availableinteger

Nombre d'objets restants que tous les utilisateurs peuvent acheter.

limits.​per_item.​reservedinteger
limits.​per_item.​soldinteger
limits.​recurrent_scheduleobject or null

Délai d'actualisation des limites.

limits.​recurrent_schedule.​per_userobject

Délai d'actualisation des limites pour un utilisateur.

One of:

Type quotidien d'actualisation des limites pour l'utilisateur.

limits.​recurrent_schedule.​per_user.​interval_typestring

Type de délai d'actualisation récurrent.

Valeur"daily"
limits.​recurrent_schedule.​per_user.​timestring(full-time)

Heure d'actualisation des limites dans le fuseau horaire souhaité (arrondie en heures).

Exemple: "11:00:00+03:00"
limits.​recurrent_schedule.​per_user.​reset_next_dateinteger

Date et heure de réinitialisation des limites (horodatage Unix).

Exemple: 1677553200
limits.​recurrent_schedule.​per_user.​displayable_reset_start_datestring(date-time)

Date et heure de la première réinitialisation des limites (ISO 8601).

Exemple: "2023-02-28T11:00:00+08:00"
limits.​recurrent_schedule.​per_user.​displayable_reset_next_datestring(date-time)

Date et heure de réinitialisation des limites (ISO 8601).

Exemple: "2023-02-28T11:00:00+08:00"
periodsArray of objects

Période de vente d'objets.

periods[].​date_fromstring or null(date-time)

Date de mise en vente de l'objet spécifié.

Exemple: "2020-08-11T10:00:00+03:00"
periods[].​date_untilstring or null(date-time)

Date de retrait de la vente de l'objet spécifié. Peut prendre la valeur null.

Exemple: "2020-08-11T20:00:00+03:00"
custom_attributesobject(json)

Un JSON contenant les attributs de l'objet et leurs valeurs.

total_content_priceobject or null

Somme des prix du contenu du lot.

total_content_price.​amountstring

Somme des prix du contenu du lot avec remise.

Exemple: "100.99"
total_content_price.​amount_without_discountstring

Somme des prix du contenu du lot.

Exemple: "100.99"
total_content_price.​currencystring

Devise du prix de l'objet. Code à trois lettres selon ISO 4217.

Réponse
application/json
{ "item_id": 610316, "sku": "com.xsolla.EmpireBundle_1", "name": { "en": "Empire bundle" }, "type": "bundle", "description": { "en": "Empire bundle with items" }, "image_url": "https://cdn.xsolla.net/img/misc/images/685b21f9d9dca4aa0c953e8816b4eb4b.png", "long_description": { "en": "Empire bundle with some goods" }, "attributes": [], "is_free": false, "is_paid_randomized_reward": true, "groups": [ {} ], "prices": [], "virtual_prices": [ {} ], "media_list": [], "order": 1, "is_enabled": true, "is_show_in_store": true, "regions": [], "bundle_type": "standard", "content": [ {}, {}, {} ], "limits": { "per_user": {}, "per_item": null, "recurrent_schedule": null }, "periods": [ {} ], "custom_attributes": { "type": "lootbox", "purchased": 0 } }
Opérations

Aperçu

The cart is a purchasing mechanism that enables combining multiple items into a single order. A user can buy items of any type in any quantity for real currency, as well as use promo codes.

The cart is stored on the Xsolla side. Saving the cart across sessions depends on whether the user is authorized:

  • For authorized users, the cart is linked to a specific user and is saved across sessions as long as requests are sent on behalf of the same user.

  • For unauthorized users, saving the cart depends on passing the x-unauthorized-id header. To save the cart of an unauthorized user across sessions, pass the same x-unauthorized-id in every request. This option is available only for game key sales.

You can identify the cart in two ways: automatically by user's JWT or by cart ID (cart_id).

Cart management is available both on the client side and on the server side.

On the server side, you can fill the cart with items, e.g., when restoring a user session. The following actions are available on the client side:

  • retrieve the current user's cart or a cart by ID
  • fill the cart
  • update items in the cart
  • delete items from the cart

To purchase items from the cart, the client and server calls for order creation are used.

The cart’s time to live (TTL) is 72 hours by default. If its content changes, e.g., when a new item is added, the TTL is extended.

After successful payment, the cart isn’t cleared automatically. To clear the cart, use the following client-side API calls:

Cart usage scenario:

  1. Implement a store UI where the user will select items.

  2. When the user selects items in the store, add them to the cart, e.g., using the Fill cart with items call. In the items array, you need to pass the SKUs and the required quantity of items.

  3. Implement the cart viewing UI. When the user navigates to the cart, display its contents using the Get current user's cart call. The response will return information about the final price of the items, including discounts and applied promotions.

  4. Implement the opening of the payment UI to pay for the order. For example, you can use the Create order with all items from particular cart call. The response returns a token to open the payment UI.

  5. Configure order status tracking, e.g., using webhooks, to promptly receive data about successfully paid items and grant them to the user.

Note

To implement selling items in-game and online, refer to the integration guide.

Cart and payment flow

Cycle de vie d'une commande

Comprendre le cycle de vie d'une commande vous aide à suivre les commandes et à implémenter correctement la logique post-achat, par exemple l'attribution des objets.

La commande passe par les statuts suivants :

StatutDescriptionNotes
newCommande créée. Le système attend la confirmation du paiement..Les descriptions des statuts de transaction se trouvent dans la documentation Pay Station API.
paidCommande payée (la transaction est passée au statut done), et l'objet peut être attribué à l'utilisateur. La commande reste en statut new jusqu'à ce que le paiement soit confirmé.
doneObjet attribué à l'utilisateur.
canceledPaiement remboursé. La commande passe à ce statut lorsque le statut de la transaction devient refunded.
expired La création d'une nouvelle commande pour un objet en édition limitée, un code promo ou une promotion fait passer toute commande antérieure non réglée contenant cet objet au statut expired. Seule la commande la plus récente peut être réglée. Si un utilisateur tente de régler une commande expirée, l'interface de paiement affichera une erreur 2002 et le paiement échouera.

Cycle de vie d'une commande

Note

Lorsque la commande passe au statut expired pendant que l'utilisateur finalise un paiement, mais que le paiement aboutit, la commande passe du statut expired au statut paid. Cela s'applique uniquement si la limite d'achat de l'objet associé à la commande n'est pas dépassée lors du paiement.

Panier (côté client)

Utilisez les appels de cette section pour gérer le panier côté client.

Opérations

Panier (côté serveur)

Utilisez les appels de cette section pour gérer le panier côté serveur.

Opérations

Paiement (côté client)

Utilisez les appels de cette section pour créer un jeton de paiement côté client.

Opérations

Paiement (côté serveur)

Utilisez les appels de cette section pour créer un jeton de paiement côté serveur.

Opérations

Commande

Utilisez les appels de cette section pour obtenir des informations sur les commandes.

Opérations

Biens gratuits

Use calls from this section to grant free items to users.

Opérations

Aperçu

Les limites d'achat vous permettent de restreindre la quantité d'objets disponibles à l'achat par un utilisateur unique ou par l'ensemble des utilisateurs. Vous pouvez également configurer des réinitialisations programmées des limites.

Les limites sont stockées côté Xsolla et sont configurées au niveau de l'objet individuel dans le Compte éditeur ou via l'objet limits dans les appels API suivants :

Les informations sur les limites sont renvoyées dans l'objet items.limits dans les appels API suivants pour récupérer le catalogue des objets :

Les appels API de la sous-section Gestion du groupe Limites vous permettent de récupérer l'état actuel des limites et de les mettre à jour pour un utilisateur spécifique, par exemple, réinitialiser le compteur après la fin d'une quête ou ajuster manuellement la quantité restante.

Note

Pour des informations détaillées sur la configuration des limites dans le catalogue, consultez la section Item purchase limits.
Opérations
Opérations
Opérations
Opérations

Catalogue

Cette API permet de récupérer tout type d'objet vendable ou tout objet spécifique.

Opérations
Opérations
Opérations
Opérations
Opérations