Przewodnik po powiadomieniach w czasie rzeczywistym dla deweloperów

W tym dokumencie znajdziesz listę i opis rodzajów powiadomień w czasie rzeczywistym dla deweloperów, które możesz otrzymywać z Google Play.

Kodowanie

Każda publikacja w temacie Cloud Pub/Sub zawiera jedno 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 formacie Base64 element DeveloperNotification zawiera te pola:

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

Pola są opisane w tej tabeli.

Nazwa usługi Wartość Opis
Wersja ciąg znaków Wersja tego powiadomienia. Początkowo jest to „1.0”. Ta wersja różni się od innych pól wersji.
packageName ciąg znaków Nazwa pakietu aplikacji, której dotyczy to powiadomienie (np. `com.some.thing`).
eventTimeMillis długi Sygnatura czasowa zdarzenia w milisekundach od początku epoki.
subscriptionNotification SubscriptionNotification Jeśli to pole jest obecne, powiadomienie jest powiązane z subskrypcją, a to pole zawiera dodatkowe informacje dotyczące subskrypcji. Pamiętaj, że to pole wyklucza się wzajemnie z polami oneTimeProductNotification, voidedPurchaseNotification i testNotification.
oneTimeProductNotification OneTimeProductNotification Jeśli to pole jest obecne, powiadomienie dotyczy zakupu jednorazowego, a to pole zawiera dodatkowe informacje o zakupie. Pamiętaj, że to pole wyklucza się wzajemnie z polami subscriptionNotification, voidedPurchaseNotification i testNotification.
voidedPurchaseNotification VoidedPurchaseNotification Jeśli to pole jest obecne, powiadomienie dotyczy anulowanego zakupu, a to pole zawiera dodatkowe informacje związane z anulowanym zakupem. Pamiętaj, że to pole wyklucza się wzajemnie z polami oneTimeProductNotification, subscriptionNotification i testNotification.
testNotification TestNotification Jeśli to pole jest obecne, powiadomienie jest związane z publikacją testową. Są one wysyłane tylko za pomocą Konsoli Play. Pamiętaj, że to pole wyklucza się z polami oneTimeProductNotification, subscriptionNotification i voidedPurchaseNotification.

SubscriptionNotification

SubscriptionNotification zawiera te pola:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
Nazwa usługi Wartość Opis
Wersja ciąg znaków Wersja tego powiadomienia. Początkowo jest to „1.0”. Ta wersja różni się od innych pól wersji.
notificationType int Wartość notificationType w przypadku subskrypcji może być jedną z tych wartości:
  • (1) SUBSCRIPTION_RECOVERED – subskrypcja została przywrócona po zawieszeniu konta.
  • (2) SUBSCRIPTION_RENEWED – aktywna subskrypcja została odnowiona.
  • (3) SUBSCRIPTION_CANCELED – subskrypcja została anulowana dobrowolnie lub niedobrowolnie. W przypadku anulowania dobrowolnego wysyłany, gdy użytkownik anuluje subskrypcję.
  • (4) SUBSCRIPTION_PURCHASED – zakupiono nowy abonament.
  • (5) SUBSCRIPTION_ON_HOLD – subskrypcja została zawieszona (jeśli ta funkcja jest włączona).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD – subskrypcja weszła w okres prolongaty (jeśli jest włączony).
  • (7) SUBSCRIPTION_RESTARTED – użytkownik przywrócił subskrypcję w sekcji Google Play > Konto > Subskrypcje. Subskrypcja została anulowana, ale nie wygasła jeszcze w momencie przywrócenia przez użytkownika. Więcej informacji znajdziesz w sekcji Przywracanie.
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED (DEPRECATED) – użytkownik potwierdził zmianę ceny subskrypcji.
  • (9) SUBSCRIPTION_DEFERRED – czas cyklu subskrypcji został przedłużony.
  • (10) SUBSCRIPTION_PAUSED – subskrypcja została wstrzymana.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED – zmieniono harmonogram wstrzymania subskrypcji.
  • (12) SUBSCRIPTION_REVOKED – subskrypcja została cofnięta użytkownikowi przed upływem terminu ważności.
  • (13) SUBSCRIPTION_EXPIRED – subskrypcja wygasła.
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED – oczekująca transakcja subskrypcji została anulowana.
  • (19) SUBSCRIPTION_PRICE_CHANGE_UPDATED – zaktualizowano szczegóły zmiany ceny produktu subskrypcyjnego.
purchaseToken ciąg znaków Token przekazany na urządzenie użytkownika w momencie zakupu subskrypcji.

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

OneTimeProductNotification

OneTimeProductNotification zawiera te pola:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "sku": string
}
Nazwa usługi Wartość Opis
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.
notificationType int Typ powiadomienia. Może przyjmować te wartości:
  • (1) ONE_TIME_PRODUCT_PURCHASED – użytkownik kupił produkt kupowany raz.
  • (2) ONE_TIME_PRODUCT_CANCELED – użytkownik anulował oczekujący zakup produktu kupowanego raz.
purchaseToken ciąg znaków Token przekazany na urządzenie użytkownika w momencie zakupu.
sku ciąg znaków Identyfikator zakupionego produktu kupowanego raz (np. „sword_001”).

Przykład

Oto przykład powiadomienia o nowym zakupie jednorazowym:

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

VoidedPurchaseNotification

VoidedPurchaseNotification zawiera te pola:

Nazwa usługi

Wartość

Opis

purchaseToken

string

Token powiązany z zakupem, który został anulowany. Te informacje są przekazywane deweloperowi, gdy nastąpi nowy zakup.

orderId

string

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

productType

int

productType w przypadku anulowanego zakupu może mieć te wartości:

  • (1) PRODUCT_TYPE_SUBSCRIPTION – zakup subskrypcji został anulowany.
  • (2) PRODUCT_TYPE_ONE_TIME – jednorazowy zakup został anulowany.

refundType

int

refundType w przypadku anulowanego zakupu może mieć te wartości:

  • (1) REFUND_TYPE_FULL_REFUND – zakup został w pełni anulowany.
  • (2) REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND – zakup został częściowo anulowany w ramach częściowego zwrotu środków za określoną liczbę produktów. Dotyczy to tylko zakupów większej liczby produktów. Zakup można częściowo anulować wielokrotnie.

Gdy zwracana jest pozostała łączna liczba produktów w zakupie obejmującym wiele produktów, wartość refundType będzie równa REFUND_TYPE_FULL_REFUND.

Przykład

Oto przykład powiadomienia o nowym anulowanym zakupie:

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

Wykorzystywanie powiadomienia o anulowaniu zakupu

Gdy klient RTDN otrzyma VoidedPurchaseNotification, zanotuj te informacje:

  • packageName: identyfikuje aplikację.
  • eventTimeMillis: informuje o godzinie, o której nastąpiła zmiana stanu.
  • purchaseToken: token dostarczony na urządzenie użytkownika w momencie zakupu produktu.
  • orderId: identyfikuje zamówienie powiązane z anulowaną transakcją.
  • productType: wskazuje, czy anulowany zakup był zakupem w aplikacji czy subskrypcją.
  • refundType: określa typ zwrotu środków, który spowodował anulowanie zakupu.

TestNotification

TestNotification zawiera te pola:

{
  "version": string
}
Nazwa usługi Wartość Opis
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"
  }
}