Play-Abrechnungskomponenten auf Ihrem Back-End-Server

Sie haben Play Billing gerade in Ihre Android-App oder Progressive Web App implementiert und Ihre Nutzer können Ihre digitalen Waren kaufen. Jetzt ist es an der Zeit, einige wichtige Play Billing-Komponenten auf Ihrem Backend-Server zu implementieren.

Google Play Developer API

Die Google Play Developer API besteht aus zwei Komponenten: der Subscriptions and In-app Purchases API und der Publishing API. Die API für Abos und In-App-Käufe besteht aus den folgenden REST-Ressourcen, mit denen Sie Produkte und Käufe verwalten können:

Sie können die Google Play Developer API direkt als REST API verwenden. Alternativ können Sie auch die Clientbibliotheken nutzen, um schnell mit der Entwicklung zu beginnen. Die Clientbibliotheken für alle unterstützten Sprachen finden Sie hier. Folgen Sie dem Startleitfaden für die Google Play Developer API, um Ihr API-Projekt zu verknüpfen und API-Zugriffsclients einzurichten.

Alle In‑App-Produkte auflisten

Wenn Sie im Frontend (in Ihrer Android-App oder Progressive Web App) nach verfügbaren Produktdetails suchen, müssen Sie die Liste der Produkt-IDs angeben. Sie können dies auf Ihrem Backend-Server mit der Play Developer API-Methode inappproducts.list implementieren. Damit werden alle In-App-Produkte und Abos aufgelistet, die Sie in der Play Console erstellt haben. Prüfen Sie die status der einzelnen Produkte und senden Sie nur die active an Ihren App-Client.

Käufe vor dem Gewähren von Berechtigungen bestätigen

Ein wichtiger Teil der Implementierung von Play Billing in Ihrer Android-App oder Progressive Web App ist die Überprüfung von Käufen, bevor Sie dem Nutzer eine Berechtigung gewähren. Wenn Sie einem Nutzer eine Berechtigung gewähren, erhält er Zugriff auf die Vorteile oder Inhalte, die mit dem von ihm gekauften Artikel verknüpft sind. Da hierfür sensible Daten verarbeitet werden müssen, sollte dies auf dem Backend-Server erfolgen.

Die Google Play Developer API bietet die Methoden purchases.products:get und purchases.subscriptions:get. Verwenden Sie diese mit Kauftokens, die in der App abgerufen oder auf Ihrem Backend-Server gespeichert wurden, um zu prüfen, ob ein Kauf legitim ist. Sie sollten Kauf-Tokens auf Ihrem Backend-Server für zusätzliche Käufe und die Überprüfung von Nutzerberechtigungen im Blick behalten. Weitere Informationen zu den erforderlichen Schritten finden Sie in der Dokumentation zur Google Play-Abrechnung unter „Käufe bestätigen“.

In-App-Käufe

Nachdem Ihr Back-End das Kauf-Token vom Client erhalten hat, sollte es die Google Play Developer API aufrufen und prüfen, ob das Token bereits verwendet wurde. Das Feld purchaseState eines gültigen Kaufs hat den Wert 1.

Wenn der Kauf gültig ist, sollte der Client den Kauf bestätigen und die Berechtigung erteilen, nachdem er die Antwort vom Server erhalten hat.

Abokäufe

Ähnlich wie bei der Bestätigung von In-App-Käufen sollte Ihr Backend-Server die Google Play Developer API aufrufen, nachdem er das Kauf-Token vom Client erhalten hat, und prüfen, ob das Abo noch gültig ist.

Ihr Client sollte die Berechtigung gewähren, wenn das Feld expiryTimeMillis des Abos größer als die aktuelle Zeit ist.

Das ist auch ein guter Zeitpunkt, um das Feld linkedPurchaseToken zu prüfen und Ihre Abodatenbank entsprechend zu aktualisieren, um Upgrades, Downgrades und andere Abo-Abläufe zu verarbeiten. Im Folgenden werden die einzelnen Elemente im Detail beschrieben.

Backend-Status aktuell halten

Wenn Ihre App auf verschiedenen Plattformen verfügbar ist, auf denen möglicherweise auch unterschiedliche Zahlungsmethoden verwendet werden, können Sie Ihre Nutzer und ihre Käufe auf Ihrem Backend-Server im Blick behalten. So können Ihre Nutzer auf allen Geräten und Plattformen, auf denen sie Ihre App verwenden, auf ihre Berechtigungen zugreifen.

Das kann so einfach sein wie eine Datenbank, in der Sie Ihre Nutzer und ihre aktuellen Berechtigungen erfassen. Wenn Nutzer Käufe tätigen oder ihre Berechtigungen nutzen, aktualisieren Sie die Informationen entsprechend. Wenn der Nutzer das nächste Mal über eine andere Plattform auf Ihre App zugreift, können Sie die entsprechenden Berechtigungen aus Ihrem Backend abrufen, damit der Nutzer darauf zugreifen kann.

Umgang mit Änderungen des Abostatus

Ein Abo kann im Laufe seines Lebenszyklus verschiedene Statusänderungen durchlaufen. Sie sollten auf jede entsprechend reagieren. Weitere Informationen zum Umgang mit dem Abolebenszyklus

Subscription.linkedPurchaseToken

Wie in der Abodokumentation beschrieben, wird bei jedem neuen Google Play-Kaufvorgang (Erstkauf, Upgrade oder Downgrade) ein neues Kauf-Token generiert. Mit dem Feld linkedPurchaseToken lässt sich erkennen, wenn mehrere Kauf-Tokens zum selben Abo gehören.

Bei jeder Überprüfung eines Abos sollte Ihr Backend prüfen, ob das Feld linkedPurchaseToken festgelegt ist. Wenn ja, steht der Wert in diesem Feld für das vorherige Token, das jetzt ersetzt wurde. Sie sollten dieses Token sofort als ungültig markieren, damit Nutzer nicht mehr damit auf Ihre Inhalte zugreifen können.

Wenn das Backend beispielsweise das Kauf-Token A für den ersten Kauf mit einem leeren Feld linkedPurchaseToken empfängt, wird die Berechtigung für dieses Token aktiviert. Wenn das Backend später nach dem Upgrade das neue Kauf-Token B empfängt, wird das Feld linkedPurchaseToken geprüft. Da es auf A gesetzt ist, wird die Berechtigung für das Kauf-Token A deaktiviert.

Verknüpfte Kauf-Tokens bei einem Abo-Upgrade verarbeiten

Eine detaillierte Beschreibung der Implementierung von linkedPurchaseToken finden Sie unter linkedPurchaseToken korrekt implementieren, um doppelte Abos zu verhindern.

Entwicklerbenachrichtigungen in Echtzeit

Die Methode purchases.subscriptions:get der Google Play Developer API ist die Quelle der Wahrheit für die Verwaltung von Nutzerabos. Wenn Sie den Status Ihrer Abonnenten auf einem sicheren Backend-Server verwalten, sollten Sie ihn mit Google-Servern synchronisieren. Häufiges Abrufen der Google Play Developer API kann jedoch dazu führen, dass die API-Kontingentbeschränkungen erreicht werden und Benachrichtigungen über wichtige Nutzeraktionen (z. B. Kündigung oder Upgrade eines Abos) verzögert eingehen.

Entwicklerbenachrichtigungen in Echtzeit (Real-Time Developer Notifications, RTDN) sind eine Google Play Billing-Funktion, mit der Ihr Server sofort benachrichtigt wird, wenn sich der Berechtigungsstatus eines Abonnenten ändert (z.B. wenn ein Abo gekauft, gekündigt oder ausgesetzt wird). Mit RTDN können Sie Ihre Abonnentendatenbank synchronisieren, indem Sie nur auf diese Benachrichtigungen reagieren, anstatt die Google Play Developer API regelmäßig abzufragen.

Ihr Backend-Server erhält eine SubscriptionNotification für Ereignisse, die sich auf den Abostatus auswirken, z. B. Verlängerungen und Kündigungen. Rufen Sie dann die Google Play Developer API mit dem Kauf-Token in der Benachrichtigung auf, um den vollständigen Status abzurufen und Ihren eigenen Backend-Status zu aktualisieren.

Hier finden Sie eine Anleitung zum Konfigurieren von RTDN für Ihre App. Anschließend sollten Sie Ihren Backend-Server so einrichten, dass er diese Nachrichten verarbeitet.

Weitere Informationen finden Sie in der RTDN-Referenz.