Les produits à achat unique ont un cycle de vie plus simple que les produits sur abonnement, mais le backend a tout de même plusieurs états et événements de transition à gérer correctement.
Nouveaux achats de produits uniques
Une fois que l'utilisateur a terminé le parcours de facturation, votre application peut voir les informations sur le nouvel achat de l'une des manières suivantes:
- Configurez
Real-time developer notifications
et activezGet all notifications for subscriptions and one-time products
pour recevoir des informations sur l'état des achats. - Implémentez l'interface
PurchasesUpdatedListener
deBillingClient
pour recevoir automatiquement les mises à jour d'achats. - Appelez la méthode
BillingClient.queryPurchasesAsync()
.
Après avoir reçu le nouvel achat, utilisez la méthode getPurchaseState
ou purchases.products.get in Play Developer API
pour déterminer l'état du paiement du nouvel achat.
Notifications en temps réel pour les développeurs
Lorsqu'un utilisateur achète ou annule l'achat d'un produit ponctuel, Google Play envoie un message OneTimeProductNotification
. Pour mettre à jour l'état de l'achat sur le backend, utilisez le jeton d'achat fourni dans l'objet OneTimeProductNotification
pour appeler la méthode purchases.products.get
. Cette méthode fournit le dernier état d'achat et de consommation en fonction d'un jeton d'achat.
Vous devez gérer les notifications RTDN liées aux transactions dans votre backend sécurisé.
Gérer les transactions terminées
Lorsqu'un utilisateur effectue un achat de produit unique, Google Play envoie un message OneTimeProductNotification
de type ONE_TIME_PRODUCT_PURCHASED
.
Lorsque vous recevez cette notification RTDN, traitez l'achat comme décrit dans la section Traiter les achats de produits uniques dans le backend.
Gérer les transactions annulées
Lorsqu'un achat unique est annulé, Google Play envoie un message OneTimeProductNotification
de type ONE_TIME_PRODUCT_CANCELED
si vous avez configuré la réception de notifications en temps réel pour les développeurs.
Cela peut se produire si l'utilisateur n'effectue pas le paiement dans le délai requis, ou si l'achat est révoqué par le développeur ou à la demande du client. Lorsque votre serveur backend reçoit cette notification, appelez la méthode purchases.products.get
pour obtenir le dernier état de l'achat, puis mettez à jour votre backend en conséquence, y compris les droits d'accès de l'utilisateur.
Si un achat unique à l'état Purchased
est remboursé, vous en serez également informé via l'API Voided Purchases.
Traiter les achats de produits uniques dans le backend
Que vous ayez détecté un nouvel achat via une notification RTDN ONE_TIME_PRODUCT_PURCHASED
ou que vous en ayez été informé via l'application grâce à PurchasesUpdatedListener
ou à la récupération manuelle des achats dans la méthode onResume()
de votre application, vous devez le traiter. Nous vous recommandons de gérer le traitement des achats dans le backend afin de renforcer la sécurité.
Pour traiter un nouvel achat unique, procédez comme suit :
- Interrogez le point de terminaison
purchases.products.get
pour obtenir le dernier état d'achat unique du produit. Pour appeler cette méthode pour un achat, vous avez besoin dupurchaseToken
correspondant dans votre application ou dans la notification RTDNONE_TIME_PRODUCT_PURCHASED
. - Appelez
getPurchaseState()
et assurez-vous que l'état d'achat estPURCHASED
. - Vérifiez l'achat.
- Autorisez l'utilisateur à accéder au contenu. Le compte utilisateur associé à l'achat peut être identifié à l'aide du champ
obfuscatedExternalAccountId
depurchases.products.get
, s'il a été défini avecsetObfuscatedAccountId()
au moment de l'achat.- Pour les achats de produits non consommables, confirmez la livraison du contenu en appelant la méthode
purchases.products.acknowledge
. Assurez-vous que l'achat n'a pas été confirmé précédemment en vérifiant le champacknowledgementState
. - Si le produit est consommable, marquez l'article comme consommé en appelant la méthode
purchases.products.consume
afin que l'utilisateur puisse l'acheter à nouveau après l'avoir consommé. Cette méthode confirme également l'achat.
- Pour les achats de produits non consommables, confirmez la livraison du contenu en appelant la méthode
Des méthodes de confirmation d'achat et de consommation sont également disponibles dans la bibliothèque Play Billing. Elles vous permettent de traiter les achats à partir de votre application, mais nous vous recommandons de gérer le traitement dans le backend, le cas échéant, pour une implémentation sécurisée.