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 ponctuels
Une fois que l'utilisateur a terminé le flux de facturation, votre application a accès aux informations sur le nouvel achat de l'une des manières suivantes :
- Configurez
Real-time developer notificationset activezGet all notifications for subscriptions and one-time productsafin de recevoir des mises à jour sur l'état des achats. - Implémentez l'
PurchasesUpdatedListenerinterface à partir deBillingClientpour recevoir automatiquement les mises à jour des achats. - Appelez la
BillingClient.queryPurchasesAsync()méthode.
Après avoir reçu le nouvel achat, utilisez la
getPurchaseState méthode ou
purchases.productsv2.getproductpurchasev2 in Play Developer API
pour déterminer l'état du paiement.
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 votre achat en backend, utilisez le jeton d'achat fourni dans l'
OneTimeProductNotification objet pour appeler la
purchases.productsv2.getproductpurchasev2
méthode. Cette méthode fournit le dernier état d'achat et de consommation en fonction d'un jeton d'achat.
Lorsqu'une précommande est honorée et que son état d'achat passe à PURCHASED, une notification RTDN est envoyée à votre client. Après avoir reçu la RTDN, traitez l'achat de la précommande comme décrit dans la section Traiter les achats de produits ponctuels dans le backend.
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 ponctuel, 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 ponctuels dans le backend.
Gérer les transactions annulées
Lorsqu'un produit ponctuel 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 le serveur backend reçoit cette notification, appelez la
purchases.productsv2.getproductpurchasev2
méthode pour obtenir le dernier état de l'achat, puis mettez à jour le backend en conséquence,
y compris les droits d'accès de l'utilisateur.
Si un achat de produit ponctuel à l'état Purchased est remboursé, vous en serez également informé à l'aide de l'API Voided Purchases.
Traiter les achats de produits ponctuels dans votre backend
Que vous ayez détecté un nouvel achat à l'aide d'une ONE_TIME_PRODUCT_PURCHASED
notification RTDN
ou que vous en ayez été informé dans l'application via
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
purchases.productsv2.getproductpurchasev2point de terminaison pour obtenir le dernier état d'achat du produit ponctuel. Pour appeler cette méthode pour un achat, vous avez besoin dupurchaseTokencorrespondant dans votre application ou dans la notification RTDNONE_TIME_PRODUCT_PURCHASED. - Appelez
getPurchaseState()et assurez-vous que l' état de l'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
obfuscatedExternalAccountIdchamp depurchases.productsv2.getproductpurchasev2, s'il a été défini avecsetObfuscatedAccountId()au moment où l'achat a été effectué.- Pour les achats de produits non consommables, confirmez la livraison du
contenu en appelant la
purchases.products.acknowledgeméthode. Assurez-vous que l'achat n'a pas déjà été confirmé en vérifiant leacknowledgementStatechamp. - Si le produit est consommable, marquez l'article comme consommé en appelant la
purchases.products.consumeméthode 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
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.