Lebenszyklus einmaliger Kauf

Einmalige Käufe haben einen einfacheren Lebenszyklus als Abos. Es gibt aber trotzdem mehrere Status und Übergangsereignisse, die dein Backend richtig verarbeiten muss.

Lifecycle-Status und Übergangsereignisse für einmalige Käufe.
Abbildung 1 Lebenszyklusstatus und Übergangsereignisse für einmalige Käufe.

Neue Einmalkaufprodukte

Nachdem der Nutzer den Abrechnungsvorgang abgeschlossen hat, kann deine App auf eine der folgenden Arten Informationen zum neuen Kauf abrufen:

Verwende nach Erhalt des neuen Kaufs die getPurchaseState Methode oder purchases.productsv2.getproductpurchasev2 in Play Developer API

, um den Zahlungsstatus des neuen Kaufs zu ermitteln.

Entwicklerbenachrichtigungen in Echtzeit

Wenn ein Nutzer ein Einmalkaufprodukt kauft oder den Kauf storniert, sendet Google Play eine OneTimeProductNotification Nachricht. Verwende das im OneTimeProductNotification Objekt bereitgestellte Kauf-Token, um den Kaufstatus in deinem Backend zu aktualisieren. Rufe dazu die purchases.productsv2.getproductpurchasev2 Methode auf. Diese Methode liefert den aktuellen Kauf- und Nutzungsstatus für ein bestimmtes Kauf-Token.

Wenn eine Vorbestellung ausgeführt wird und sich der Kaufstatus in „GEKAUFT“ ändert, wird eine Entwicklerbenachrichtigung in Echtzeit an deinen Client gesendet. Verarbeite nach Erhalt der RTDN den Kauf des Einmalkaufprodukts der Vorbestellung wie unter Einmalige Produktkäufe in deinem Backend verarbeiten beschrieben.

Transaktionsbezogene Entwicklerbenachrichtigungen in Echtzeit sollten in deinem sicheren Backend verarbeitet werden.

Abgeschlossene Transaktionen verarbeiten

Wenn ein Nutzer einen Einmalkaufprodukt abschließt, sendet Google Play eine OneTimeProductNotification-Nachricht mit dem Typ ONE_TIME_PRODUCT_PURCHASED. Verarbeite den Kauf nach Erhalt dieser RTDN wie unter Einmalkaufprodukte in deinem Backend verarbeiten beschrieben.

Stornierte Transaktionen verarbeiten

Wenn ein Einmalkaufprodukt storniert wird, sendet Google Play eine OneTimeProductNotification-Nachricht mit dem Typ ONE_TIME_PRODUCT_CANCELED, sofern du Entwicklerbenachrichtigungen in Echtzeit konfiguriert hast. Das kann beispielsweise passieren, wenn der Nutzer die Zahlung nicht innerhalb des erforderlichen Zeitraums abschließt oder wenn der Kauf auf Anfrage des Entwicklers oder des Kunden widerrufen wird. Wenn dein Backend-Server diese Benachrichtigung erhält, rufe die purchases.productsv2.getproductpurchasev2 Methode auf, um den aktuellen Kaufstatus abzurufen. Aktualisiere dann dein Backend entsprechend, einschließlich der Nutzerberechtigungen.

Wenn ein einmaliger Produktkauf mit dem Status Purchased erstattet wird, wirst du auch über die API für stornierte Käufe benachrichtigt.

Einmalkaufprodukte in deinem Backend verarbeiten

Unabhängig davon, ob du einen neuen Kauf über eine ONE_TIME_PRODUCT_PURCHASED Entwicklerbenachrichtigung in Echtzeit erkannt hast oder in der App über PurchasesUpdatedListener oder durch manuelles Abrufen von Käufen in der onResume()-Methode deiner App benachrichtigt wurdest, musst du den neuen Kauf verarbeiten. Wir empfehlen, die Kaufabwicklung in deinem Backend durchzuführen, um die Sicherheit zu erhöhen.

So verarbeitest du einen neuen einmaligen Kauf:

  1. Rufe den purchases.productsv2.getproductpurchasev2 Endpunkt ab, um den aktuellen Status des Einmalkaufprodukts zu erhalten. Um diese Methode für einen Kauf aufzurufen, benötigst du das entsprechende purchaseToken entweder aus deiner App oder aus der ONE_TIME_PRODUCT_PURCHASED-Entwicklerbenachrichtigung in Echtzeit.
  2. Rufe getPurchaseState() auf und prüfe, ob der Kaufstatus PURCHASED ist.
  3. Bestätige den Kauf.
  4. Gewähre dem Nutzer Zugriff auf die Inhalte. Das mit dem Kauf verknüpfte Nutzerkonto kann über das obfuscatedExternalAccountId Feld von purchases.productsv2.getproductpurchasev2 identifiziert werden, sofern beim Kauf mit setObfuscatedAccountId() ein Konto festgelegt wurde.
    1. Bestätige bei Käufen von nicht verbrauchbaren Produkten die Lieferung der Inhalte, indem du die purchases.products.acknowledge Methode aufrufst. Prüfe im Feld acknowledgementState , ob der Kauf bereits bestätigt wurde.
    2. Wenn das Produkt verbrauchbar ist, markiere es mit der purchases.products.consume Methode als verbraucht, damit der Nutzer es nach dem Verbrauch wieder kaufen kann. Mit dieser Methode wird auch der Kauf bestätigt.

In der Play Billing Library sind auch Methoden zur Kaufbestätigung und zum Verbrauch verfügbar, mit denen du Käufe aus deiner App verarbeiten kannst. Wir empfehlen jedoch, die Verarbeitung in deinem Backend durchzuführen, falls du eines hast, um die Sicherheit zu erhöhen.