Przewodnik po powiadomieniach w czasie rzeczywistym dla deweloperów

W tym temacie opisujemy typy powiadomień w czasie rzeczywistym dla deweloperów, które można otrzymywać z Google Play.

Kodowanie

Każda publikacja w temacie Cloud Pub/Sub zawiera 1 pole danych zakodowane w formacie base64.

{
  "message": {
    "attributes": {
      "key": "value"
    },
    "data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
    "messageId": "136969346945"
  },
  "subscription": "projects/myproject/subscriptions/mysubscription"
}

Po zdekodowaniu pola danych zakodowanego w standardzie base64 pole DeveloperNotification zawiera te pola:

{
  "version": string,
  "packageName": string,
  "eventTimeMillis": long,
  "oneTimeProductNotification": OneTimeProductNotification,
  "subscriptionNotification": SubscriptionNotification,
  "voidedPurchaseNotification": VoidedPurchaseNotification,
  "testNotification": TestNotification
}

Pola te zostały opisane w poniższej tabeli.

Nazwa usługi Wartość Description
Wersja ciąg znaków Wersja tego powiadomienia. Początkowo jest to „1.0”. Ta wersja różni się od innych pól wersji.
nazwa_pakietu ciąg znaków Nazwa pakietu aplikacji, której dotyczy to powiadomienie (na przykład „com.jakiś.thing”).
eventTimeMillis długi Sygnatura czasowa (w milisekundach) wystąpienia zdarzenia od początku epoki.
Powiadomienie o subskrypcji Powiadomienie o subskrypcji Jeśli to pole jest obecne, to powiadomienie jest związane z subskrypcją i zawiera dodatkowe informacje o niej. Pamiętaj, że to pole wzajemnie się wyklucza z właściwości oneTimeProductPowiadom, voidedPurchasePowiadomienia i testpowiadomienia.
jednorazowe powiadomienie o produkcie Jednorazowe powiadomienie o produkcie Jeśli to pole występuje, oznacza to, że powiadomienie dotyczy jednorazowego zakupu i zawiera dodatkowe informacje o zakupie. Pamiętaj, że to pole wzajemnie się wyklucza z elementów subscriptionpowiadomienia, voidedPurchase Notification i testPowiadomienia.
voidedPurchaseNotification Powiadomienie o unieważnionym zakupie Jeśli to pole jest obecne, to powiadomienie dotyczy unieważnionego zakupu i zawiera dodatkowe informacje dotyczące unieważnionego zakupu. To pole wyklucza się wzajemnie z polami oneTimeProductPowiadomienia, subscriptionPowiadomiciem i testpowiadomieniami.
Powiadomienie testowe Powiadomienie testowe Jeśli to pole jest obecne, to powiadomienie dotyczy publikacji testowej. Są one przesyłane tylko przez Konsolę Google Play. Pamiętaj, że to pole wzajemnie się wyklucza z właściwości oneTimeProductPowiadomienia, subscriptionPowiadomienia i voidedPurchasePowiadom.

Powiadomienie o subskrypcji

Pole SubscriptionNotification zawiera te pola:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "subscriptionId": string
}
Nazwa usługi Wartość Description
Wersja ciąg znaków Wersja tego powiadomienia. Początkowo jest to „1.0”. Ta wersja różni się od innych pól wersji.
Typ powiadomienia int Parametr NotificationType subskrypcji może mieć te wartości:
  • (1) SUBSCRIPTION_RECOVERED – subskrypcja została przywrócona z zawieszenia konta.
  • (2) SUBSCRIPTION_RENEWED – została odnowiona aktywna subskrypcja.
  • (3) SUBSCRIPTION_CANCELED – subskrypcja została anulowana dobrowolnie lub bez Twojej zgody. Do dobrowolnego anulowania wysyłane, gdy użytkownik anuluje subskrypcję.
  • (4) SUBSCRIPTION_PURCHASED – zakupiono nową subskrypcję.
  • (5) SUBSCRIPTION_ON_HOLD – konto zostało zawieszone (jeśli jest włączone).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD – rozpoczął się okres prolongaty subskrypcji (jeśli jest włączony).
  • (7) SUBSCRIPTION_RESTARTED – użytkownik przywrócił subskrypcję, klikając Play > Konto > Subskrypcje. Subskrypcja została anulowana, ale jeszcze nie wygasła, gdy użytkownik ją przywróci. Więcej informacji znajdziesz w sekcji Przywracanie.
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED – zmiana ceny subskrypcji została potwierdzona przez użytkownika.
  • (9) SUBSCRIPTION_DEFERRED – wydłużono czas powtarzania subskrypcji.
  • (10) SUBSCRIPTION_PAUSED – subskrypcja została wstrzymana.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED – harmonogram wstrzymywania subskrypcji został zmieniony.
  • (12) SUBSCRIPTION_REVOKED – subskrypcja została unieważniona dla użytkownika przed upływem terminu jej wygaśnięcia.
  • (13) SUBSCRIPTION_EXPIRATIOND – subskrypcja wygasła.
Token zakupu ciąg znaków Token udostępniony urządzeniu użytkownika podczas kupowania subskrypcji.
Identyfikator subskrypcji ciąg znaków Identyfikator produktu kupionej subskrypcji (np. „monthly001”).

Przykład

Oto przykład powiadomienia o zakupie nowej subskrypcji:

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

Jednorazowe powiadomienie o produkcie

Pole OneTimeProductNotification zawiera te pola:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "sku": string
}
Nazwa usługi Wartość Description
Wersja ciąg znaków Wersja tego powiadomienia. Początkowo będzie to „1.0”. Ta wersja różni się od innych pól wersji.
Typ powiadomienia int Typ powiadomienia. Może mieć te wartości:
  • (1) ONE_TIME_PRODUCT_PURCHASED – użytkownik kupił jednorazowy produkt.
  • (2) ONE_TIME_PRODUCT_CANCELED – oczekujący jednorazowy zakup produktu został anulowany przez użytkownika.
Token zakupu ciąg znaków Token przekazany na urządzeniu użytkownika podczas dokonywania zakupu.
SKU ciąg znaków Identyfikator zakupionego jednorazowego produktu (np. „sword_001”)

Przykład

Oto przykład powiadomienia o nowym jednorazowym zakupie:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "oneTimeProductNotification":
  {
    "version":"1.0",
    "notificationType":1,
    "purchaseToken":"PURCHASE_TOKEN",
    "sku":"my.sku"
  }
}

Powiadomienie o unieważnionym zakupie

Pole VoidedPurchaseNotification zawiera te pola:

Nazwa usługi

Wartość

Description

purchaseToken

string

Token powiązany z zakupem, który został unieważniony. Te informacje są przekazywane deweloperowi po dokonaniu nowego zakupu.

orderId

string

Unikalny identyfikator zamówienia powiązany z transakcją, która została unieważniona. W przypadku jednorazowych zakupów jest to jedyny identyfikator zamówienia wygenerowany dla danego zakupu. W przypadku automatycznie odnawianych subskrypcji dla każdej transakcji dotyczącej odnowienia generowany jest nowy identyfikator zamówienia.

productType

int

Pole productType w przypadku unieważnionego zakupu może mieć te wartości:

  • (1) PRODUCT_TYPE_SUBSCRIPTION – zakup subskrypcji został unieważniony.
  • (2) PRODUCT_TYPE_ONE_TIME – jednorazowy zakup został unieważniony.

refundType

int

Pole refundType w przypadku unieważnionego zakupu może mieć te wartości:

  • (1) REFUND_TYPE_FULL_REFUND – zakup został całkowicie unieważniony.
  • (2) REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND – zakup został częściowo unieważniony ze względu na częściowy zwrot środków za ilość, który ma zastosowanie tylko w przypadku zakupu większej liczby sztuk produktu. Zakup może zostać unieważniony kilka razy.

Uwaga: gdy zwrócimy Ci pozostałą łączną liczbę za zakup wielu sztuk tego samego produktu, refundType będzie równy REFUND_TYPE_FULL_REFUND.

Przykład

Oto przykład powiadomienia o nowym, unieważnionym zakupie:

{
  "version":"1.0",
  "packageName":"com.some.app",
  "eventTimeMillis":"1503349566168",
  "voidedPurchaseNotification":
  {
    "purchaseToken":"PURCHASE_TOKEN",
    "orderId":"GS.0000-0000-0000",
    "productType":1
    "refundType":1
  }
}

Wykorzystanie powiadomienia VoidedPurchase Notification

Gdy klient RTDN otrzyma powiadomienie VoidedPurchaseNotification, zwróć uwagę na te informacje:

  • packageName: identyfikuje aplikację.
  • eventTimeMillis: informuje dewelopera o czasie zmiany stanu.
  • purchaseToken: token przekazywany do urządzenia użytkownika podczas zakupu usługi.
  • orderId: identyfikuje zamówienie powiązane z unieważnioną transakcją.
  • productType: te dane wskazują, czy unieważniony zakup dotyczył zakupu w aplikacji czy subskrypcji.
  • refundType: te dane wskazują typ zwrotu środków, który unieważnił zakup.

Jeśli w przypadku korekty upoważnienia musisz tylko znaleźć właściwy zakup i zamówienie, będziesz mieć wszystkie potrzebne informacje. Więcej informacji o unieważnionym zakupie znajdziesz w interfejsie Google Play Voided Purchases API. Jest to model pobierania, który dostarcza dodatkowe dane na temat unieważnionych zakupów w okresie między poszczególnymi sygnaturami czasowymi.

W przypadku częściowo unieważnionych zakupów wielu sztuk pole refundableQuantity podane przez wartość purchases.products zawiera pozostałą liczbę kupionych produktów, które nie zostały unieważnione.

Powiadomienie testowe

Pole TestNotification zawiera te pola:

{
  "version": string
}
Nazwa usługi Wartość Description
Wersja ciąg znaków Wersja tego powiadomienia. Początkowo jest to „1.0”. Ta wersja różni się od innych pól wersji.

Przykład

Oto przykład powiadomienia testowego:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "testNotification":
  {
    "version":"1.0"
  }
}