Suivi de l’état de la commande
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 :
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 typeOrderStatusListener
;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.
Exemple d’appel à la méthode XStore.getOrderStatus :
- kotlin
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 :
- Une connexion WebSocket est établie.
- 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. - 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 :- Lors de la création de l’objet
XPayments.IntentBuilder
, passez la fonction de rappelStatusReceivedCallback
à l’aide de la méthodesetStatusReceivedCallback
. - Implémentez la méthode
onSuccess
dans la fonction de rappelStatusReceivedCallback
, qui est appelé à chaque changement d’état unique.
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 :
- kotlin
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 :
orderId
— ID de la commande reçu lors de l’achat via le panier, l’achat en un clic ou l’achat contre de la monnaie virtuelle.callback
— fonction de rappel permettant de récupérer avec succès les informations sur la commande. Lors de l’implémentation d’une fonction de rappel, utilisez l’interfaceGetStatusCallback
et implémentez les méthodesonSuccess
etonError
.
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 :
- kotlin
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")
}
})
Liens utiles
Dernière mise à jour: 5 Septembre 2024Faute de frappe ou autre erreur dans le texte ? Sélectionnez le texte concerné et appuyez sur Ctrl+Entée.