Stellen Sie sich das vor: Ein Kunde kauft Ihren Jahresplan, nutzt ihn eine Woche lang und bittet Apple dann um sein Geld zurück. Sie merken es erst, wenn Ihre Auszahlung niedriger ausfällt. Niemand hat Sie etwas gefragt. Zumindest scheint es so.
Tatsächlich fragt Apple oft nach. Apple sendet Ihrem Server eine Nachricht namens CONSUMPTION_REQUEST und möchte wissen, wie der Kunde das Gekaufte wirklich genutzt hat. Wenn Ihr Server nicht reagiert, entscheidet Apple ohne Sie. Dieser Leitfaden führt Sie Schritt für Schritt durch den App Store-Rückerstattungsprozess für Entwickler und zeigt, wo es typischerweise hapert. Für einen umfassenderen Blick auf die Rückerstattungsabwehr auf iOS behandelt das auch RefundSensor's App Store refund defense page.
Kurze Antwort
Eine CONSUMPTION_REQUEST-Benachrichtigung ist Apples Art, bei einer Rückerstattungsanfrage eines Kunden nach Nutzungsdetails zu fragen. Wenn der Kunde der Datenweitergabe zugestimmt hat, sollte Ihr Server die Send Consumption Information API innerhalb von 12 Stunden aufrufen und Lieferung sowie Nutzung melden. Apple wägt diese Informationen ab und trifft die endgültige Entscheidung. Sie können eine Rückerstattung nicht genehmigen oder das Ergebnis garantieren.
Was ist Apple CONSUMPTION_REQUEST?
CONSUMPTION_REQUEST ist ein Benachrichtigungstyp in App Store Server Notifications V2. Apple sendet ihn, sobald ein Kunde eine Rückerstattungsanfrage stellt, und er deckt jeden Produkttyp ab: Verbrauchsprodukte, Nicht-Verbrauchsprodukte, nicht verlängerbare Abonnements und automatisch verlängerbare Abonnements.
Betrachten Sie es als Frage, nicht als Anweisung. Apple fordert Sie nicht auf, jemandem eine Rückerstattung zu gewähren. Apple fragt lediglich, was Sie wissen. Die endgültige Entscheidung trifft weiterhin Apple, und Ihre Antwort ist nur einer von mehreren Faktoren, die dabei berücksichtigt werden.
So funktioniert Apples Rückerstattungs-Workflow
Hier passieren zwei Dinge, die oft verwechselt werden. Der Empfang der Benachrichtigung erfolgt automatisch. Das Zurücksenden der Nutzungsinformationen passiert nur, wenn Ihr Server es auch tut.
Der Kunde bittet Apple um eine Rückerstattung.
Apple sendet eine CONSUMPTION_REQUEST an Ihre V2-Benachrichtigungs-URL.
Ihr Server prüft, ob der Kunde der Weitergabe von Nutzungsdaten zugestimmt hat.
Falls ja, sendet Ihr Server die Nutzungsdetails innerhalb von 12 Stunden.
Apple trifft seine Entscheidung. Wird die Rückerstattung gewährt, folgt eine REFUND-Benachrichtigung.
Schritt-für-Schritt-Implementierungsanleitung
Hier ist der komplette Einrichtungsprozess von Anfang bis Ende.
Benachrichtigungs-URL hinzufügen. Geben Sie in App Store Connect die HTTPS-URL Ihres Servers ein und wählen Sie Version 2.
Schnell antworten. Antworten Sie mit einem Status zwischen 200 und 206. Ein 40x- oder 50x-Status veranlasst Apple zu einem erneuten Versuch.
Signatur prüfen. V2-Payloads sind signiert. Verifizieren Sie diese, bevor Sie den Inhalt auslesen.
Kunden finden. Ordnen Sie die Transaktion einem Nutzer in Ihrer eigenen Datenbank zu.
Zustimmung prüfen. Keine Zustimmung, keine Antwort.
API aufrufen. Senden Sie die Daten mit einer App Store Server API-Anfrage, authentifiziert mit einem In-App-Purchase-Key aus App Store Connect.
Protokollieren. Führen Sie eine Aufzeichnung darüber, was Sie wann gesendet haben.
So reagieren Sie als Entwickler auf eine Apple-Rückerstattungsanfrage
Beginnen Sie immer mit der Zustimmung. Danach teilen Sie Apple mit, was tatsächlich passiert ist. Der Wert liegt in konkreten, ehrlichen Daten – schönen Sie diese nicht.
Betrachten Sie zwei Beispiele.
Ein Spieler kauft ein Münzpaket und verbraucht den Großteil davon an einem Tag. Melden Sie die intensive Nutzung. Apple um Ablehnung zu bitten, ist in diesem Fall eine faire Präferenz.
Ein Abonnent zahlt für ein Jahr, aber Ihr Server war ausgefallen und die Inhalte wurden nie geladen. Melden Sie, dass sie nicht ausgeliefert wurden. Hier ist die Gewährung der Rückerstattung womöglich die ehrliche Antwort.
Ihre Rückerstattungspräferenz ist ein Vorschlag. Apple muss sich nicht daran halten.
Die Apple Send Consumption Information API erklärt
Der Send Consumption Information endpoint ist eine PUT-Anfrage, die an eine Transaktions-ID gebunden ist (/inApps/v2/transactions/consumption/{transactionId}). Sie rufen ihn auf, nachdem eine CONSUMPTION_REQUEST eingegangen ist, und Apple erwartet die Antwort innerhalb von 12 Stunden.
Der Body ist ein ConsumptionRequest-Objekt mit fünf Feldern:
customerConsented: Hat der Kunde der Datenweitergabe zugestimmt? Der Wert muss true sein. Andernfalls lehnt Apple den Aufruf mit einem HTTP-400-Fehler ab.
deliveryStatus: Hat Ihre App den Kauf funktionsfähig ausgeliefert?
sampleContentProvided: Haben Sie vorab eine kostenlose Probe oder einen Testzeitraum angeboten?
consumptionPercentage: Wie viel wurde genutzt, angegeben in Milliunits.
refundPreference: das von Ihnen gewünschte Ergebnis.
Ein paar Regeln sorgen immer wieder für Stolperfallen. Ist deliveryStatus nicht DELIVERED, muss consumptionPercentage auf 0 gesetzt werden, sonst schlägt die Anfrage fehl. Bei einem automatisch verlängerbaren Abonnement mit GRANT_PRORATED lassen Sie consumptionPercentage weg, da Apple dies selbst berechnet. Und die Zustimmung liegt in Ihrer Verantwortung. Apple weist außerdem darauf hin, dafür nicht den App Tracking Transparency-Hinweis zu verwenden.
Integration von App Store Server Notifications V2
App Store Server Notifications V2 ist der Weg, auf dem Apple Ihren Server erreicht. Sie benötigen eine sichere HTTPS-URL, die TLS 1.2 oder höher unterstützt.
CONSUMPTION_REQUEST ist nur einer von vielen Typen. Andere, wie REFUND und REFUND_REVERSED, zeigen Ihnen, wie ein Fall ausgegangen ist. Geben Sie jedem Typ seinen eigenen Handler, damit sich der Rückerstattungscode nicht mit dem Verlängerungscode vermischt. Möchten Sie die App Store Connect-Seite in Aktion sehen? Der Refund Sensor Apple setup guide behandelt Keys und die Benachrichtigungs-URL.
Häufige Fehler, die Sie vermeiden sollten
Bei der Benachrichtigung aufhören. Eine CONSUMPTION_REQUEST bewirkt nichts, solange Ihr Server keine Daten zurücksendet.
Zustimmung ignorieren. Keine Einwilligung des Kunden bedeutet keine Antwort.
Die 12 Stunden verpassen. Diese Benachrichtigungen kommen auch nachts und am Wochenende an. Nutzen Sie eine Queue und richten Sie Alarme ein.
Unpassende Kombinationen senden. Ein Nutzungsprozentsatz für einen nicht ausgelieferten Kauf führt zum Fehlschlagen.
Signaturprüfungen überspringen. Erst verifizieren, dann vertrauen.
Langsam antworten. Geben Sie schnell einen Erfolgscode zurück und erledigen Sie die eigentliche Arbeit im Hintergrund, sonst versucht Apple es immer wieder.
Keine Möglichkeit, den Nutzer zu finden. Wenn Sie eine Transaktion keinem Kunden zuordnen können, haben Sie nichts Konkretes zu melden.
So automatisieren Sie App Store-Rückerstattungs-Workflows
Niemand möchte eine 12-Stunden-Uhr manuell im Blick behalten. Wenn Sie App Store-Rückerstattungs-Workflows automatisieren möchten, zerlegen Sie die Aufgabe in kleine Schritte:
Nehmen Sie die Benachrichtigung an und geben Sie sofort einen Erfolgscode zurück.
Legen Sie das Ereignis in einer Queue ab.
Ein Worker verifiziert es, findet den Nutzer und prüft die Zustimmung.
Der Worker erstellt die Anfrage aus gespeicherten Nutzungsdaten und ruft die API auf.
Protokollieren Sie das Ergebnis und alarmieren Sie jemanden, falls es fehlschlägt.
So erhalten Sie konsistente Antworten, einen klaren Audit-Trail, und niemand muss um 3 Uhr morgens wach sein. Sie können das selbst aufbauen oder die Pipeline einem Dienst wie RefundSensor übergeben.
Best Practices für Entwickler
Speichern Sie echte Nutzungsdaten: Sessions, verbrauchte Credits, geöffnete Inhalte. Zahlen, die Sie nie erfasst haben, können Sie auch nicht melden.
Fügen Sie Ihren Nutzungsbedingungen oder dem Onboarding einen klaren Zustimmungsschritt hinzu und protokollieren Sie, wann sie erteilt wurde.
Legen Sie Ihre Rückerstattungsregeln einmal schriftlich fest und bilden Sie sie im Code ab, statt von Fall zu Fall zu entscheiden.
Testen Sie mit Sandbox-Benachrichtigungen, bevor Sie live gehen.
Hängen Sie jedem Kauf ein Account-Token an, damit Sie den Käufer später identifizieren können. Dieser appAccountToken guide erklärt, wie das geht.
Überprüfen Sie die Rückerstattungsergebnisse einmal im Monat. Ungewöhnliche Ausschläge können auf ein defektes Feature oder eine verwirrende Paywall hinweisen.
Fazit
Der Apple-Rückerstattungs-Workflow besteht im Kern aus zwei Hälften. Apple sendet die CONSUMPTION_REQUEST, und Sie entscheiden, ob Sie antworten. Wenn der Kunde zugestimmt hat, senden Sie ehrliche Daten innerhalb von 12 Stunden über die Send Consumption Information API. Die Entscheidung trifft weiterhin Apple.
Ein guter erster Schritt: Stellen Sie sicher, dass Ihre V2-Benachrichtigungs-URL live ist und dass Ihr Server eine Transaktion einem Nutzer zuordnen kann. Diese beiden Prüfungen ersparen Ihnen später viel Kopfzerbrechen.
Häufig gestellte Fragen
Eine V2-Nachricht, die Apple sendet, wenn ein Kunde eine Rückerstattung verlangt. Sie fordert Sie zur Angabe von Nutzungsdetails auf.
Apple erwartet eine Antwort innerhalb von 12 Stunden nach der Benachrichtigung.
Ja. Ohne sie sollten Sie nicht antworten. Eine Anfrage, bei der customerConsented nicht auf true gesetzt ist, wird abgelehnt.
Nicht unbedingt. Apple nutzt Ihre Daten als Entscheidungsgrundlage, trifft die Entscheidung aber selbst.
Verbrauchsprodukte (Consumables), Nicht-Verbrauchsprodukte (Non-Consumables), nicht verlängerbare Abonnements und automatisch verlängerbare Abonnements.



