Cycle de vie des achats uniques

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.

États du cycle de vie et événements de transition pour les achats uniques.
Figure 1 : états du cycle de vie et événements de transition des achats uniques

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 :

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 :

  1. Interrogez le purchases.productsv2.getproductpurchasev2 point de terminaison pour obtenir le dernier état d'achat du produit ponctuel. Pour appeler cette méthode pour un achat, vous avez besoin du purchaseToken correspondant dans votre application ou dans la notification RTDN ONE_TIME_PRODUCT_PURCHASED.
  2. Appelez getPurchaseState() et assurez-vous que l' état de l'achat est PURCHASED.
  3. Vérifiez l'achat.
  4. Autorisez l'utilisateur à accéder au contenu. Le compte utilisateur associé à l' achat peut être identifié à l'aide du obfuscatedExternalAccountId champ de purchases.productsv2.getproductpurchasev2, s'il a été défini avec setObfuscatedAccountId() au moment où l'achat a été effectué.
    1. Pour les achats de produits non consommables, confirmez la livraison du contenu en appelant la purchases.products.acknowledge méthode. Assurez-vous que l'achat n'a pas déjà été confirmé en vérifiant le acknowledgementState champ.
    2. Si le produit est consommable, marquez l'article comme consommé en appelant la purchases.products.consume méthode afin que l' utilisateur puisse l'acheter à nouveau après l'avoir consommé. Cette méthode confirme également l'achat.

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.