API für stornierte Käufe

Die Google Play Voided Purchases API bietet eine Liste von Bestellungen, die mit Käufen verknüpft sind, die ein Nutzer storniert hat. Sie können Informationen aus dieser Liste verwenden, um ein Sperrsystem zu implementieren, das den Nutzer daran hindert, auf Produkte aus diesen Aufträgen zuzugreifen.

Diese API gilt für einmalige In-App-Bestellungen und App-Abos.

So können Sie einen Kauf für ungültig erklären:

  • Der Nutzer fordert eine Erstattung für seine Bestellung an.
  • Der Nutzer storniert die Bestellung.
  • Eine Bestellung wird rückgebucht.
  • Der Entwickler storniert die Bestellung oder erstattet sie.

  • Die Bestellung wird von Google storniert oder erstattet.

Die Verwendung dieser API trägt zu einer ausgewogeneren und faireren Erfahrung für alle Nutzer Ihrer App bei, insbesondere wenn es sich um ein Spiel handelt.

Zugriff erhalten

Wenn du mit der Voided Purchases API arbeiten möchtest, benötigst du die Berechtigung zum Abrufen von Finanzdaten. Die Autorisierung erfolgt über einen OAuth-Client oder ein Dienstkonto. Wenn Sie ein Dienstkonto verwenden, aktivieren Sie die Berechtigung „Finanzberichte abrufen“ in diesem Konto.

Weitere Informationen dazu, wie du autorisierten Zugriff auf Google Play Developer APIs erhältst, findest du in den folgenden Leitfäden:

Stornierte Käufe ansehen

Verwenden Sie die Methode GET, um eine Liste der stornierten Käufe anzufordern. Geben Sie in der Anfrage den voll qualifizierten Paketnamen für die Anwendung (z. B. com.google.android.apps.maps) und das Autorisierungstoken an, das Sie für den Zugriff auf die API erhalten haben.

GET https://www.googleapis.com/androidpublisher/v3/applications/
your_package_name/purchases/voidedpurchases?access_token=your_auth_token

Sie können auch die folgenden optionalen Parameter in Ihre Anfrage aufnehmen:

startTime

Die Zeit des ältesten stornierten Kaufs, den Sie in der Antwort sehen möchten, in Millisekunden seit der Unixzeit. Standardmäßig ist startTime auf das Datum vor 30 Tagen festgelegt.

Die API kann nur stornierte Käufe anzeigen, die in den letzten 30 Tagen erfolgt sind. Ältere stornierte Käufe sind unabhängig von dem Wert, den Sie für startTime angegeben haben, nicht in der Antwort enthalten.

endTime

Die Zeit in Millisekunden seit der Unixzeit, zu der der letzte stornierte Kauf abgeschlossen wurde, den Sie in der Antwort sehen möchten. Standardmäßig ist endTime auf die aktuelle Uhrzeit eingestellt.

maxResults
Die maximale Anzahl an stornierten Käufen, die in jeder Antwort angezeigt werden. Der Standardwert ist 1.000. Beachten Sie, dass der Maximalwert für diesen Parameter ebenfalls 1.000 ist.
Token
Ein Fortsetzungs-Token aus einer vorherigen Antwort, mit dem Sie weitere Ergebnisse ansehen können.
eingeben

Der Typ der stornierten Käufe, die in jeder Antwort angezeigt werden. Wenn der Wert auf 0 gesetzt ist, werden nur stornierte In-App-Käufe zurückgegeben. Wenn der 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 stornierten Käufen enthält. Wenn die Anzahl der Ergebnisse die im Anfrageparameter maxResults angegebene Anzahl überschreitet, enthält die Antwort den Wert nextPageToken, den Sie an eine nachfolgende Anfrage übergeben können, um weitere Ergebnisse zu sehen. Das erste Ergebnis in der Liste zeigt den ältesten abgelehnten Kauf an.

{
  "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 30-Sekunden-Zeitraum

Richtlinien für erste Anträge

Bei der ersten API-Anfrage möchten Sie möglicherweise alle verfügbaren Daten für Ihre Anwendung abrufen. Obwohl es unwahrscheinlich ist, kann dieser Vorgang Ihr Tageskontingent überschreiten. Wenn du Daten zu stornierten Käufen sicherer und einheitlicher abrufen möchtest, beachte die folgenden Best Practices:

  • Verwenden Sie den Standardwert für den Parameter maxResults. Auf diese Weise können Sie, wenn Sie Ihr gesamtes Abfragekontingent für einen Tag nutzen, die Details von 6.000.000 stornierten Käufen abrufen.
  • Wenn eine Antwort einen Wert für nextPageToken enthält, weisen Sie diesen Wert bei der nächsten Anfrage dem Parameter token zu.

Best Practices

Wenn Sie diese API in Ihrer App verwenden, denken Sie daran, dass es viele Gründe für die Stornierung eines Kaufs gibt und dass es nicht nur eine Lösung gibt, die in allen Fällen funktioniert. Sie sollten Ihre Nutzer beim Entwerfen Ihrer Widerrufsrichtlinien und -strategien im Hinterkopf behalten. In diesem Fall können Sie die folgenden empfohlenen Vorgehensweisen anwenden:

  • Verwenden Sie diese API als eines von vielen Elementen einer umfassenden Strategie, um unerwünschtes Verhalten zu beheben. Der Widerruf des Zugriffs auf In-App-Produkte ist in der Regel effektiver, wenn sie mit einer App kombiniert wird, die angemessene Preise für In-App-Käufe bietet, mit einem App-Design, das unerwünschtes Verhalten abwehrt, einer starken Nutzerbasis, deren Kultur ein solches Verhalten ablehnt, sowie in reaktionsschnellen und effizienten Supportkanälen.
  • Verwalten Sie Ihre Sperrrichtlinie einheitlich, um die Fairness für alle Nutzer zu gewährleisten.
  • Erwägen Sie die Erstellung einer gestaffelten Richtlinie, wenn Sie mit unerwünschtem Verhalten umgehen. Beginnen Sie beispielsweise mit Warnungen in der App bei Vorabverstößen und eskalieren Sie Ihre Antworten, wenn das unerwünschte Verhalten eines Nutzers fortgesetzt wird. Als letzte Möglichkeit können Sie verhindern, dass ein Nutzer mit Ihrer Anwendung interagiert.
  • Wenn Sie eine Sperrrichtlinie einführen und sie jedes Mal aktualisieren, sollten Sie Ihre Nutzer über die entsprechenden Kanäle Ihrer App über die Änderungen informieren. Gib deinen Nutzern Zeit, diese Änderungen genau zu verstehen, bevor sie in deiner App wirksam werden.
  • Seien Sie Ihren Nutzern gegenüber transparent und informieren Sie sie, wenn Sie Maßnahmen ergreifen, z. B. wenn Sie ihren Zugriff auf ein In-App-Produkt widerrufen. Idealerweise sollten Nutzer in der Lage sein, Ihre Entscheidungen anzufechten, und solche Streitfälle sollten fair behandelt werden.
  • Überwachen Sie Feedbackformulare und Community-Foren, um zu verstehen, was Nutzer zu unerwünschtem Verhalten antreibt und wie sie ein solches Verhalten durchführen. Nutzen Sie diese Erkenntnisse als erste Abwehrlinie.