Referenzleitfaden für Entwicklerbenachrichtigungen in Echtzeit

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:
  • (1) SUBSCRIPTION_RECOVERED: Ein Abo wurde aus der Kontosperre wiederhergestellt.
  • (2) SUBSCRIPTION_RENEWED: Ein aktives Abo wurde verlängert.
  • (3) SUBSCRIPTION_CANCELED: Ein Abo wurde entweder freiwillig oder unfreiwillig gekündigt. Bei einer freiwilligen Kündigung wird diese Meldung gesendet, wenn der Nutzer kündigt.
  • (4) SUBSCRIPTION_PURCHASED: Es wurde ein neues Abo gekauft.
  • (5) SUBSCRIPTION_ON_HOLD – Ein Abo wurde auf „Kontosperre“ gesetzt (falls aktiviert).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD: Ein Abo befindet sich in der Kulanzzeitraum (falls aktiviert).
  • (7) SUBSCRIPTION_RESTARTED: Der Nutzer hat sein Abo unter Play > Konto > Abos reaktiviert. Das Abo wurde gekündigt, war aber noch nicht abgelaufen, als der Nutzer die Wiederherstellung ausführte. Weitere Informationen finden Sie unter Wiederherstellungen.
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED (VERWENDUNG EINGESETZT) – Die Preisänderung für ein Abo wurde vom Nutzer bestätigt.
  • (9) SUBSCRIPTION_DEFERRED – Die Wiederholungshäufigkeit eines Abos wurde verlängert.
  • (10) SUBSCRIPTION_PAUSED – Ein Abo wurde pausiert.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED: Der Zeitplan für die Pausierung eines Abos wurde geändert.
  • (12) SUBSCRIPTION_REVOKED: Ein Abo wurde vor Ablauf der Laufzeit vom Nutzer widerrufen.
  • (13) SUBSCRIPTION_EXPIRED: Ein Abo ist abgelaufen.
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED: Eine ausstehende Transaktion für ein Abo wurde storniert.
  • (19) SUBSCRIPTION_PRICE_CHANGE_UPDATED: Die Details zur Preisänderung eines Aboartikels wurden aktualisiert.
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:
  • (1) ONE_TIME_PRODUCT_PURCHASED: Ein Einmalkaufprodukt wurde von einem Nutzer gekauft.
  • (2) ONE_TIME_PRODUCT_CANCELED: Ein ausstehender Kauf eines einmaligen Produkts wurde vom Nutzer storniert.
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

purchaseToken

string

Das Token, das mit dem ungültigen Kauf verknüpft ist. Diese Informationen werden dem Entwickler bei einem neuen Kauf zur Verfügung gestellt.

orderId

string

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.

productType

int

productType für einen stornierten Kauf kann die folgenden Werte haben:

  • (1) PRODUCT_TYPE_SUBSCRIPTION – Ein Abokauf wurde annulliert.
  • (2) PRODUCT_TYPE_ONE_TIME – Ein einmaliger Kauf wurde storniert.

refundType

int

refundType für einen stornierten Kauf kann folgende Werte haben:

  • (1) REFUND_TYPE_FULL_REFUND – Der Kauf wurde vollständig annulliert.
  • (2) REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND – Der Kauf wurde teilweise durch eine mengebasierte teilweise Erstattung ungültig gemacht, die nur für Käufe in variabler Stückzahl gilt. Ein Kauf kann mehrmals teilweise rückgängig gemacht werden.

Hinweis: Wenn die verbleibende Gesamtmenge eines Kaufs mit mehreren Stückzahlen erstattet wird, wird refundType zu REFUND_TYPE_FULL_REFUND.

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"
  }
}