Lebenszyklus einmaliger Kauf

Einmalkaufprodukte haben einen einfacheren Lebenszyklus als Aboprodukte. Es gibt jedoch mehrere Status und Übergangsereignisse, die Ihr Backend richtig verarbeiten können muss.

Abbildung 1: Lebenszyklusstatus und Übergangsereignisse für einmalige Käufe.

Neue Einmalkaufprodukte

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

Nachdem Sie den neuen Kauf erhalten haben, verwenden Sie die Methode getPurchaseState oder purchases.productsv2.getproductpurchasev2 in Play Developer API.

um den Zahlungsstatus des neuen Kaufs zu ermitteln.

Entwicklerbenachrichtigungen in Echtzeit

Wenn ein Nutzer ein einmaliges Produkt kauft oder den Kauf storniert, sendet Google Play eine OneTimeProductNotification-Nachricht. Verwenden Sie zum Aktualisieren des Kaufstatus im Backend das im OneTimeProductNotification-Objekt bereitgestellte Kauf-Token, um die Methode purchases.productsv2.getproductpurchasev2 aufzurufen. Diese Methode liefert den aktuellen Kauf- und Nutzungsstatus für ein Kauf-Token.

Wenn eine Vorbestellung ausgeführt wird und sich der Kaufstatus in PURCHASED ändert, wird eine RTDN an Ihren Client gesendet. Nachdem Sie die RTDN erhalten haben, verarbeiten Sie den Vorbestellungskauf wie unter Einmalkäufe von Produkten in Ihrem Backend verarbeiten beschrieben.

Transaktionsbezogene RTDNs sollten in Ihrem sicheren Backend verarbeitet werden.

Abgeschlossene Transaktionen verarbeiten

Wenn ein Nutzer ein Einmalkaufprodukt kauft, sendet Google Play eine OneTimeProductNotification-Nachricht mit dem Typ ONE_TIME_PRODUCT_PURCHASED. Wenn Sie diese RTDN erhalten, verarbeiten Sie den Kauf wie unter Einmalkäufe von Produkten im Backend verarbeiten beschrieben.

Abgebrochene Transaktionen verarbeiten

Wenn ein einmaliger Produktkauf storniert wird, sendet Google Play eine OneTimeProductNotification-Nachricht mit dem Typ ONE_TIME_PRODUCT_CANCELED, sofern Sie Entwicklerbenachrichtigungen in Echtzeit konfiguriert haben. Dies kann beispielsweise passieren, wenn der Nutzer die Zahlung nicht innerhalb des erforderlichen Zeitrahmens abschließt oder wenn der Kauf vom Entwickler oder auf Kundenanfrage hin widerrufen wird. Wenn Ihr Backend-Server diese Benachrichtigung empfängt, rufen Sie die Methode purchases.productsv2.getproductpurchasev2 auf, um den aktuellen Kaufstatus abzurufen. Aktualisieren Sie dann Ihr Backend entsprechend, einschließlich der Nutzerberechtigungen.

Wenn ein Einmalkaufprodukt im Status Purchased erstattet wird, werden Sie auch über die Voided Purchases API benachrichtigt.

Einmalige Produktkäufe im Backend verarbeiten

Unabhängig davon, ob Sie einen neuen Kauf über eine ONE_TIME_PRODUCT_PURCHASED RTDN erkannt haben oder in der App über PurchasesUpdatedListener oder manuelles Abrufen von Käufen in der onResume()-Methode Ihrer App darauf aufmerksam gemacht wurden, müssen Sie den neuen Kauf verarbeiten. Wir empfehlen, die Kaufabwicklung in Ihrem Backend vorzunehmen, um die Sicherheit zu erhöhen.

So verarbeiten Sie einen neuen Einmalkauf:

  1. Fragen Sie den Endpunkt purchases.productsv2.getproductpurchasev2 ab, um den aktuellen Status des einmaligen Produktkaufs zu erhalten. Wenn Sie diese Methode für einen Kauf aufrufen möchten, benötigen Sie die entsprechende purchaseToken entweder aus Ihrer App oder aus dem ONE_TIME_PRODUCT_PURCHASED RTDN.
  2. Rufen Sie getPurchaseState() an und prüfen Sie, ob der Kaufstatus PURCHASED lautet.
  3. Kauf bestätigen
  4. Gewähren Sie dem Nutzer Zugriff auf die Inhalte. Das mit dem Kauf verknüpfte Nutzerkonto kann anhand des Felds obfuscatedExternalAccountId aus purchases.productsv2.getproductpurchasev2 ermittelt werden, sofern es bei der Durchführung des Kaufs mit setObfuscatedAccountId() festgelegt wurde.
    1. Bei Käufen nicht verbrauchbarer Produkte bestätigen Sie die Bereitstellung der Inhalte durch Aufrufen der Methode purchases.products.acknowledge. Prüfen Sie im Feld acknowledgementState, ob der Kauf bereits bestätigt wurde.
    2. Wenn es sich bei dem Produkt um einen Verbrauchsartikel handelt, markieren Sie den Artikel als verbraucht, indem Sie die Methode purchases.products.consume aufrufen. So kann der Nutzer den Artikel nach dem Verbrauch noch einmal kaufen. Mit dieser Methode wird der Kauf auch bestätigt.

In der Play Billing Library sind auch Methoden zum Bestätigen und Verarbeiten von Käufen in Ihrer App verfügbar. Wir empfehlen jedoch, die Verarbeitung in Ihrem Backend vorzunehmen, falls Sie eines haben, um die Sicherheit zu erhöhen.