Alle Artikel
Deep dive7 Min. Lesezeit

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.

Ein Entwicklerarbeitsplatz in der Dämmerung mit einem Telefon, das eine rückgängig gemachte Zahlung zeigt, veranschaulicht eine Google-Play-Benachrichtigung über einen stornierten Kauf, die einen Server erreicht

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üllenfeldWas es enthält
versionDie Schemaversion der Benachrichtigung, zum Beispiel 1.0
packageNameDie App, zu der das Ereignis gehört, zum Beispiel com.acme.app
eventTimeMillisWann das Ereignis geschah, in Millisekunden seit der Epoche
Eines von fünf BenachrichtigungsobjektenoneTimeProductNotification, 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.

FeldWas es istWie Sie es verwenden
purchaseTokenDas Token, das dem Gerät beim Kauf des Artikels übergeben wurdeIhr Primärschlüssel. Gleichen Sie ihn mit dem Kaufdatensatz ab, den Sie zum Zeitpunkt der Gewährung gespeichert haben
orderIdDie dem Käufer angezeigte Bestell-ID, zum Beispiel GS.0000-0000-0000Ein zweiter, menschenlesbarer Schlüssel für Support und Abgleich
productTypeOb der stornierte Artikel ein Abonnement oder ein Einmalkauf warLeiten Sie auf den richtigen Widerrufsweg
refundTypeOb die Stornierung eine vollständige Rückerstattung oder eine mengenbasierte Teilrückerstattung warEntscheiden 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`KonstanteBedeutung
1PRODUCT_TYPE_SUBSCRIPTIONEin Abonnementkauf wurde storniert
2PRODUCT_TYPE_ONE_TIMEEin 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`KonstanteBedeutung
1REFUND_TYPE_FULL_REFUNDDer Kauf wurde vollständig storniert
2REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUNDEin 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_PURCHASED und ONE_TIME_PRODUCT_CANCELED.
Eine mit der Vorderseite nach unten liegende Kreditkarte neben einem Papierbeleg, stellvertretend für einen stornierten Google-Play-Kauf

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 das DeveloperNotification-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 purchaseToken mit 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 die orderId zurück.
  • Lesen Sie productType, um den Widerrufsweg für Abonnement oder Einmalkauf zu wählen, und lesen Sie refundType, 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 purchaseToken und orderId als 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.

SignalRichtungBerücksichtigt es Ihre Eingabe
Benachrichtigung über einen stornierten Kauf (RTDN)Google sendet an Ihren ServerNein. Sie meldet eine bereits erfolgte Stornierung
Voided Purchases APIIhr Server fragt bei Google abNein. Es ist eine schreibgeschützte Liste vergangener Stornierungen
pendingRefundReviewNotification (RTDN)Google sendet an Ihren ServerJa, indirekt. Sie kennzeichnet eine Rückbuchung, die Sie dann über orders.reviewrefund innerhalb von 24 Stunden anfechten
Apple CONSUMPTION_REQUESTApple fragt bei Ihrem Server anJa. 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

RefundHalt

Der Rückerstattungs-Autopilot für App Store und Google Play

Weiterlesen

Die nächste Rückerstattungsanfrage ist bereits unterwegs.

Richten Sie RefundHalt in der Zeit ein, die Sie brauchen, um eine weitere Support-E-Mail über eine Rückerstattung zu lesen, die Sie nicht anfechten konnten.