Configurer le suivi de l’état de la commande

Pour attribuer des objets à l’utilisateur, vous devez vous assurer que le paiement est un succès.

Avis
Vous pouvez suivre l’état de la commande côté client et côté serveur de votre application. Cependant, nous vous recommandons d’implémenter un gestionnaire de webhooks Paiement pour recevoir des informations sur les commandes dans le back-end de votre application. Cela vous permet d’implémenter une validation supplémentaire des achats effectués.

Choisissez une méthode pour suivre l’état de la commande :

Choisissez la méthode la plus adaptée à votre projet pour accéder aux données Xsolla :

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.

Note
Utilisez des applications Web de test comme exemple d’implémentation :

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.

Recommandations d’utilisation de websocket :

  • Le temps d’attente maximum pour une réponse via websocket est de 5 minutes.
  • La connexion doit être établie lors de l’ouverture de l’interface de paiement.
  • La connexion doit être interrompue après réception du statut final de la commande, soit Canceled ou Done.
  • En cas d’expiration de la durée de vie de la websocket ou de problèmes de connexion, utilisez le 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 Lire une commande.

    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.
Cet article vous a été utile ?
Merci !
Que pouvons-nous améliorer ? Message
Nous sommes désolés de l'apprendre
Dites-nous pourquoi vous n'avez pas trouvé cet article utile. Message
Merci pour votre commentaire !
Nous examinerons votre message et l'utiliserons pour améliorer votre expérience.
Dernière mise à jour: 23 Janvier 2025

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 !
Impossible d'envoyer votre commentaire
Réessayez plus tard ou contactez-nous à doc_feedback@xsolla.com.