In diesem Dokument werden die Arten von Entwicklerbenachrichtigungen in Echtzeit aufgeführt und beschrieben, die Sie von Google Play erhalten können.
Codierung
Jede Veröffentlichung in einem Cloud Pub/Sub-Thema enthält ein einzelnes base64-codiertes Datenfeld.
{
"message": {
"attributes": {
"key": "value"
},
"data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
"messageId": "136969346945"
},
"subscription": "projects/myproject/subscriptions/mysubscription"
}
Nachdem Sie das base64-codierte Datenfeld decodiert haben, enthält die DeveloperNotification die folgenden Felder:
{
"version": string,
"packageName": string,
"eventTimeMillis": long,
"oneTimeProductNotification": OneTimeProductNotification,
"subscriptionNotification": SubscriptionNotification,
"voidedPurchaseNotification": VoidedPurchaseNotification,
"pendingRefundReviewNotification": PendingRefundReviewNotification,
"testNotification": TestNotification
}
Diese Felder werden in der folgenden Tabelle beschrieben.
| Attributname | Wert | Beschreibung |
|---|---|---|
| Version | String | Die Version dieser Benachrichtigung. Anfangs ist dies „1.0“. Diese Version unterscheidet sich von anderen Versionsfeldern. |
| packageName | String | Der Paketname der Anwendung, auf die sich diese Benachrichtigung bezieht zu (z. B. `com.some.thing`). |
| eventTimeMillis | Long | Der Zeitstempel des Ereignisses in Millisekunden seit der Epoche. |
| subscriptionNotification | SubscriptionNotification | Wenn dieses Feld vorhanden ist, bezieht sich diese Benachrichtigung auf ein Abo und enthält zusätzliche Informationen dazu. Dieses Feld schließt sich gegenseitig mit pendingRefundReviewNotification, oneTimeProductNotification, voidedPurchaseNotification und testNotification aus. |
| oneTimeProductNotification | OneTimeProductNotification | Wenn dieses Feld vorhanden ist, bezieht sich diese Benachrichtigung auf einen Einmalkauf und enthält zusätzliche Informationen dazu. Dieses Feld schließt sich gegenseitig mit pendingRefundReviewNotification, subscriptionNotification, voidedPurchaseNotification und testNotification aus. |
| voidedPurchaseNotification | VoidedPurchaseNotification | Wenn dieses Feld vorhanden ist, bezieht sich diese Benachrichtigung auf einen stornierten Kauf und enthält zusätzliche Informationen dazu. Dieses Feld schließt sich gegenseitig mit pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification und testNotification aus. |
| pendingRefundReviewNotification | PendingRefundReviewNotification | Wenn dieses Feld vorhanden ist, bezieht sich diese Benachrichtigung auf einen Antrag auf Rückbuchung, für den Sie eine Lösung vorschlagen können. Antworten Sie auf diese Benachrichtigung, indem Sie die `ReviewRefund` API aufrufen. Dieses Feld schließt sich gegenseitig mit subscriptionNotification, oneTimeProductNotification, voidedPurchaseNotification, und testNotification aus. |
| testNotification | TestNotification | Wenn dieses Feld vorhanden ist, bezieht sich diese Benachrichtigung auf eine Testveröffentlichung. Diese werden nur über die Google Play Developer Console gesendet. Dieses Feld schließt sich gegenseitig mit pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification und voidedPurchaseNotification aus. |
SubscriptionNotification
Eine SubscriptionNotification enthält die folgenden Felder:
{
"version": string,
"notificationType": int,
"purchaseToken": string
}
| Attributname | Wert | Beschreibung |
|---|---|---|
| Version | String | Die Version dieser Benachrichtigung. Anfangs ist dies „1.0“. Diese Version unterscheidet sich von anderen Versionsfeldern. |
| notificationType | Int | Der notificationType für ein Abo kann die folgenden Werte haben:
|
| purchaseToken | String | Das Token, das dem Gerät des Nutzers beim Kauf des Abos zur Verfügung gestellt wurde. |
Beispiel
Hier ist ein Beispiel für eine Benachrichtigung über einen neuen Abo-Kauf:
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503349566168",
"subscriptionNotification":
{
"version":"1.0",
"notificationType":4,
"purchaseToken":"PURCHASE_TOKEN"
}
}
OneTimeProductNotification
Eine OneTimeProductNotification enthält die folgenden Felder:
{
"version": string,
"notificationType": int,
"purchaseToken": string,
"sku": string
}
| Attributname | Wert | Beschreibung |
|---|---|---|
| Version | String | Die Version dieser Benachrichtigung. Anfangs ist dies „1.0“. Diese Version unterscheidet sich von anderen Versionsfeldern. |
| notificationType | Int | Die Art der Benachrichtigung. Kann die folgenden Werte haben:
|
| purchaseToken | String | Das Token, das dem Gerät des Nutzers beim Kauf zur Verfügung gestellt wurde. |
| SKU | String | Die ID des gekauften Einmalkaufprodukts (z. B. „sword_001“) |
Beispiel
Hier ist ein Beispiel für eine Benachrichtigung über einen neuen einmaligen Kauf:
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503349566168",
"oneTimeProductNotification":
{
"version":"1.0",
"notificationType":1,
"purchaseToken":"PURCHASE_TOKEN",
"sku":"my.sku"
}
}
VoidedPurchaseNotification
Eine VoidedPurchaseNotification enthält die folgenden Felder:
| Attributname | Wert | Beschreibung |
|---|---|---|
|
|
Das Token, das mit dem stornierten Kauf verknüpft ist. Diese Informationen werden dem Entwickler bei einem neuen Kauf zur Verfügung gestellt. |
|
|
Die eindeutige Bestell-ID, die mit der stornierten Transaktion verknüpft ist. Bei Einmalkäufen ist dies die einzige Bestell-ID die für den Kauf generiert wird. Bei Abos mit automatischer Verlängerung wird für jede Verlängerungstransaktion eine neue Bestell-ID generiert. |
|
|
Der
|
|
|
Der
Wenn die verbleibende Gesamtmenge eines Kaufs mit mehreren Artikeln erstattet wird, ist |
Beispiel
Hier ist ein Beispiel für eine Benachrichtigung über einen neuen stornierten Kauf:
{
"version":"1.0",
"packageName":"com.some.app",
"eventTimeMillis":"1503349566168",
"voidedPurchaseNotification":
{
"purchaseToken":"PURCHASE_TOKEN",
"orderId":"GS.0000-0000-0000",
"productType":1
"refundType":1
}
}
VoidedPurchaseNotification verarbeiten
Wenn Ihr Entwicklerbenachrichtigungen in Echtzeit-Client eine VoidedPurchaseNotification erhält, beachten Sie die folgenden Informationen:
packageName: Gibt die App an.eventTimeMillis: Informiert Sie über den Zeitpunkt der Statusänderung.purchaseToken: Das Token, das dem Gerät des Nutzers beim Kauf des Produkts zur Verfügung gestellt wurde.orderId: Gibt die Bestellung an, die mit der stornierten Transaktion verknüpft ist.productType: Gibt an, ob es sich bei dem stornierten Kauf um einen In-App-Kauf oder ein Abo gehandelt hat.refundType: Gibt die Art der Rückerstattung an, durch die der Kauf storniert wurde.
PendingRefundReviewNotification
Eine PendingRefundReviewNotification wird gesendet, wenn ein Nutzer eine Rückbuchung für einen Kauf beantragt und der Antrag vom Entwickler überprüft werden muss. Wenn Sie diese Benachrichtigung erhalten, sollten Sie den Antrag prüfen und innerhalb von 24 Stunden einen Vorschlag für eine Rückerstattung und einen Nachweis zur Nutzung des Kaufs einreichen. Rufen Sie dazu die
ReviewRefund API auf.
Eine PendingRefundReviewNotification enthält die folgenden Felder:
{
"version": string,
"pendingRefundToken": string,
"orderId": string,
"refundReason": int,
"obfuscatedAccountId": string,
"obfuscatedProfileId": string
}
| Attributname | Wert | Beschreibung |
|---|---|---|
| Version | String | Die Version dieser Benachrichtigung. Anfangs ist dies „1.0“. Diese Version unterscheidet sich von anderen Versionsfeldern. |
| pendingRefundToken | String | Ein eindeutiges Token, das den ausstehenden Antrag auf Rückerstattung angibt, der überprüft wird. Übergeben Sie dieses Token, wenn Sie die ReviewRefund API aufrufen. |
| orderId | String | Die Bestell-ID des Kaufs, der der ausstehenden Überprüfung der Rückerstattung unterliegt. |
| refundReason | Int | Der Grund für den Antrag auf Rückerstattung. Bei ausstehenden Überprüfungen wird nur CHARGEBACK (7) als Grund für die Rückerstattung unterstützt. Ihr Code sollte
neue Gründe verarbeiten können, sobald sie verfügbar sind. |
| obfuscatedAccountId | String | (Falls zutreffend) Die verschleierte, vom Entwickler angegebene Nutzerkonto-ID, die beim Kauf angegeben wurde. |
| obfuscatedProfileId | String | (Falls zutreffend) Die verschleierte, vom Entwickler angegebene Profil-ID, die beim Kauf angegeben wurde. |
Beispiel
Hier ist ein Beispiel für eine Benachrichtigung über eine ausstehende Überprüfung der Rückerstattung:
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503350156918",
"pendingRefundReviewNotification":
{
"version":"1.0",
"pendingRefundToken":"example-token",
"orderId":"GPA.1234-5678-9012-34567",
"refundReason":7,
"obfuscatedAccountId":"user-account-id",
"obfuscatedProfileId":"user-profile-id"
}
}
TestNotification
Eine TestNotification enthält die folgenden Felder:
{
"version": string
}
| Attributname | Wert | Beschreibung |
|---|---|---|
| Version | String | Die Version dieser Benachrichtigung. Anfangs ist dies „1.0“. Diese Version unterscheidet sich von anderen Versionsfeldern. |
Beispiel
Hier ist ein Beispiel für eine Testbenachrichtigung:
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503350156918",
"testNotification":
{
"version":"1.0"
}
}