Eine Benachrichtigung über einen stornierten Kauf lässt Ihren Google Play-Server den Zugriff in dem Moment entziehen, in dem eine Rückerstattung eintrifft
Google Play kann Ihrem Server in dem Moment eine Benachrichtigung über einen stornierten Kauf senden, in dem ein Kauf erstattet, zurückgebucht oder storniert wird. Sie trägt einen purchaseToken, eine orderId, einen productType und einen refundType und bedeutet eine Sache, den Zugriff zu entziehen. So lesen und verdrahten Sie sie.

Wichtigste Erkenntnisse
- Eine Benachrichtigung über einen stornierten Kauf ist eine Real-time Developer Notification, die Google Play in dem Moment an Ihr Cloud Pub/Sub-Topic sendet, in dem ein Kauf erstattet, zurückgebucht oder anderweitig storniert wird. Es ist ein Push-Signal, nicht etwas, das Sie durch Polling abfragen müssen.
- Die Benachrichtigung trägt genau vier Felder: `purchaseToken`, `orderId`, `productType` und `refundType`. Das genügt, um den exakten Kauf in Ihrer Datenbank zu finden und das damit verknüpfte Nutzungsrecht zu entziehen.
- `productType` ist `1` für ein storniertes Abonnement und `2` für einen stornierten Einmalkauf. `refundType` ist `1` für eine vollständige Rückerstattung und `2` für eine mengenbasierte Teilrückerstattung, die nur für Einmalkäufe mit mehreren Einheiten gilt.
- Eine Benachrichtigung über einen stornierten Kauf bedeutet, dass der Kunde sein Geld bereits zurückhat. Googles eigene Empfehlung lautet, den Zugriff auf die zugehörigen Inhalte zu entziehen, weil der Käufer das Nutzungsrecht nicht mehr besitzen sollte.
- Benachrichtigungen über stornierte Käufe sind aus, bis Sie sie einschalten. In der Play Console unter Monetization setup wählen Sie entweder Abonnements plus alle stornierten Käufe oder das plus Einmalprodukt-Ereignisse. Beide Optionen schließen stornierte Käufe ein.
- Eine Benachrichtigung über einen stornierten Kauf ist keiner der beiden Rückerstattungsabläufe, die Sie um Nachweise bitten. Sie ist eine nachträgliche Mitteilung. Die einzigen Abläufe, die Ihre Eingabe berücksichtigen, sind Apples CONSUMPTION_REQUEST mit einem Zeitfenster von 12 Stunden und Google Plays Rückbuchungsprüfung über orders.reviewrefund mit einem Zeitfenster von 24 Stunden.
- Ab dem August 3, 2026 gibt Google den Kaufpreis plus die Bankgebühr einer Rückbuchung an den Entwickler weiter. Eine Benachrichtigung über einen stornierten Kauf ist oft die Art, wie Ihr Server zum ersten Mal erfährt, dass eine Stornierung durch Rückbuchung eingetroffen ist, daher ist ihr Verdrahten das, was Ihnen erlaubt, einen Kunden nicht mehr zu bedienen, für den Sie nicht mehr bezahlt werden.
Eine Rückerstattung bei Google Play muss nichts sein, das Sie später in einem Bericht entdecken. Google Play kann Ihrem Server in dem Augenblick eine Benachrichtigung über einen stornierten Kauf senden, in dem ein Kauf storniert wird, ob der Käufer eine Selbstbedienungs-Rückerstattung vorgenommen hat, ein Support-Mitarbeiter eine gewährt hat, eine Bank eine Rückbuchung erzwungen hat oder Sie die Bestellung selbst mit gesetztem Widerrufs-Flag erstattet haben. Die Nachricht ist winzig, sie nennt den exakten Kauf und sie trägt eine Anweisung, das Nutzungsrecht zurückzunehmen, weil das Geld bereits weg ist.
Was eine Benachrichtigung über einen stornierten Kauf tatsächlich ist
Eine Benachrichtigung über einen stornierten Kauf ist ein Typ von Google Plays Real-time Developer Notifications, oder RTDN. RTDN ist ein Push-Kanal. Google veröffentlicht eine Nachricht in einem Cloud Pub/Sub-Topic, das Ihnen gehört, und Ihr Backend empfängt sie innerhalb von Augenblicken nach dem Ereignis, statt es bei Ihrer nächsten planmäßigen Abfrage zu erfahren. Das ist der ganze Sinn der Benachrichtigung über einen stornierten Kauf gegenüber dem älteren Pull-Weg: Sie erfahren von der Rückerstattung, während sie geschieht, nicht Stunden später.
Der Pull-Weg existiert weiterhin und ist weiterhin wichtig. Die Voided Purchases API erlaubt Ihrem Server, nach Ihrem eigenen Zeitplan die Liste der Käufe abzufragen, die in einem Zeitraum storniert wurden. Die beiden ergänzen sich. Die Benachrichtigung teilt Ihnen den Augenblick mit, in dem ein Kauf umschlägt; die API erlaubt Ihnen, in großem Umfang abzugleichen und alles nachzutragen, was eine verpasste Nachricht zurückgelassen hätte.
Sie reist innerhalb einer Real-time Developer Notification
Die Benachrichtigung über einen stornierten Kauf trifft niemals allein ein. Sie sitzt in einer DeveloperNotification-Hülle, und diese Hülle wird als einzelne base64-codierte Zeichenkette im Feld data der Pub/Sub-Nachricht geliefert. Ihr Handler decodiert diese Zeichenkette zu JSON, bevor er irgendetwas lesen kann. Die Hülle nennt stets die App und den Ereigniszeitpunkt und sie enthält genau ein Benachrichtigungsobjekt aus den fünf, die Google definiert. Sie schließen sich gegenseitig aus, daher wird eine Nachricht, die ein voidedPurchaseNotification trägt, nicht auch ein Abonnement- oder Einmalkauf-Ereignis tragen.
| Hüllenfeld | Was es enthält |
|---|---|
version | Die Schemaversion der Benachrichtigung, zum Beispiel 1.0 |
packageName | Die App, zu der das Ereignis gehört, zum Beispiel com.acme.app |
eventTimeMillis | Wann das Ereignis geschah, in Millisekunden seit der Epoche |
| Eines von fünf Benachrichtigungsobjekten | oneTimeProductNotification, subscriptionNotification, voidedPurchaseNotification, pendingRefundReviewNotification oder testNotification. Pro Nachricht ist nur eines vorhanden |
Die vier Felder, die sie trägt
Nehmen Sie die Hülle weg, und die Benachrichtigung über einen stornierten Kauf selbst besteht aus vier Feldern. Das ist bewusst sparsam. Googles Standpunkt ist, dass diese vier ausreichen, wenn Sie nur den richtigen Kauf finden und das Nutzungsrecht anpassen müssen, und Sie keine API zurückrufen müssen, um zu handeln.
| Feld | Was es ist | Wie Sie es verwenden |
|---|---|---|
purchaseToken | Das Token, das dem Gerät beim Kauf des Artikels übergeben wurde | Ihr Primärschlüssel. Gleichen Sie ihn mit dem Kaufdatensatz ab, den Sie zum Zeitpunkt der Gewährung gespeichert haben |
orderId | Die dem Käufer angezeigte Bestell-ID, zum Beispiel GS.0000-0000-0000 | Ein zweiter, menschenlesbarer Schlüssel für Support und Abgleich |
productType | Ob der stornierte Artikel ein Abonnement oder ein Einmalkauf war | Leiten Sie auf den richtigen Widerrufsweg |
refundType | Ob die Stornierung eine vollständige Rückerstattung oder eine mengenbasierte Teilrückerstattung war | Entscheiden Sie, ob Sie alles oder nur die erstattete Menge entziehen |
productType sagt Ihnen, was storniert wurde
productType ist eine kleine Ganzzahl, und sie entscheidet, welchen Ihrer Widerrufswege Sie nehmen. Eine Abonnement-Stornierung muss laufenden Zugriff rückabwickeln; eine Einmalkauf-Stornierung entfernt nur ein einzelnes Nutzungsrecht.
| Wert von `productType` | Konstante | Bedeutung |
|---|---|---|
1 | PRODUCT_TYPE_SUBSCRIPTION | Ein Abonnementkauf wurde storniert |
2 | PRODUCT_TYPE_ONE_TIME | Ein Einmalkauf wurde storniert |
refundType sagt Ihnen, wie viel zurückkam
refundType trennt eine saubere vollständige Rückabwicklung von einer teilweisen. Der Teilfall ist eng. Er tritt nur auf, wenn bei einem Einmalkauf mit mehreren Einheiten ein Teil, aber nicht die gesamte Menge, erstattet wurde.
| Wert von `refundType` | Konstante | Bedeutung |
|---|---|---|
1 | REFUND_TYPE_FULL_REFUND | Der Kauf wurde vollständig storniert |
2 | REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND | Ein Teil eines Kaufs mit mehreren Einheiten wurde storniert |
Schalten Sie sie zuerst ein, sonst kommt sie nie an
Benachrichtigungen über stornierte Käufe fließen nicht standardmäßig. Sie aktivieren RTDN einmal in der Play Console und richten sie auf ein Pub/Sub-Topic, das Sie kontrollieren. Der Schalter befindet sich unter Monetize, dann Monetization setup, im Abschnitt Real-time developer notifications oben auf der Seite. Aktivieren Sie Enable real-time notifications, fügen Sie dann Ihren vollständigen Topic-Namen in der Form projects/{project_id}/topics/{topic_name} ein und verwenden Sie Send Test Message, um zu bestätigen, dass die Leitung funktioniert, bevor Sie ihr vertrauen.
Der Inhaltsschalter ist die Stelle, an der Leute stornierte Käufe verpassen. Beide Optionen schließen sie ein, sodass Sie sich nicht versehentlich von Rückerstattungen abmelden können, während Sie Abonnements behalten.
- Get notifications for subscriptions and all voided purchases. Sie erhalten Abonnement-Ereignisse und jeden stornierten Kauf, aber keine Kaufereignisse für Einmalprodukte.
- Get all notifications for subscriptions and one-time products. Sie erhalten das Obige plus Einmalprodukt-Ereignisse wie
ONE_TIME_PRODUCT_PURCHASEDundONE_TIME_PRODUCT_CANCELED.

Was es Sie kostet, in Geld
Eine Stornierung ist ein Verlust, der bereits verbucht ist, wenn die Benachrichtigung Sie erreicht. Der Verkaufspreis ist weg, und ebenso alles, was Sie für die Bedienung dieses Kunden ausgegeben haben. Wenn er Bilder generiert, Aufrufe gegen Ihre Modelle ausgeführt, Speicher bezogen oder eine Auszahlung an einen Dritten ausgelöst hat, wurden diese Kosten mit echtem Geld bezahlt und kommen mit der Rückerstattung nicht zurück. Die Benachrichtigung kann nichts davon zurückholen. Was sie tun kann, ist, die Blutung von hier an zu stoppen, was der ganze Grund ist, schnell darauf zu reagieren.
Die Blutung ist am schlimmsten bei Abonnements und am schlimmsten bei Rückbuchungen. Ein Abonnement, das Sie nicht entziehen, kostet Sie weiterhin in der Bedienung, Monat für Monat, für einen Kunden, der nicht mehr zahlt. Und eine Rückbuchung ist die teuerste Art der Stornierung. Ab dem August 3, 2026 besagt Googles Dokumentation, dass eine Rückbuchung den Kaufpreis plus die Gebühr der Bank an den Entwickler weitergibt. Die Benachrichtigung über einen stornierten Kauf ist häufig die erste Stelle, an der Ihre eigenen Systeme hören, dass eine Rückbuchung abgeschlossen ist, daher ist ein Handler, der auf der Stelle entzieht, das, was einen verlorenen Verkauf davon abhält, sich in einen verlorenen Verkauf plus Wochen kostenlosen Dienstes zu verwandeln.
Wie Sie eine Benachrichtigung über einen stornierten Kauf behandeln, Schritt für Schritt
Verifizieren und deduplizieren Sie die Nachricht
- Bestätigen Sie, dass die Pub/Sub-Nachricht von Google stammt und auf das von Ihnen konfigurierte Topic zielt, und decodieren Sie dann das base64-Feld
data, um dasDeveloperNotification-JSON zu erhalten. - Verwenden Sie die Pub/Sub-
messageId, um Duplikate zu verwerfen. Google warnt, dass dieselbe Benachrichtigung mehr als einmal zugestellt werden kann, behandeln Sie eine erneute Zustellung also als normal und machen Sie Ihren Handler idempotent. - Bestätigen Sie die Nachricht erst, nachdem Sie sie sicher aufgezeichnet haben, damit ein Absturz mitten im Handler das Ereignis nicht verliert.
Schlagen Sie den Kauf nach
- Gleichen Sie den
purchaseTokenmit dem Kauf ab, den Sie gespeichert haben, als Sie das Nutzungsrecht zum ersten Mal gewährt haben. Greifen Sie für Support-Nachschläge und den manuellen Abgleich auf dieorderIdzurück. - Lesen Sie
productType, um den Widerrufsweg für Abonnement oder Einmalkauf zu wählen, und lesen SierefundType, um zwischen einem vollständigen und einem teilweisen Widerruf zu entscheiden.
Entziehen und aufzeichnen
- Entfernen Sie das Nutzungsrecht. Bei einer vollständigen Rückerstattung kappen Sie den Zugriff auf den Artikel. Bei einer mengenbasierten Teilrückerstattung reduzieren Sie die gewährte Menge um den erstatteten Betrag und lassen den Rest unangetastet.
- Halten Sie fest, was Sie getan haben und wann, mit
purchaseTokenundorderIdals Schlüssel. Dieser Datensatz ist es, der Ihnen später erlaubt, ein Support-Ticket zu beantworten, und der es der Voided Purchases API erlaubt, sauber gegen Ihren eigenen Zustand abzugleichen.
Wo sie unter den anderen Rückerstattungssignalen steht
Eine Benachrichtigung über einen stornierten Kauf ist eine Mitteilung, keine Verhandlung. Sie teilt Ihnen ein Ergebnis mit, das bereits entschieden ist. Es lohnt sich, sie neben den Signalen zu sehen, mit denen sie leicht zu verwechseln ist, denn nur einige von ihnen bitten überhaupt um Ihre Version der Geschichte.
| Signal | Richtung | Berücksichtigt es Ihre Eingabe |
|---|---|---|
| Benachrichtigung über einen stornierten Kauf (RTDN) | Google sendet an Ihren Server | Nein. Sie meldet eine bereits erfolgte Stornierung |
| Voided Purchases API | Ihr Server fragt bei Google ab | Nein. Es ist eine schreibgeschützte Liste vergangener Stornierungen |
pendingRefundReviewNotification (RTDN) | Google sendet an Ihren Server | Ja, indirekt. Sie kennzeichnet eine Rückbuchung, die Sie dann über orders.reviewrefund innerhalb von 24 Stunden anfechten |
| Apple CONSUMPTION_REQUEST | Apple fragt bei Ihrem Server an | Ja. Sie antworten mit Send Consumption Information innerhalb von 12 Stunden |
Der Leitsatz, an dem man festhalten sollte, ist einfach. Über beide Stores hinweg gibt es genau zwei Rückerstattungsabläufe, bei denen der Entwickler ein Mitspracherecht hat, Apples CONSUMPTION_REQUEST und Google Plays Rückbuchungsprüfung. Eine Benachrichtigung über einen stornierten Kauf ist keines von beiden. Wenn sie Sie erreicht, liegt die Entscheidung hinter Ihnen, und das Einzige, was Ihnen bleibt, ist, wie schnell Sie entziehen.
Häufig gestellte Fragen
- Was bedeutet eine Benachrichtigung über einen stornierten Kauf bei Google Play?
- Sie bedeutet, dass ein Kauf erstattet, zurückgebucht oder anderweitig storniert wurde und der Kunde sein Geld zurückhat. Googles Empfehlung lautet, den Zugriff auf die zugehörigen Inhalte zu entziehen, weil der Käufer das Nutzungsrecht nicht mehr besitzen sollte. Die Benachrichtigung nennt den exakten Kauf über seinen `purchaseToken` und seine `orderId`.
- Welche Felder enthält eine Google-Play-Benachrichtigung über einen stornierten Kauf?
- Vier: `purchaseToken`, `orderId`, `productType` und `refundType`. `productType` ist `1` für ein Abonnement und `2` für einen Einmalkauf. `refundType` ist `1` für eine vollständige Rückerstattung und `2` für eine mengenbasierte Teilrückerstattung bei einem Kauf mit mehreren Einheiten.
- Wie aktiviere ich Benachrichtigungen über stornierte Käufe?
- Öffnen Sie in der Play Console Monetize, dann Monetization setup, und aktivieren Sie im Abschnitt Real-time developer notifications Enable real-time notifications, geben Sie dann den Namen Ihres Cloud Pub/Sub-Topics ein. Beide Inhaltsoptionen, Abonnements plus alle stornierten Käufe, und das plus Einmalprodukt-Ereignisse, schließen stornierte Käufe ein.
- Was ist der Unterschied zwischen der Benachrichtigung über einen stornierten Kauf und der Voided Purchases API?
- Die Benachrichtigung ist ein Push-Signal, das in Echtzeit über Cloud Pub/Sub in dem Moment zugestellt wird, in dem ein Kauf storniert wird. Die Voided Purchases API ist ein Pull-Weg, den Ihr Server nach seinem eigenen Zeitplan abfragt, um Stornierungen über einen Zeitraum aufzulisten. Verwenden Sie die Benachrichtigung, um sofort zu reagieren, und die API, um abzugleichen und nachzutragen.
- Lässt mich eine Benachrichtigung über einen stornierten Kauf die Rückerstattung anfechten?
- Nein. Sie ist eine nachträgliche Mitteilung über eine bereits getroffene Entscheidung. Der einzige Google-Play-Ablauf, der Ihre Eingabe berücksichtigt, ist die Rückbuchungsprüfung über `orders.reviewrefund`, für deren Beantwortung Sie 24 Stunden haben, und bei Apple ist es der CONSUMPTION_REQUEST mit einem Zeitfenster von 12 Stunden.
Quellen und weiterführende Informationen
- Android Developers: Real-time developer notifications reference guide
- Google Play Developer API: Voided Purchases API
- Google Play Developer API: REST Resource purchases.voidedpurchases
- Android Developers: Purchase lifecycle and RTDNs
- Google Play Console Help: refund protection and chargeback cost responsibility
- Google Play Developer API: Method orders.reviewrefund
RefundHalt
Der Rückerstattungs-Autopilot für App Store und Google Play
Weiterlesen
Du kannst eine Google Play Bestellung selbst erstatten, und wenn du das vor einer Rückbuchung tust, sparst du die Bankgebühr
Du kannst jede Google Play Bestellung, die jünger als three years ist, mit einem einzigen API-Aufruf erstatten, mit oder ohne Entzug des Zugriffs. Wenn du das selbst tust, bevor ein Streitfall zu einer Rückbuchung wird, sparst du die Bankgebühr, die ab August 3, 2026 bei Entwicklern landet. So funktioniert orders.refund.
Apples Send Consumption Information fragt jetzt fünf Felder ab, nicht zwölf, und hier ist jedes einzelne
Wenn ein Kunde Apple um eine Rückerstattung bittet, ist die Send Consumption Information-Nutzlast Ihre Antwort. Apple hat sie von zwölf Feldern auf fünf gekürzt, drei erforderliche und zwei optionale. Hier ist jedes Feld, die Werte, die es akzeptiert, und das 12-Stunden-Fenster, in dem Sie es senden.