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.
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 :
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.
Effectuez les étapes suivantes:
- Pour permettre au serveur Xsolla WebSocket et à votre client d’identifier les messages d’état des commandes, créez une connexion :
- javascript
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
- Pour recevoir de nouveaux messages sur les statuts des commandes, abonnez-vous aux événements à l'aide de la fonction
client.on
:
- javascript
client.on('publication', (ctx) => {
//handle the status
});
- Déclenchez l'établissement effectif de la connexion :
- javascript
client.connect()
- Pour recevoir l'historique des changements de statuts des commandes, connectez la méthode API d'historique.
- javascript
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:
- javascript
{
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
ouDone
. - 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.
NoteUne 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.
La méthode XsollaCatalog.Purchase
encapsule plusieurs méthodes de suivi de l’état de la commande. Le mécanisme de suivi est détaillé dans la documentation du SDK Unity (PC, Web).
Vous pouvez également implémenter le traitement de l’état et du contenu de la commande, passés à la fonction de rappel onSuccess
de la méthode d’achat.
Pour suivre l’état de la commande, utilisez la méthode SDK CheckPendingOrder
; passez les paramètres suivants :
AccessToken
— jeton de paiement, obtenu lors de l’achat de l’objet.OrderId
— ID de la commande, obtenu lors de l’achat de l’objet.SuccessCallback
— fonction de rappel en cas de paiement réussi.ErrorCallback
— fonction de rappel en cas d’erreur de requête.bIsUserInvolvedToPayment
— détermine l’implication de l’utilisateur dans le processus de paiement. Passeztrue
pour l’achat en monnaie réelle, etfalse
pour l’achat d’objets gratuits et l’achat en monnaie virtuelle.
Le mécanisme de suivi est détaillé dans la documentation du SDK Unreal Engine destiné aux entreprises.
Pour demander le statut actuel du paiement, appelez la méthode SDK CheckOrder
; passez les paramètres suivants :
AccessToken
— jeton de paiement, obtenu lors de l’achat de l’objet.OrderId
— ID de la commande, obtenu lors de l’achat de l’objet.SuccessCallback
— fonction de rappel en cas de vérification réussie de la commande. La réponse contient le statut de la commande.ErrorCallback
— fonction de rappel en cas d’erreur de requête.
Pour suivre l’état des commandes créées et les valider, vous devrez configurer le traitement des webhooks côté serveur de votre application.
Côté Xsolla, deux options de réception de webhook ont été configurées lors de l’achat et du retour d’objets sur le site : les informations de paiement et de transaction, ainsi que celles des objets achetés, peuvent être envoyées séparément ou combinées en un seul webhook.
Plus d’informations sur les options de réception des webhooks
Réception d’informations dans des webhooks combinés :
Si vous avez créé un projet dans le Compte éditeur après le 22er janvier 2025, vous recevez toutes les informations dans les webhooks Paiement de commande réussi (order_paid
) et Annulation de commande (order_canceled
). Dans ce cas, vous n’avez pas besoin de traiter les webhooks Paiement (payment
) et Remboursement (refund
).
Réception d’informations dans des webhooks séparés :
Si vous avez créé un projet dans le Compte éditeur au plus tard le 22er janvier 2025, vous recevrez les webhooks suivants :
- Paiement (
payment
) et Remboursement (refund
) avec des informations sur les informations de paiement et de transaction. - Paiement de commande réussi (
order_paid
) et Annulation de commande (order_canceled
) avec des informations sur les objets achetés.
Vous devez traiter tous les webhooks entrants.
Pour passer à la nouvelle option avec réception de webhooks combinés, contactez vos responsables de la réussite client ou envoyez un e-mail à csm@xsolla.com.
Pour gérer pleinement le magasin en jeu et les paiements, il est nécessaire d’implémenter le traitement des principaux webhooks :
Nom du webhook | Description |
---|---|
User validation > Validation utilisateur (user_validation ) | Est envoyé à différentes étapes du paiement pour s’assurer que l’utilisateur est bel et bien enregistré dans le jeu. |
Game services > Combined webhooks > Paiement de commande réussi (order_paid ) | Il contient les données de paiement, les données de la transaction et des informations sur les objets achetés. Utilisez les données du webhook pour attribuer les objets à l’utilisateur. |
Game services > Combined webhooks > Annulation de commande (order_canceled ) | Il contient les données du paiement annulé, les données de la transaction et des informations sur les objets achetés. Utilisez les données du webhook pour retirer les objets achetés. |
Nom du webhook | Description |
---|---|
User validation > Validation utilisateur (user_validation ) | Est envoyé à différentes étapes du paiement pour s’assurer que l’utilisateur est bel et bien enregistré dans le jeu. |
Payments > Paiement (payment ) | Il contient des informations sur le paiement et les données de la transaction. |
Game services > Separate webhooks > Paiement de commande réussi (order_paid ) | Il contient des informations sur les objets achetés et les données de la transaction. Utilisez les données du webhook pour attribuer les objets à l’utilisateur. |
Payments > Remboursement (refund ) | Il contient des informations sur le paiement et les données de la transaction. |
Game services > Separate webhooks > Annulation de commande (order_canceled ) | Il contient des informations sur les objets achetés et l’ID de la transaction annulée. Utilisez les données du webhook pour retirer les objets achetés. |
Si la personnalisation du catalogue des objets est implémentée côté application, implémentez le traitement de Personnalisation du catalogue côté partenaire.
Pour accéder à la liste complète des webhooks et obtenir des informations générales sur leur utilisation, consultez la documentation sur les webhooks.
Configurer l'envoi de webhooks
Pour configurer les webhooks côté Xsolla :
- Ouvrez votre projet dans le Compte éditeur.
- Dans le menu latéral, cliquez sur Project settings et accédez à la section Webhooks.
- Dans le champ Webhook URL, spécifiez l’URL vers laquelle Xsolla enverra les webhooks.
- Cliquez sur Enable webhooks.
Ajouter un écouteur webhook
L’écouteur webhook est un code de programme qui permet de recevoir des webhooks entrants à une adresse URL spécifiée, de générer une signature et d’envoyer une réponse au serveur webhook de Xsolla.
Génération d'une signature
Lorsque vous recevez un webhook, vous devez vous assurer de la sécurité de la transmission des données. Pour cela, vous devez générer une signature à partir des données du webhook et vérifier qu’elle correspond à la signature envoyée dans l’en-tête de la requête HTTP.
Pour générer une signature :
- Concaténez le JSON du corps de la requête avec la clé secrète du projet.
- Appliquez la fonction de hachage cryptographique SHA-1 à la chaîne obtenue lors de la première étape.
Envoi de réponses au webhook
Pour confirmer la réception du webhook, votre serveur doit renvoyer :
- Un code HTTP
200
,201
ou204
en cas de réponse positive ; - Un code HTTP
400
avec description du problème au cas où l’utilisateur spécifié n’a pas été trouvé ou une signature non valide a été passée.
Votre gestionnaire de webhooks peut également renvoyer un code 5xx
en cas de problèmes temporaires sur votre serveur.
Si le serveur Xsolla ne reçoit pas de réponse aux webhooks Paiement de commande réussi et Annulation de commande ou s’il reçoit une réponse contenant un code 5xx
, les webhooks sont renvoyés selon le calendrier suivant :
- 2 tentatives à intervalles de 5 minutes ;
- 7 tentatives à intervalles de 15 minutes ;
- 10 tentatives à intervalles de 60 minutes.
Un maximum de 20 tentatives d’envoi de webhooks sont effectuées dans les 12 heures suivant la première tentative.
Si le serveur Xsolla ne reçoit pas de réponse aux webhooks Paiement ou Remboursement, ou s’il reçoit une réponse contenant un code 5xx
, les webhooks sont également renvoyés à intervalles de temps croissants. Un maximum de 12 tentatives sont effectuées dans les 12 heures.
Si le serveur Xsolla ne reçoit pas de réponse au webhook Validation utilisateur ou s’il reçoit une réponse contenant un code 400
ou 5xx
, le webhook Validation utilisateur n’est pas renvoyé.
Dans ce cas, une erreur est affichée à l’utilisateur et les webhooks Payment et Successful payment of the order ne sont pas envoyés.
Faute de frappe ou autre erreur dans le texte ? Sélectionnez le texte concerné et appuyez sur Ctrl+Entée.