Referenzleitfaden für Entwicklerbenachrichtigungen in Echtzeit

Hier werden die Arten von Entwicklerbenachrichtigungen in Echtzeit aufgeführt, die du von Google Play erhalten kannst.

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 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 Preis-Leistungs-Verhältnis Beschreibung
Version string Die Version dieser Benachrichtigung. Anfangs ist dies „1.0“. Diese Version unterscheidet sich von anderen Versionsfeldern.
Paketname string Der Paketname der Anwendung, auf die sich diese Benachrichtigung bezieht (z. B. „com.some.thing“).
eventTimeMillis lang Der Zeitstempel des Ereignisses in Millisekunden seit der Epoche.
Abo-Benachrichtigung Abobenachrichtigung Wenn dieses Feld vorhanden ist, bezieht sich diese Benachrichtigung auf ein Abo. Dieses Feld enthält zusätzliche Informationen zum Abo. Beachten Sie, dass sich dieses Feld mit oneTimeProductNotifications, voidedPurchase Notification und testNotification gegenseitig ausschließen kann.
OneTimeProductBenachrichtigung OneTimeProductBenachrichtigung Wenn dieses Feld vorhanden ist, bezieht sich diese Benachrichtigung auf einen einmaligen Kauf. Dieses Feld enthält zusätzliche Informationen zum Kauf. Beachten Sie, dass sich dieses Feld mit „subscription Notification“, „voidedPurchase Notification“ und „testNotifications“ gegenseitig ausschließen kann.
voidedPurchaseNotification VoidedPurchaseNotification Wenn dieses Feld vorhanden ist, bezieht sich diese Benachrichtigung auf einen stornierten Kauf. Dieses Feld enthält zusätzliche Informationen zu dem stornierten Kauf. Beachten Sie, dass sich dieses Feld mit „oneTimeProduct Notification“, „subscriptionNotification“ und „testNotification“ gegenseitig ausschließen kann.
TestBenachrichtigung Testbenachrichtigung Wenn dieses Feld vorhanden ist, bezieht sich diese Benachrichtigung auf eine Testveröffentlichung. Sie werden nur über die Google Play Console gesendet. Beachten Sie, dass sich dieses Feld mit oneTimeProduct Notification, subscriptionNotification und voidedPurchase Notification gegenseitig ausschließen kann.

Abobenachrichtigung

Ein SubscriptionNotification enthält die folgenden Felder:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "subscriptionId": string
}
Property-Name Preis-Leistungs-Verhältnis Beschreibung
Version string Die Version dieser Benachrichtigung. Anfangs ist dies „1.0“. Diese Version unterscheidet sich von anderen Versionsfeldern.
Benachrichtigungstyp 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 Abonnement wurde verlängert.
  • (3) SUBSCRIPTION_CANCELED: Ein Abonnement wurde entweder freiwillig oder unfreiwillig gekündigt. Eine freiwillige Kündigung wird gesendet, wenn der Nutzer kündigt.
  • (4) SUBSCRIPTION_PURCHASED: Ein neues Abonnement wurde erworben.
  • (5) SUBSCRIPTION_ON_HOLD: Eine Kontosperre für ein Abo wurde aktiviert (falls aktiviert).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD: Für ein Abonnement ist ein Kulanzzeitraum begonnen (falls aktiviert).
  • (7) SUBSCRIPTION_RESTARTED: Der Nutzer hat sein Abo unter Play > Konto > Abos reaktiviert. Das Abo wurde gekündigt, aber bei der Wiederherstellung durch den Nutzer noch nicht abgelaufen. Weitere Informationen finden Sie unter Wiederherstellungen.
  • (8) SUBSCRIPTION_PRICE_CHANGE_confirmED: Eine Änderung des Abopreises wurde vom Nutzer bestätigt.
  • (9) SUBSCRIPTION_DEFERRED – Die Wiederholungszeit eines Abonnements wurde verlängert.
  • (10) SUBSCRIPTION_PAUSE: Ein Abo wurde pausiert.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED – Der Zeitplan für die Pausierung von Abos wurde geändert.
  • (12) SUBSCRIPTION_REVOKED: Ein Abonnement wurde dem Nutzer vor Ablauf der Frist widerrufen.
  • (13) SUBSCRIPTION_ wäre - Ein Abonnement ist abgelaufen.
purchaseToken string Das Token, das dem Gerät des Nutzers beim Kauf des Abos zur Verfügung gestellt wurde.
Abo-ID string Die Produkt-ID des gekauften Abos (z. B. „monthly001“)

Beispiel

Hier ein Beispiel für eine Benachrichtigung über einen neuen Abokauf:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "subscriptionNotification":
  {
    "version":"1.0",
    "notificationType":4,
    "purchaseToken":"PURCHASE_TOKEN",
    "subscriptionId":"monthly001"
  }
}

OneTimeProductBenachrichtigung

Ein OneTimeProductNotification enthält die folgenden Felder:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "sku": string
}
Property-Name Preis-Leistungs-Verhältnis Beschreibung
Version string Die Version dieser Benachrichtigung. Anfangs ist dies „1.0“. Diese Version unterscheidet sich von anderen Versionsfeldern.
Benachrichtigungstyp int Die Art der Benachrichtigung. Er kann folgende Werte haben:
  • (1) ONE_TIME_PRODUCT_PURCHASED: Ein Einmalprodukt wurde von einem Nutzer erfolgreich gekauft.
  • (2) ONE_TIME_PRODUCT_CANCELED: Ein ausstehender einmaliger Produktkauf wurde vom Nutzer storniert.
purchaseToken string Token, das dem Gerät des Nutzers beim Kauf bereitgestellt wurde
Artikelnummer string Die einmalige Produkt-ID des gekauften Produkts (z. B. „schwert_001“)

Beispiel

Hier 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

Ein VoidedPurchaseNotification enthält die folgenden Felder:

Property-Name

Preis-Leistungs-Verhältnis

Beschreibung

purchaseToken

string

Das mit dem Kauf verknüpfte Token, das für ungültig erklärt wurde. Diese Informationen werden dem Entwickler bei einem neuen Kauf zur Verfügung gestellt.

orderId

string

Die eindeutige Bestell-ID, die der stornierten Transaktion zugeordnet ist. Bei einmaligen Käufen ist dies die einzige Bestell-ID, die für den Kauf generiert wurde. Bei Abos mit automatischer Verlängerung wird für jede Verlängerungstransaktion eine neue Bestell-ID generiert.

productType

int

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

  • (1) PRODUCT_TYPE_SUBSCRIPTION: Ein Abokauf wurde storniert.
  • (2) PRODUCT_TYPE_ONE_TIME: Ein einmaliger Kauf wurde für ungültig erklärt.

refundType

int

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

  • (1) REFUND_TYPE_FULL_REFUND: Der Kauf wurde vollständig für ungültig erklärt.
  • (2) REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND: Der Kauf wurde durch eine mengenbasierte teilweise Erstattung, die nur für Käufe mit variabler Stückzahl gilt, teilweise für ungültig erklärt. Ein Kauf kann mehrmals für teilweise annulliert werden.

Wenn die verbleibende Gesamtmenge eines Kaufs mit variabler Stückzahl erstattet wird, hat refundType den Wert REFUND_TYPE_FULL_REFUND.

Beispiel

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

VoidedPurchase Notification nutzen

Wenn dein RTDN-Client eine VoidedPurchaseNotification erhält, beachte die folgenden Informationen:

  • packageName: Damit wird die App identifiziert.
  • eventTimeMillis: Damit wird der Entwickler über den Zeitpunkt der Statusänderung informiert.
  • purchaseToken: Das Token, das dem Gerät des Nutzers beim Kauf des Produkts bereitgestellt wurde.
  • orderId: Gibt die Bestellung an, die mit der stornierten Transaktion verknüpft ist.
  • productType: Gibt an, ob der stornierte Kauf ein In-App-Kauf oder ein Abo war.
  • refundType: Hier erfahren Sie, durch welche Art der Erstattung der Kauf annulliert wurde.

Wenn du für die Berechtigungsanpassungen lediglich die richtige Bestellung und Bestellung finden musst, hast du alle erforderlichen Informationen. Weitere Informationen zu ungültigen Käufen findest du in der Google Play Voided Purchases API. Dabei handelt es sich um ein Pull-Modell, das zusätzliche Daten für stornierte Käufe zwischen einem bestimmten Zeitstempel liefert.

Bei teilweise stornierten Käufen mit variabler Stückzahl enthält das von purchases.products bereitgestellte Feld refundableQuantity die verbleibende Anzahl gekaufter Produkte, die nicht storniert wurden.

Testbenachrichtigung

Ein TestNotification enthält die folgenden Felder:

{
  "version": string
}
Property-Name Preis-Leistungs-Verhältnis Beschreibung
Version string Die Version dieser Benachrichtigung. Anfangs ist dies „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"
  }
}