Présentation
L’API Xsolla comprend :
- Pay Station API — interface de paiement et méthodes de tokénisation.
- IGS API — méthodes pour travailler avec le module In-Game Store.
- Subscriptions API — méthodes pour Subscriptions.
- Login API — méthodes pour l’authentification utilisateur à l’aide de votre propre interface (voir le guide d’intégration).
L’API utilise des fonctions HTTP intégrées telles que l’authentification HTTP et les verbes HTTP, qui peuvent être interprétées par des clients HTTP standard. Elle prend également en charge le partage de ressources inter-origines, ce qui vous permet d’y accéder en toute sécurité à partir d’une application Web cliente.
L’API Xsolla utilise les chemins d’endpoints suivants :https://api.xsolla.com
— Pay Station API, Subscriptions API ;https://login.xsolla.com/api
— Login API ;https://store.xsolla.com/api
— IGS API.
Requêtes et réponses
Les requêtes adressées à l’API Xsolla doivent :- être envoyées via HTTPS ;
- utiliser TLS 1.2 ou ou versions ultérieures ;
- contenir les paramètres d’authentification ;
- contenir un en-tête supplémentaire :
Content-Type: application/json
pour les requêtes PUT et POST.
Authorization: Basic <your_authorization_basic_key>
Content-Type: application/json
Par défaut, toutes les requêtes renvoient une réponse contenant des données JSON dans le corps et Content-Type: application/json
dans l’en-tête.
Modifications de l'API
Xsolla peut modifier la fonctionnalité de l’API comme suit :- Ajouter de nouvelles ressources API ;
- Ajouter des paramètres de requête facultatifs ;
- Ajouter de nouvelles propriétés aux réponses API existantes ;
- Ajouter de nouvelles valeurs pour les paramètres existants avec des valeurs énumérables ;
- Ajouter de nouveaux types de webhook et de paramètres JSON ;
- Ajouter des en-têtes de requête HTTP facultatifs ;
- Rejeter toute requête dans laquelle des paramètres valides contiennent des valeurs non valides ;
- Rejeter les requêtes mal formées qui ont été acceptées précédemment en raison d’une analyse laxiste, si la logique d’analyse est modifiée ;
- Ajouter, modifier ou supprimer des fonctionnalités non documentées à tout moment.
Versionnage
Toutes les méthodes API Xsolla prennent en charge le versionnage. Nous publierons une nouvelle version chaque fois qu’il y aura des changements incompatibles avec la version actuelle. La version est identifiée par « v1 »/« v2 »/etc. après le préfixe « /merchant » dans l’URL. Si vous utilisez l’API pour la première fois, utilisez la dernière version. Par défaut, nous utiliserons la première version, si aucune version n’est indiquée.Authentification
L’API Xsolla utilise l’authentification d’accès de base. Les requêtes à l’API doivent contenir l’en-têteAuthorization: Basic <your_authorization_basic_key>
, où <your_authorization_basic_key>
est la paire merchant ID:API key encodée conformément à la norme Base64. Accédez au Compte éditeur pour trouver les paramètres suivants :- Merchant ID est affiché :
- Dans la section Company settings > Company ;
- Dans l'URL de la barre d'adresse du navigateur sur n'importe quelle page du Compte éditeur. L'URL est au format suivant :
https://publisher.xsolla.com/<merchant ID>/<Publisher Account section>
.
- L'API key ne s'affiche dans le Compte éditeur qu'une seule fois lors de sa création, vous devez donc la conserver de votre côté. Vous pouvez créer une nouvelle clé dans les sections suivantes :
- Company settings > API keys ;
- Project settings > API keys.
Pour plus d’informations sur l’utilisation des clés API, consultez la référence API.
Recommandations principales :
- Enregistrez la clé API générée de votre côté. Lors de sa création dans le Compte éditeur, la clé API ne s’affiche qu’une seule fois.
- Gardez votre clé API secrète. Elle donne accès à votre compte personnel et à vos projets dans le Compte éditeur.
- Stockez la clé API sur votre serveur et non dans des fichiers binaires ou sur le client.
Si l’appel API nécessaire ne contient pas le paramètre de chemin project_id
, utilisez la clé API valide dans tous les projets de l’entreprise pour l’autorisation.
Appels API par modèle d'interaction
Lors de l’intégration des produits Xsolla via l’API Xsolla, il est important d’utiliser les appels API conformément à leur usage prévu :- Appels API côté client — Ces appels API servent à l’interaction entre la partie client de l’application du partenaire et le serveur Xsolla. Les actions de l’utilisateur sur le client initient la requête de ces appels API. Exemples d’appels API côté client : récupération d’une liste d’objets, authentification utilisateur, obtention d’un jeton de paiement sur le client.
- Appels API côté serveur — Ces appels API servent à l’interaction entre le serveur du partenaire et le serveur Xsolla. Ils sont destinés aux tâches suivantes :
- Implémentation du flux utilisateur
Les actions de l’utilisateur sur le client déclenchent l’invocation d’un appel API côté client du partenaire, puis un appel API côté serveur Xsolla est invoqué sur le serveur du partenaire. Exemples d’appels API côté serveur pour l’implémentation du flux utilisateur : mise à jour des attributs utilisateur sur le serveur, obtention d’un jeton de paiement sur le serveur. - Tâches administratives ou configuration des produits Xsolla par le partenaire
Les actions de l’utilisateur sur le client ne peuvent pas initier un appel à ces méthodes. Exemples d’appels API côté serveur pour les tâches administratives : création et modification d’un objet ou d’une promotion.
- Implémentation du flux utilisateur
- Dépassement des limites de fréquence :
- Les limites de fréquence pour les appels API côté serveur sont plus strictes que pour les appels API côté client ;
- Les limites de fréquence pour les appels API côté serveur pour les tâches administratives sont plus strictes que pour les appels API pour l’implémentation du flux utilisateur.
- Réception d’informations non pertinentes en réponse. Par exemple, lors de l’utilisation d’appels API côté serveur pour obtenir une liste d’objets à des fins administratives au lieu d’appels API côté client pour l’obtention d’une liste d’objets afin de constituer un catalogue.
- Modifications non autorisées des données par l’utilisateur. Par exemple, lors de l’utilisation d’appels API côté client pour mettre à jour les attributs au lieu d’appels API côté serveur.
- Détermination incorrecte du pays et de la devise dans l’interface de paiement.
Côté client | Côté serveur | ||
---|---|---|---|
Pour l’implémentation du flux utilisateur | Pour les tâches administratives | ||
Interaction | Client-serveur. La requête est envoyée du client du jeu directement au serveur Xsolla. | Serveur-serveur. La requête est envoyée du client du jeu au serveur du jeu, puis du serveur du jeu au serveur Xsolla. | Serveur-serveur. La requête est envoyée du serveur du système du partenaire au serveur Xsolla. |
Authentification | JSON Web Token (JWT) de l’utilisateur ou sans authentification. | Authentification d’accès de base ou JWT serveur. | Authentification d’accès de base. |
Limites de fréquence | Peut supporter une charge élevée. | Peut supporter une charge élevée. | Ces appels API, destinés exclusivement aux partenaires, sont soumis à des exigences de performance modestes et à des limites de fréquence strictes. |
Accès utilisateur | Les appels API s’utilisent côté client, permettant un affichage rapide des données à l’utilisateur. Par exemple, pour l’affichage d’un catalogue des objets ou des attributs utilisateur, comme le nombre d’achats ou le niveau dans le jeu. Toutes ces données sont librement accessibles dans le code du client. N’utilisez pas ces appels API pour traiter des données que l’utilisateur ne peut pas modifier, comme pour mettre à jour des attributs utilisateur. | Les appels API servent à l’interaction entre les serveurs, empêchant ainsi l’utilisateur d’accéder aux données. Utilisez ces appels API pour traiter des données que l’utilisateur ne peut pas modifier. | Les appels API ne sont pas utilisés pour implémenter le flux utilisateur. |
Détermination du pays et de la devise | Le pays et la devise sont déterminés par l’adresse IP du client à partir de laquelle la requête est envoyée. Par conséquent, il est important d’utiliser ces appels API côté client, et non côté serveur. | Le pays et la devise sont déterminés par l’adresse IP du serveur à partir duquel la requête est envoyée. Par conséquent, il est important de passer les données relatives au pays/à la devise de l’utilisateur dans l’en-tête ou le paramètre, selon la description de l’appel API utilisé. | Les appels API ne sont pas utilisés pour implémenter le flux utilisateur. |
Le schéma d’authentification permet de déterminer si un appel API est effectué côté client ou côté serveur :
- Les appels API côté client s’utilisent sans authentification ou avec l’en-tête
Authorization header: Bearer <user_JWT>
, où<user_JWT>
est le jeton utilisateur. - Les appels API côté serveur pour l’implémentation du flux utilisateur s’utilisent avec l’en-tête :
X-SERVER-AUTHORIZATION: <server_JWT>
, où<server_JWT>
est le jeton de serveur ;Authorization: Basic <your_authorization_basic_key>
, où<your_authorization_basic_key>
est la paireproject_id:api_key
encodée selon la norme Base64.
- Les appels API côté serveur pour les tâches administratives s’utilisent avec l’en-tête
Authorization: Basic <your_authorization_basic_key>
, où<your_authorization_basic_key>
est la paireproject_id:api_key
encodée selon la norme Base64.
Exemple d’appel API côté serveur avec authentification côté serveur :
Exemple d’appel API côté client avec authentification côté client :
En fonction de vos besoins, vous pouvez choisir de configurer l’intégration lors de l’implémentation du flux utilisateur avec des appels API côté serveur ou côté client. Les appels API côté serveur pour les tâches administratives ne doivent pas être utilisés pour implémenter le flux utilisateur.
Exemple d’implémentation du flux utilisateur à l’aide d’appels API côté client :
- L’utilisateur effectue des actions sur le client. Par exemple : remplir le panier, acheter un objet.
- Le client du jeu envoie une requête avec des données au serveur Xsolla.
- Le serveur Xsolla envoie une réponse au client du jeu.
- Le client du jeu affiche le résultat à l’utilisateur.
Dans ce flux, l’authentification par JWT est utilisée.
Exemple d’implémentation d’un flux utilisateur à l’aide d’appels API côté serveur :
- L’utilisateur effectue des actions sur le client. Par exemple : remplir le panier, acheter un objet.
- Le client du jeu envoie une requête au serveur du jeu.
- Si nécessaire, le partenaire implémente un traitement supplémentaire des données sur le serveur du jeu.
- Le serveur du jeu envoie une requête au serveur Xsolla.
- Le serveur Xsolla envoie une réponse au serveur du jeu.
- Le serveur du jeu traite les données et envoie une réponse au client du jeu.
- Le client du jeu affiche le résultat à l’utilisateur.
Dans ce flux, l’authentification d’accès de base ou un jeton de serveur est utilisé.
Flux d’interaction lors de l’utilisation des appels API côté serveur pour les tâches administratives :
- Le partenaire envoie une requête au serveur Xsolla à partir du client ou du serveur de son application.
- Le serveur Xsolla renvoie une réponse contenant le résultat du traitement de la requête.
Types d'endpoints
Le type d’endpoint indique le type de données qu’il traite et l’action qu’il effectue sur ces données. Les actions les plus courantes sont les suivantes :Action | Méthode HTTP | Description |
---|---|---|
Créer | POST | Crée et enregistre une entité du type spécifié. |
Liste | GET | Renvoie une liste d’entités correspondant à la requête. Pour obtenir des détails sur une entité, il faut d’abord trouver son ID en utilisant l’endpoint Liste correspondant, puis fournir cet ID à l’endpoint Récupérer correspondant. |
Récupérer | GET | Fournit des informations sur l’entité dont l’ID est spécifié. |
Remplacer | PUT | Modifie tous les champs de l’entité dont l’ID est spécifié. |
Mettre à jour | PATCH | Modifie les champs spécifiés de l’entité avec l’ID spécifié. |
Supprimer | DELETE | Supprime l’entité avec l’ID spécifié. |
Format de la date
Toutes les dates sont spécifiées sous forme de chaînes de caractères conformément à la norme ISO 8601. Vous pouvez spécifier des chaînes de dates soit en UTC (par exemple, 2013-01-15T00:00:00Z), soit en indiquant le décalage UTC (par exemple, 2013-01-15T00:00:00-08:00 pour huit heures de décalage par rapport à UTC). Dans ce dernier cas, veillez à tenir compte de l’heure d’été, le cas échéant.Pagination
Les endpoints Liste peuvent paginer les résultats renvoyés. Cela signifie qu’au lieu de renvoyer tous les résultats dans une seule réponse, ces endpoints peuvent renvoyer certains résultats, accompagnés d’un en-tête de réponse pointant vers la série de résultats suivante. Pour ce faire, nous utilisons les paramètres offset et limit.Gestion des erreurs
Liste des erreurs HTTP prises en charge :- 200, 201, 204 — Pas d’erreur ;
- 400 Bad Request — Cela indique souvent l’absence d’un paramètre requis. Reportez-vous au corps de la réponse pour plus de détails ;
- 401 Unauthorized — Clé API valide non fournie ;
- 402 Request Failed — La requête a échoué malgré des paramètres valides ;
- 403 Forbidden — Aucuns droits d’accès. Reportez-vous au corps de la réponse pour plus de détails ;
- 404 Not Found — L’élément demandé n’existe pas ;
- 409, 422 — Paramètres de requête non valides ;
- 412 Precondition Failed — Le projet n’a pas encore été activé (utilisé dans la méthode Créer un jeton) ;
- 415 Unsupported Media Type —
Content-Type: application/json
manquant dans l’en-tête HTTP ; - 500, 502, 503, 504 Server Errors — Un problème est durvenu.
422
.
Toutes les réponses d’erreur de l’API fournissent un objet JSON comprenant les champs suivants :Nom | Type | Description |
---|---|---|
http_status_code | integer | Code HTTP. |
message | string | Un message lisible par l’homme décrivant l’erreur. Ce message est toujours en anglais. Ne vous fiez pas à cette valeur pour une erreur particulière, car elle pourrait changer à l’avenir. |
extended_message | string | Description plus détaillée de l’erreur. |
request_id | string | ID unique de la requête qui peut être utilisé pour la résolution des problèmes. |
- http
{
"http_status_code": 500,
"message": "Internal Server Error",
"extended_message": null,
"request_id": "6445b85"
}
Limites de fréquence
Informations générales
Pour éviter de surcharger les systèmes Xsolla et les protéger contre les rafales de trafic entrant, Xsolla limite le nombre de requêtes reçues par l’API Xsolla au cours d’une période donnée. Si la limite est dépassée, l’API Xsolla renvoie une réponse HTTP avec le code d’état429
.
Les limites varient en fonction de la méthode, du projet et d’autres facteurs. Les limites actuelles sont régulièrement mises à jour afin de garantir le fonctionnement stable et ininterrompu des systèmes Xsolla. Dans certains cas, il est possible d’adapter les limites spécifiées sur demande préalable. Contactez votre responsable de la réussite client ou envoyez un e-mail à csm@xsolla.com pour soumettre une demande.Causes courantes de dépassement des limites de fréquence
- Une augmentation soudaine du trafic du côté du partenaire à la suite de :
- ventes saisonnières ;
- début des essais en milieu fermé et en milieu ouvert.
- Augmentation soudaine du trafic à la suite d’attaques DDoS du côté du partenaire.
- Une intégration mal configurée, par exemple :
- l’utilisation des méthodes de la sous-section Administrateur qui ne sont pas destinées à un usage fréquent au lieu des méthodes de la sous-section Catalogue ;
- appel fréquent à la méthode Lire une commande pour obtenir l’état d’une commande et la liste des objets qu’elle contient. Par exemple : 1 fois par seconde alors que le délai recommandé entre les requêtes devrait être de 3 secondes.
- Lancement d’un nombre excessivement élevé de requêtes dans une période donnée. Par exemple : plus de 200 appels par seconde à la méthode Lire la liste des objets virtuels pour afficher un catalogue des objets.
Traitement des limites de fréquence
Pour éviter les erreurs causées par les limites de fréquence, nous vous recommandons de :- Suivre les codes d’état
429
et créer un mécanisme de relance. Pour ce faire, utilisez le modèle Retry avec un backoff exponentiel ou fixe entre les tentatives au lieu de tentatives continues. - Optimiser le code pour n’obtenir que les données nécessaires. Veillez à n’effectuer que les requêtes dont votre application a besoin et évitez tout appel inutile à l’API. Si vous utilisez IGS API, recourez à WebSocket API pour réduire le nombre d’appels.
- Mettre en cache les données fréquemment utilisées par votre application. Par exemple, conservez les données statiques de votre côté afin de réduire le nombre de requêtes à l’API externe.
- Prévenir les attaques DDoS susceptibles d’interrompre votre API.
- Ajuster la fréquence de vos requêtes pour une distribution plus régulière. Si l’erreur
429
se produit régulièrement, envisagez d’inclure dans votre code un processus qui régule la fréquence de vos requêtes et permet de les répartir plus uniformément.
Clés API
Une clé API est une clé unique utilisée pour le cryptage des données utilisateur et l’authentification des requêtes API. Dans le Compte éditeur, vous pouvez créer des clés API pour tous les projets de l’entreprise ainsi que pour des projets individuels.
Vous pouvez travailler avec les clés API (voir la liste, créer et supprimer) si vous avez l’un des rôles suivants :
- développeur ;
- propriétaire.
Seul un propriétaire de projet peut modifier les rôles dans le Compte éditeur dans la section Company settings > Users.
Créer une clé API
Pour créer une clé API :- Ouvrez le Compte éditeur.
- Accédez à la section Company settings > API keys ou Project settings > API keys.
- Cliquez sur Create API key.
- Remplissez les champs :
- Key name — nom de la clé qui sera affiché dans la liste des clés. Définissez un nom qui vous permettra d’identifier facilement la clé ;
- Key type — type de clé, permanente ou temporaire ;
- Expiration date — date d’expiration, uniquement pour une clé temporaire. Après la date d’expiration, la clé n’est plus valide et vous devez en créer une nouvelle ;
- Project — projet où la clé est valide (le champ n’est pas affiché lorsque vous créez une clé API sur la page du projet). Tous les projets sont sélectionnés par défaut.
- Cliquez sur Create.
- Dans la fenêtre qui s’affiche, cliquez sur Copy API key et enregistrez la clé API créée de votre côté.
Recommandations principales :
- Enregistrez la clé API générée de votre côté. Lors de sa création dans le Compte éditeur, la clé API ne s’affiche qu’une seule fois.
- Gardez votre clé API secrète. Elle donne accès à votre compte personnel et à vos projets dans le Compte éditeur.
- Stockez la clé API sur votre serveur et non dans des fichiers binaires ou sur le client.
Si l’appel API nécessaire ne contient pas le paramètre de chemin project_id
, utilisez la clé API valide dans tous les projets de l’entreprise pour l’autorisation.
Supprimer une clé API
Pour supprimer une clé API :- Ouvrez le Compte éditeur.
- Accédez à la section Company settings > API keys ou Project settings > API keys.
- Dans la ligne Clé API, cliquez sur l’icône de la poubelle et confirmez l’action.
- à la réception de paiements dans les projets pour lesquels cette clé API a été utilisée ;
- à l’appel des méthodes API qui ont utilisé cette clé API.
- Créez une nouvelle clé API.
- Modifiez votre application pour utiliser la nouvelle clé API.
- Supprimez la clé API initiale.
Webhooks
Les webhooks vous permettent de recevoir des notifications instantanées d’événements configurés côté Xsolla. Configurez leur traitement pour automatiser votre application. Pour obtenir la liste des webhooks disponibles et des descriptions détaillées de leur fonctionnement, consultez notre documentation.
Faute de frappe ou autre erreur dans le texte ? Sélectionnez le texte concerné et appuyez sur Ctrl+Entée.