SDK pour Android destinés aux entreprises / Suivi de l'état de la commande
  Retour à la documentation

SDK pour Android destinés aux entreprises

Suivi de l’état de la commande

Avis
Le SDK vous permet de suivre l’état des commandes côté client 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.

Une fois que l’utilisateur a réalisé un achat, votre application peut effectuer les actions suivantes :

  • afficher le statut de la commande dans l’interface de l’application ;
  • créditer le solde de l’utilisateur après un paiement réussi ;
  • octroyer les objets achetés après un paiement réussi.

Pour suivre l’état de la commande lorsque vous utilisez le SDK pour implémenter la logique de ces actions, vous pouvez :

Avis

Si vous utilisez les bibliothèques Store et Payments dans votre application, nous vous recommandons d’utiliser la méthode de la bibliothèque Store pour suivre la commande.

Si vous n’utilisez que la bibliothèque Payments, abonnez-vous aux changements d’état de la commande avec la méthode de la bibliothèque Payments. Utilisez la méthode pour demander le statut de la commande uniquement en complément pour éviter de surcharger les systèmes Xsolla.

S'abonner aux changements d'état des commandes

Utiliser la méthode de la bibliothèque Store

Pour vous abonner aux changements d’état des commandes, utilisez la méthode SDK getOrderStatus de la bibliothèque Store et passez-lui les paramètres suivants :

  • listener — objet écouteur de type OrderStatusListener ;
  • orderId — ID de la commande reçu en tant que paramètre lors de l’achat via le panier, de l’achat en un clic ou de l’achat contre de la monnaie virtuelle.
Documentation de référence du SDK
En savoir plus sur les méthodes SDK et leurs paramètres.

Exemple d’appel à la méthode XStore.getOrderStatus :

Copy
Full screen
Small screen
XStore.getOrderStatus(object : OrderStatusListener() {

               override fun  onStatusUpdate(status: OrderResponse.Status) {

                   if(status == OrderResponse.Status.DONE) {

                       Log.d("MainActivity", "Success")

                   }

               }

               override fun  onFailure() {

                   Log.d("MainActivity", "Failure")

               }

           }, orderId)

Nous recommandons d’appeler la méthode XStore.getOrderStatus lors de l’ouverture de l’interface de paiement.

Les méthodes d’achat encapsulent plusieurs méthodes de suivi de l’état de la commande. Le suivi est effectué selon l’algorithme suivant :

  1. Une connexion WebSocket est établie.
  2. Si la connexion WebSocket est établie avec succès et que le statut de la commande passe à done ou à cancel, le suivi s'arrête. Si la connexion WebSocket échoue ou si la réponse contient des données incorrectes, l'état de la commande est suivi à l'aide de short-polling.
  3. Le suivi de l'état de la commande se poursuit à l'aide de short-polling. Une simple requête HTTP d'état de commande est envoyée toutes les 3 secondes. Le suivi s'arrête si le statut de la commande passe à done ou à cancel.

Utiliser la méthode de la bibliothèque Payments

Pour suivre les changements d’état d’une commande à l’aide de la bibliothèque Payments, utilisez la fonction de rappel du statut de paiement. Pour ce faire :
  1. Lors de la création de l’objet XPayments.IntentBuilder, passez la fonction de rappel StatusReceivedCallback à l’aide de la méthode setStatusReceivedCallback.
  2. Implémentez la méthode onSuccess dans la fonction de rappel StatusReceivedCallback, qui est appelé à chaque changement d’état unique.
Avis

Le statut de la commande est passé à la méthode onSuccess dans un objet InvoicesDataResponse, qui contient un tableau d’objets InvoiceData. Chaque objet InvoiceData représente une étape du traitement de la commande et contient son statut.

Par exemple, si l’utilisateur entre initialement des données non valides, un objet avec le statut InvoicesDataResponse.CANCELED s’affichera dans la liste InvoiceData. Après correction et paiement réussi, un nouvel objet avec le statut InvoicesDataResponse.Status.DONE apparaîtra dans le tableau.

Le suivi de l’état s’arrête lorsque le statut de paiement final (InvoicesDataResponse.Status.DONE ou InvoicesDataResponse.Status.ERROR) est reçu.

Exemple :

Copy
Full screen
Small screen
val intent = XPayments.createIntentBuilder(this)
               .accessToken(<accessToken>)
               .isSandbox(<isSandbox>)
           	.setStatusReceivedCallback(object : StatusReceivedCallback {
               	override fun onSuccess(data: InvoicesDataResponse) {
                   		Log.d(TAG, "StatusReceivedCallback is fired. Result data = $data")
               	}
           	})
           	.build()

Demander l'état de la commande

Pour demander le statut actuel du paiement, appelez la méthode getOrder de la bibliothèque Store ; passez les paramètres suivants :

Avis

Le statut de la commande est passé à la méthode onSuccess dans un objet InvoicesDataResponse, qui contient un tableau d’objets InvoiceData. Chaque objet InvoiceData représente une étape du traitement de la commande et contient son statut.

Par exemple, si l’utilisateur entre initialement des données non valides, un objet avec le statut InvoicesDataResponse.CANCELED s’affichera dans la liste InvoiceData. Après correction et paiement réussi, un nouvel objet avec le statut InvoicesDataResponse.Status.DONE apparaîtra dans le tableau.

Le suivi de l’état s’arrête lorsque le statut de paiement final (InvoicesDataResponse.Status.DONE ou InvoicesDataResponse.Status.ERROR) est reçu.

Exemple :

Copy
Full screen
Small screen

XPayments.getStatus(<token>, <isSandbox>, object : GetStatusCallback {
            override fun onSuccess(data: InvoicesDataResponse?) {
                Log.d(TAG, "onSuccess is fired. Result data = $data")
            }

           override fun onError(throwable: Throwable?, errorMessage: String?) {
                Log.d(TAG, "onError is fired. ErrorMessage = $errorMessage")
            }

})
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.

Liens utiles

Dernière mise à jour: 5 Septembre 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 !