In diesem Thema 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 du das Base64-codierte Datenfeld decodiert hast, enthält DeveloperNotification
die folgenden Felder:
{
"version": string,
"packageName": string,
"eventTimeMillis": long,
"oneTimeProductNotification": OneTimeProductNotification,
"subscriptionNotification": SubscriptionNotification,
"voidedPurchaseNotification": VoidedPurchaseNotification,
"testNotification": TestNotification
}
Diese Felder werden in der folgenden Tabelle beschrieben.
Property-Name | Wert | Beschreibung |
Version | String | Die Version dieser Benachrichtigung. Zuerst ist das „1.0“. Diese Version unterscheidet sich von anderen Versionsfeldern. |
packageName | String | Der Paketname der App, auf die sich diese Benachrichtigung bezieht (z. B. „com.beispiel.app“). |
eventTimeMillis | long | Der Zeitstempel des Ereignisses, gemessen in Millisekunden seit der Epoche. |
subscriptionNotification | SubscriptionNotification | Wenn dieses Feld vorhanden ist, bezieht sich diese Benachrichtigung auf ein Abo und dieses Feld enthält zusätzliche Informationen zum Abo. Dieses Feld schließt die Felder „oneTimeProductNotification“, „voidedPurchaseNotification“ und „testNotification“ aus. |
oneTimeProductNotification | OneTimeProductNotification | Wenn dieses Feld vorhanden ist, bezieht sich diese Benachrichtigung auf einen einmaligen Kauf und dieses Feld enthält zusätzliche Informationen zum Kauf. Dieses Feld schließt sich gegenseitig aus mit subscriptionNotification, voidedPurchaseNotification und testNotification. |
voidedPurchaseNotification | VoidedPurchaseNotification | Wenn dieses Feld vorhanden ist, bezieht sich diese Benachrichtigung auf einen annullierten Kauf. Dieses Feld enthält dann zusätzliche Informationen zum annullierten Kauf. Dieses Feld schließt die Felder „oneTimeProductNotification“, „subscriptionNotification“ 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 Console gesendet. Dieses Feld schließt die Felder „oneTimeProductNotification“, „subscriptionNotification“ und „voidedPurchaseNotification“ aus. |
SubscriptionNotification
Eine SubscriptionNotification
enthält die folgenden Felder:
{
"version": string,
"notificationType": int,
"purchaseToken": string
}
Property-Name | Wert | Beschreibung |
Version | String | Die Version dieser Benachrichtigung. Zuerst ist das „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 bereitgestellt wurde. |
Beispiel
Hier ein Beispiel für eine Benachrichtigung zum Kauf eines neuen Abos:
{
"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
}
Property-Name | Wert | Beschreibung |
Version | String | Die Version dieser Benachrichtigung. Zuerst ist das „1.0“. Diese Version unterscheidet sich von anderen Versionsfeldern. |
notificationType | int | Die Art der Benachrichtigung. Es kann die folgenden Werte haben:
|
purchaseToken | String | Das Token, das beim Kauf auf dem Gerät des Nutzers bereitgestellt wurde. |
sku | String | Die ID des gekauften Einmalkaufprodukts (z. B. „sword_001“) |
Beispiel
Hier ein Beispiel für eine Benachrichtigung zu einem 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:
Property-Name |
Wert |
Beschreibung |
|
|
Das Token, das mit dem ungültigen 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 einmaligen Käufen ist dies die einzige Bestell-ID, die für den Kauf generiert wird. Bei automatisch verlängerten Abos wird für jede Verlängerungstransaktion eine neue Bestell-ID generiert. |
|
|
|
|
|
Hinweis: Wenn die verbleibende Gesamtmenge eines Kaufs mit mehreren Stückzahlen erstattet wird, wird |
Beispiel
Hier ein Beispiel für eine Benachrichtigung zu einem 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 RTDN-Kunde eine VoidedPurchaseNotification
erhält, notieren Sie sich die folgenden Informationen:
packageName
: Damit wird die App identifiziert.eventTimeMillis
: Hier wird der Entwickler über den Zeitpunkt der Statusänderung informiert.purchaseToken
: Das Token, das beim Kauf des Produkts auf dem Gerät des Nutzers bereitgestellt wurde.orderId
: Hiermit wird die Bestellung identifiziert, die mit der stornierten Transaktion verknüpft ist.productType
: Hier sehen Sie, ob es sich bei dem stornierten Kauf um einen In-App-Kauf oder ein Abo handelt.refundType
: Hier sehen Sie, welche Art von Erstattung den Kauf ungültig gemacht hat.
Wenn du für die Berechtigungsanpassungen nur den richtigen Kauf und die richtige Bestellung finden musst, hast du bereits alle erforderlichen Informationen. Weitere Informationen zu stornierten Käufen finden Sie in der Google Play Voided Purchases API. Dabei handelt es sich um ein Pull-Modell, das zusätzliche Daten zu stornierten Käufen zwischen einem bestimmten Zeitstempel liefert.
Bei teilweise stornierten Käufen mit mehreren Stückzahlen enthält das Feld refundableQuantity
von purchases.products
die verbleibende Anzahl der gekauften Produkte, die nicht storniert wurden.
TestNotification
Eine TestNotification
enthält die folgenden Felder:
{
"version": string
}
Property-Name | Wert | Beschreibung |
Version | String | Die Version dieser Benachrichtigung. Zuerst ist das „1.0“. Diese Version unterscheidet sich von anderen Versionsfeldern. |
Beispiel
Hier ein Beispiel für eine Testbenachrichtigung:
{
"version":"1.0",
"packageName":"com.some.thing",
"eventTimeMillis":"1503350156918",
"testNotification":
{
"version":"1.0"
}
}