Lebenszyklus einmaliger Kauf

Produkte mit einmaligem Kauf haben einen einfacheren Lebenszyklus als Aboprodukte. Es gibt aber immer noch mehrere Status und Übergangsereignisse, die dein Back-End ordnungsgemäß verarbeiten können muss.

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

Neue einmalige Produktkäufe

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

Nachdem du den neuen Kauf erhalten hast, verwende die Methode getPurchaseState oder purchases.products.get in Play Developer API, um den Zahlungsstatus des neuen Kaufs zu ermitteln.

Entwicklerbenachrichtigungen in Echtzeit

Wenn ein Nutzer den Kauf eines Einmalprodukts kauft oder storniert, sendet Google Play eine OneTimeProductNotification-Nachricht. Verwende zum Aktualisieren des Back-End-Kaufstatus das im OneTimeProductNotification-Objekt enthaltene Kauftoken, um die Methode purchases.products.get aufzurufen. Diese Methode stellt den letzten Kauf- und Verbrauchsstatus anhand eines Kauftokens bereit.

Transaktionsbezogene RTDNs sollten in Ihrem sicheren Backend verarbeitet werden.

Abgeschlossene Transaktionen verarbeiten

Wenn ein Nutzer einen einmaligen Produktkauf abschließt, sendet Google Play eine OneTimeProductNotification-Nachricht vom Typ ONE_TIME_PRODUCT_PURCHASED. Wenn du diese RTDN erhältst, verarbeite den Kauf wie unter Einmalige Produktkäufe im Backend verarbeiten beschrieben.

Stornierte Transaktionen verarbeiten

Wenn ein einmaliger Produktkauf storniert wird, sendet Google Play eine OneTimeProductNotification-Nachricht vom Typ ONE_TIME_PRODUCT_CANCELED, wenn du für den Empfang von Entwicklerbenachrichtigungen in Echtzeit konfiguriert hast. Das kann beispielsweise der Fall sein, wenn der Nutzer die Zahlung nicht innerhalb des erforderlichen Zeitraums abschließt oder der Kauf vom Entwickler oder auf Anfrage des Kunden widerrufen wird. Wenn dein Backend-Server diese Benachrichtigung erhält, rufe die Methode purchases.products.get auf, um den aktuellen Kaufstatus abzurufen. Aktualisiere dann dein Backend einschließlich der Nutzerberechtigungen entsprechend.

Wenn ein einmaliger Produktkauf im Status Purchased erstattet wird, wirst du ebenfalls über die Voided Purchases API darüber informiert.

Einmalige Produktkäufe im Backend verarbeiten

Der neue Kauf muss unabhängig davon verarbeitet werden, ob du über eine ONE_TIME_PRODUCT_PURCHASED-RTDN einen neuen Kauf erkannt hast oder über PurchasesUpdatedListener auf einen In-App-Kauf aufmerksam gemacht hast oder über die Methode onResume() deiner App Käufe manuell abgerufen hast. Aus Sicherheitsgründen empfehlen wir, die Kaufabwicklung in deinem Back-End vorzunehmen.

So verarbeiten Sie einen neuen einmaligen Kauf:

  1. Fragen Sie den Endpunkt purchases.products.get ab, um den aktuellen Status des einmaligen Kaufs eines Produkts zu erhalten. Wenn du diese Methode für einen Kauf aufrufen möchtest, benötigst du die entsprechende purchaseToken entweder aus deiner App oder aus der ONE_TIME_PRODUCT_PURCHASED RTDN.
  2. Rufe getPurchaseState() auf und achte darauf, dass der Kaufstatus PURCHASED lautet.
  3. Bestätigen Sie den Kauf.
  4. Gewähren Sie dem Nutzer Zugriff auf die Inhalte. Das mit dem Kauf verknüpfte Nutzerkonto kann anhand des Felds obfuscatedExternalAccountId von purchases.products.get identifiziert werden, wenn eines mit setObfuscatedAccountId() beim Kauf festgelegt wurde.
    1. Bestätige bei Kauf von nicht konsumierbaren Produkten die Übermittlung des Inhalts durch Aufrufen der Methode purchases.products.acknowledge. Prüfen Sie im Feld acknowledgementState, ob der Kauf bereits bestätigt wurde.
    2. Wenn das Produkt Verbrauchsgüter ist, markiere den Artikel durch Aufrufen der Methode purchases.products.consume als Verbrauch, damit der Nutzer den Artikel wieder kaufen kann, nachdem er ihn verbraucht hat. Mit dieser Methode wird auch der Kauf bestätigt.

In der Play Billing Library gibt es auch Methoden zur Bestätigung und Nutzung von Käufen, mit denen du Käufe in deiner App verarbeiten kannst. Wir empfehlen jedoch, die Verarbeitung in deinem Backend abzuwickeln, wenn du eines für eine sicherere Implementierung hast.