Intégrer le magasin dans le jeu

Après avoir créé et configuré des biens (objets virtuels, monnaies virtuelles, lots, clés) dans votre Compte éditeur, ajoutez In-Game Store à votre jeu :

  1. Implémentez l’affichage du catalogue des objets.
  2. Implémentez la logique de vente des objets.

Affichage du catalogue des objets

Note
Pour appeler les API de Xsolla, vous pouvez utiliser les méthodes SDK prêtes à l’emploi pour les moteurs de jeu et les plateformes :

Implémentez l’affichage du catalogue des objets via les appels In-Game Store & Buy Button API :

TâcheAPI
Pour afficher la liste complète des objets virtuels ajoutés à votre magasinGet virtual items list
Pour afficher une liste de groupes d’objets virtuels disponibles à la vente côté clientGet item groups list
Pour obtenir une liste des monnaies virtuelles disponibles à la vente dans votre magasin côté clientGet virtual currency list
Pour afficher la liste complète des packages de monnaies virtuelles ajoutés à votre magasin côté clientGet virtual currency package list
Pour afficher la liste complète des lots ajoutés à votre magasinGet list of bundles
Note
Les méthodes GET du catalogue renvoient les objets qui sont affichés dans le magasin au moment de la requête. Pour obtenir des informations sur les objets dont la période d’affichage n’a pas encore commencé ou a déjà expiré, passez le paramètre show_inactive_time_limited_items avec une valeur de 1 lors de la requête de catalogue.

Vente des objets

Vous pouvez vendre des objets comme suit :

  1. Achat rapide d’un bien. Il s’agit de la vente d’une UGS dans n’importe quelle quantité (par exemple, 100 potions identiques ou un montant quelconque de monnaie virtuelle).
  2. Achat via le panier. Dans ce cas, le joueur remplit le panier, ajoute ou supprime des biens, ou modifie leur quantité.

Achat rapide

  1. Appelez l'API Create order with specified item. Un jeton permettant d'ouvrir l'interface de paiement sera passé dans la réponse.
  2. Ouvrez l'interface de paiement à l'aide du jeton de paiement reçu.
Note
Les informations sur la réduction (personnalisée ou liée à l’achat) seront disponibles à l’utilisateur uniquement dans l’interface de paiement. L’utilisation de codes promo n’est pas prévue.
Note
Pour appeler les API de Xsolla, vous pouvez utiliser les méthodes SDK prêtes à l’emploi pour les moteurs de jeu et les plateformes :

Achat via le panier

Implémentez la logique :
  1. Pour configurer le panier et obtenir le jeton :
  2. Pour ouvrir l’interface de paiement.

Remplir et acheter le panier sur le client

Implémentez vous-même la logique d’ajout et de suppression de biens. De plus, gardez à l’esprit que, avant l’appel à l’API pour remplir le panier, l’utilisateur n’aura pas d’informations sur les promotions qui seront appliquées à l’achat. Cela signifie que le coût total et les informations sur les objets bonus ajoutés ne seront pas connus à l’avance.

  1. Une fois que le joueur a rempli son panier, appelez l'API Fill cart with items. Les informations actuelles sur les biens sélectionnés (prix avant et après les remises, objets bonus) seront passées dans la réponse.
  2. Appelez l'API Create order with all items from current cart. L'ID de la commande et le jeton de paiement seront passés dans la réponse. La commande créée aura le statut New.
  3. Ouvrez l'interface de paiement.
Note
Pour appeler les API de Xsolla, vous pouvez utiliser les méthodes SDK prêtes à l’emploi pour les moteurs de jeu et les plateformes :

Remplir et acheter le panier sur le serveur

Cette option peut nécessiter plus de temps pour configurer le panier, car chaque modification du panier doit être accompagnée d’appels API.

Suivez les étapes suivantes :

  1. Modifiez le panier :

Note
Si vous souhaitez obtenir l’état actuel du panier, appelez l’API Get current user’s cart.
  1. Appelez l'API Create order with all items from the current cart. L'ID de la commande et le jeton de paiement seront passés dans la réponse. La commande créée aura le statut New.
  2. Ouvrez l'interface de paiement.

Ouverture de l'interface de paiement

Pour payer les biens, ouvrez l’interface de paiement. Le jeton permettant d’ouvrir l’interface de paiement sera passé dans la réponse à l’appel API Create order with all items from current cart.

Implémentez l’ouverture de l’interface de paiement de l’une des manières suivantes :

Tester la procédure de paiement

Pour tester le flux de paiement, utilisez le mode bac à sable. Faites usage d’une carte bancaire de test et de n’importe quel compte.

Note

Après le premier paiement réel, une politique de paiement stricte entre en vigueur. Effectuer des paiements en mode bac à sable ne sera disponible qu’aux utilisateurs spécifiés dans le Compte éditeur, sous la section Company settings > Users.

L’achat de monnaie virtuelle et d’objets contre des devises réelles n’est possible qu’après avoir signé le contrat de licence avec Xsolla. Pour ce faire, dans le Compte éditeur, accédez à la section Agreements & Taxes > Agreements, remplissez le formulaire de contrat, et attendez la confirmation. L’examen du contrat peut prendre jusqu’à 3 jours ouvrables.

Pour activer/désactiver le mode bac à sable, modifiez la valeur du paramètre sandbox dans la requête d’achat rapide et d’achat via le panier. Par défaut, le mode bac à sable est désactivé.

Obtenir le statut de la commande de l'utilisateur

Utilisez les moyens suivants pour obtenir le statut de la commande de l’utilisateur :

  1. Côté serveur via les webhooks.
  2. Côté client via l’API WebSocket API ou IGS & BB API.

Obtenir le statut de la commande de l'utilisateur côté serveur via des webhooks

Après avoir configuré les webhooks sur votre serveur, vous pouvez les utiliser pour obtenir les détails et le statut de la commande.

Obtenir le statut de la commande de l'utilisateur côté client via WebSocket API ou IGS & BB API

Si vous n’avez pas de serveur ou si vous implémentez la logique de traitement des achats côté client, vous pouvez utiliser les moyens suivants :
  1. WebSocket API.
  2. Short-polling.

Obtenir l'état d'une commande côté client à l'aide de l'API WebSocket

La solution utilise WebSockets pour obtenir les statuts des commandes sans récupérer d’informations détaillées sur celles-ci. Cette méthode est préférable, car elle établit une seule connexion entre le client (par exemple, votre site web ou votre application mobile) et le serveur Xsolla, évitant ainsi une charge supplémentaire pour le client ou le serveur.

Note
Si vous ne disposez pas de votre propre serveur pour gérer les webhooks, ou si vous utilisez une logique de traitement des achats côté client, vous pouvez utiliser l’API WebSocket à l’aide du Centrifuge SDK.

Effectuez les étapes suivantes:

  1. Pour permettre au serveur Xsolla WebSocket et à votre client d’identifier les messages d’état des commandes, créez une connexion :

Copy
Full screen
Small screen
const client = new Centrifuge(
connectionURL,
{
data: {
  user_external_id: user_external_id,
  auth: auth,
  project_id: project_id
}
}
)
connectionURL - wss://ws-store.xsolla.com/connection/websocket
auth - user JWT token
  1. Pour recevoir de nouveaux messages sur les statuts des commandes, abonnez-vous aux événements à l'aide de la fonction client.on :
Copy
Full screen
Small screen
client.on('publication', (ctx) => {
   //handle the status
});
  1. Déclenchez l'établissement effectif de la connexion :
Copy
Full screen
Small screen
client.connect()
  1. Pour recevoir l'historique des changements de statuts des commandes, connectez la méthode API d'historique.
Copy
Full screen
Small screen
client.on('subscribed', function (ctx) {
   client.history(ctx.channel, { limit: -1, since: { offset: 0 }, reverse: false }).then(function (resp) {
resp.publications.forEach((ctx) => {
   /handle the status
});

   }, function (err) {
       //handle the status
   });
});

Exemple de corps de message:

Copy
Full screen
Small screen
{
order_id: 59614241,
status: 'new'
}

Les statuts de commande suivants sont possibles :

  • New — la commande a été créée, mais n’est pas encore payée ;
  • Paid — la commande est payée ;
  • Done — la commande a été livrée (tous les reçus ont été envoyés, les livraisons ont été effectuées du côté de Xsolla, des plateformes externes, etc.) ;
  • Canceled — la commande a été annulée et le paiement a été remboursé à l’utilisateur.

Le temps nécessaire pour une réponse via websocket est de 5 minutes. Passé ce délai ou en cas de problème avec le websocket, il est recommandé d’utiliser un short-polling.

Short-polling

Pour obtenir des informations détaillées sur les biens de la commande après le passage au statut approprié, appelez l’API Get order.
Note
Une interrogation périodique du statut de la commande est utilisée : une simple requête HTTP qui reçoit le statut de la commande et des informations sur celle-ci. Le délai recommandé entre les requêtes est de 3 secondes.
Votre progression
Merci pour votre commentaire !
Dernière mise à jour: 21 Février 2024

Faute de frappe ou autre erreur dans le texte ? Sélectionnez le texte concerné et appuyez sur Ctrl+Entée.

Signaler un problème
Nous améliorons continuellement notre contenu grâce à vos commentaires.
Indiquez votre adresse e-mail pour un suivi
Merci pour votre commentaire !