Die Google Play Voided Purchases API bietet eine Liste von Bestellungen, die mit von Nutzern stornierten Käufen verknüpft sind. Anhand dieser Informationen können Sie ein Sperrsystem implementieren, das den Nutzer daran hindert, auf Produkte aus diesen Bestellungen zuzugreifen.
Diese API gilt für einmalige In-App-Bestellungen und App-Abos.
Ein Kauf kann auf folgende Weise für ungültig erklärt werden:
- Der Nutzer fordert eine Erstattung für seine Bestellung an.
- Der Nutzer storniert seine Bestellung.
- Eine Bestellung wird in Rechnung gestellt.
- Der Entwickler storniert oder erstattet die Bestellung. Hinweis: In der Voided Purchases API werden nur widerrufene Bestellungen angezeigt. Wenn Entwickler Erstattungen ohne Festlegung einer Widerrufsoption vornehmen, werden Bestellungen nicht in der API angezeigt.
- Google storniert oder erstattet die Bestellung.
Mit dieser API können Sie für alle Nutzer Ihrer App eine ausgewogenere und fairere Nutzung ermöglichen, insbesondere wenn es sich bei Ihrer App um ein Spiel handelt.
Zugriff erhalten
Wenn Sie die Voided Purchases API verwenden möchten, benötigen Sie die Berechtigung zum Aufrufen von Finanzinformationen. Die Autorisierung erfolgt über einen OAuth-Client oder ein Dienstkonto. Wenn Sie ein Dienstkonto verwenden, aktivieren Sie in diesem Konto die Berechtigung „Finanzberichte abrufen“.
Weitere Informationen dazu, wie Sie autorisierten Zugriff auf Google Play Developer APIs erhalten, finden Sie in den folgenden Leitfäden:
Ungültige Käufe ansehen
Verwenden Sie die Methode GET
, um eine Liste der stornierten Käufe anzufordern. Gib in deiner Anfrage den voll qualifizierten Paketnamen für deine App, z. B. com.google.android.apps.maps
, und das Autorisierungstoken an, das du erhalten hast, als du Zugriff auf die API erhalten hast.
GET https://www.googleapis.com/androidpublisher/v3/applications/ your_package_name/purchases/voidedpurchases?access_token=your_auth_token
Sie können in Ihrer Anfrage auch die folgenden Parameter angeben, die jeweils optional sind:
- Startzeit
Die Zeit in Millisekunden seit der UNIX-Epoche für den ältesten stornierten Kauf, den Sie in der Antwort sehen möchten. Standardmäßig ist
startTime
auf 30 Tage festgelegt.Die API kann nur stornierte Käufe anzeigen, die in den letzten 30 Tagen stattgefunden haben. Ältere nicht mehr gültige Käufe sind in der Antwort nicht enthalten, unabhängig vom Wert, den Sie für
startTime
angegeben haben.- Ende
Die Zeit in Millisekunden seit der UNIX-Epoche für den neuesten stornierten Kauf, den Sie in der Antwort sehen möchten. Standardmäßig ist
endTime
auf die aktuelle Zeit festgelegt.- maxResults (max. Ergebnisse)
- Die maximale Anzahl an stornierten Käufen, die in jeder Antwort erscheinen. Der Standardwert ist 1.000. Der Höchstwert für diesen Parameter ist ebenfalls 1.000.
- Token
- Ein Fortsetzungs-Token aus einer vorherigen Antwort, mit dem Sie mehr Ergebnisse ansehen können.
- Typ
Der Typ der stornierten Käufe, die in den einzelnen Antworten angezeigt werden. Wenn dieser Wert auf 0 gesetzt ist, werden nur ungültige In-App-Käufe zurückgegeben. Wenn dieser Wert auf „1“ gesetzt ist, werden sowohl stornierte In-App-Käufe als auch stornierte Abokäufe zurückgegeben. Der Standardwert ist 0.
Die Antwort ist ein JSON-String, der eine Liste von ungültigen Käufen enthält. Wenn es mehr Ergebnisse gibt als die im Anfrageparameter maxResults
angegebene Zahl, enthält die Antwort einen nextPageToken
-Wert, den Sie an eine nachfolgende Anfrage übergeben können, um mehr Ergebnisse zu sehen. Das erste Ergebnis in der Liste zeigt den ältesten stornierten Kauf.
{ "tokenPagination": { "nextPageToken": "next_page_token" }, "voidedPurchases": [ { "kind": "androidpublisher#voidedPurchase", "purchaseToken": "some_purchase_token", "purchaseTimeMillis": "1468825200000", "voidedTimeMillis": "1469430000000", "orderId": "some_order_id", "voidedSource": "0", "voidedReason": "4" }, { "kind": "androidpublisher#voidedPurchase", "purchaseToken": "some_other_purchase_token", "purchaseTimeMillis": "1468825100000", "voidedTimeMillis": "1470034800000", "orderId": "some_other_order_id", "voidedSource": "2", "voidedReason": "5" }, ] }
Kontingente
Die Voided Purchases API legt die folgenden Kontingente pro Paket fest:
- 6.000 Abfragen pro Tag. Der Tag beginnt und endet um Mitternacht Pacific Time.
- 30 Abfragen in einem beliebigen 30-Sekunden-Zeitraum
Richtlinien für erste Anfragen
Während der ersten API-Anfrage möchten Sie möglicherweise alle verfügbaren Daten für Ihre App abrufen. Obwohl dieser Vorgang unwahrscheinlich ist, kann Ihr tägliches Kontingent erschöpft sein. Beachte die folgenden Best Practices, um Daten zu ungültigem Kauf besser und einheitlicher abzurufen:
- Verwenden Sie den Standardwert für den Parameter
maxResults
. Wenn Sie Ihr gesamtes Abfragekontingent für einen Tag verwenden, können Sie die Details von 6.000.000 gültigen Käufen abrufen. - Wenn eine Antwort einen Wert für
nextPageToken
enthält, weisen Sie diesen Wert bei Ihrer nächsten Anfrage dem Parametertoken
zu.
Best Practices
Wenn du die Verwendung dieser API in deiner App festlegst, denke daran, dass es viele Gründe gibt, einen Kauf zu stornieren, und dass es keine einzelne Lösung gibt, die in allen Fällen funktioniert. Beachte deine Nutzer beim Entwerfen deiner Widerrufsrichtlinien und -strategien. Dabei können Sie die folgenden empfohlenen Vorgehensweisen anwenden:
- Verwenden Sie diese API als eines von vielen Elementen in einer umfassenden Strategie, um unerwünschtes Verhalten zu vermeiden. In der Regel ist der Widerruf des Zugriffs auf In-App-Produkte in Kombination mit einer App mit vernünftigen Preisen für In-App-Käufe, einem App-Design, das unerwünschtes Verhalten erschwert, und einer starken Nutzerbasis, die ein solches Verhalten ablehnt, sowie einem responsiven und effizienten Nutzersupportkanal möglich.
- Verwalte deine Widerrufsrichtlinie einheitlich, damit alle Nutzer unterbrechungsfrei behandelt werden.
- Bei unerwünschtem Verhalten können Sie eine gestaffelte Richtlinie erstellen. Beginne beispielsweise mit In-App-Warnungen für erste Verstöße und eskalieren Sie dann Ihre Antworten, wenn das unerwünschte Verhalten des Nutzers fortgesetzt wird. Als letzte Möglichkeit können Sie verhindern, dass ein Nutzer mit Ihrer App interagiert.
- Wenn du eine Widerrufsrichtlinie einrichtest und sie bei jeder Aktualisierung aktualisierst, informiere deine Nutzer mithilfe der entsprechenden Kanäle deiner App über die Änderungen. Gib deinen Nutzern Zeit, um diese Änderungen genau zu verstehen, bevor sie in deiner App wirksam werden.
- Du musst für deine Nutzer transparent sein und sie informieren, wenn du Maßnahmen triffst, z. B. um ihren Zugriff auf ein In-App-Produkt zu widerrufen. Idealerweise sollten Nutzer in der Lage sein, deine Entscheidungen anzufechten und solche Streitigkeiten fair zu behandeln.
- Beobachten Sie Feedbackformulare und Community-Foren, um herauszufinden, warum Nutzer sich auf unerwünschte Weise verhalten und wie sie ein solches Verhalten verhalten. Nutzen Sie diese Erkenntnisse als erste Verteidigungslinie.