Przewodnik po powiadomieniach w czasie rzeczywistym dla deweloperów

W tym artykule znajdziesz listę powiadomień w czasie rzeczywistym dla deweloperów, które możesz otrzymywać z Google Play, oraz ich opisy.

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 pole DeveloperNotification zawiera te pola:

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

Te pola są opisane w tabeli poniżej.

Nazwa właściwości Wartość Opis
Wersja ciąg znaków Wersja tego powiadomienia. Początkowo jest to „1.0”. To pole różni się od innych pól wersji.
packageName ciąg znaków Nazwa pakietu aplikacji, której dotyczy to powiadomienie (np. „com.example.thing”).
eventTimeMillis długi Sygnatura czasowa zdarzenia w milisekundach od początku epoki.
subscriptionNotification SubscriptionNotification Jeśli to pole jest obecne, oznacza, że powiadomienie jest związane z subskrypcją i zawiera dodatkowe informacje o subskrypcji. Pamiętaj, że to pole wyklucza się z polami oneTimeProductNotification, voidedPurchaseNotification i testNotification.
oneTimeProductNotification OneTimeProductNotification Jeśli to pole jest obecne, powiadomienie jest związane z jednorazowym zakupem i zawiera dodatkowe informacje dotyczące tego zakupu. Pamiętaj, że to pole wyklucza się nawzajem z polem subscriptionNotification, voidedPurchaseNotification i testNotification.
voidedPurchaseNotification VoidedPurchaseNotification Jeśli to pole jest obecne, oznacza, że powiadomienie jest związane z unieważnionym zakupem i zawiera dodatkowe informacje na temat tego zakupu. Pamiętaj, że to pole wyklucza się z polem 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 dla deweloperów. Pamiętaj, że to pole wyklucza się z pola oneTimeProductNotification, subscriptionNotification i voidedPurchaseNotification.

SubscriptionNotification

Plik SubscriptionNotification zawiera te pola:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
Nazwa właściwości Wartość Opis
Wersja ciąg znaków Wersja tego powiadomienia. Początkowo jest to „1.0”. To pole różni się od innych pól wersji.
notificationType int Parametr notificationType dla subskrypcji może mieć te wartości:
  • (1) SUBSCRIPTION_RECOVERED – subskrypcja została przywrócona po zawieszeniu konta.
  • (2) SUBSCRIPTION_RENEWED – została odnowiona aktywna subskrypcja.
  • (3) SUBSCRIPTION_CANCELLED – subskrypcja została anulowana dobrowolnie lub nie. W przypadku dobrowolnego anulowania wysyłane, gdy użytkownik anuluje subskrypcję.
  • (4) SUBSCRIPTION_PURCHASED – zakupiono nową subskrypcję.
  • (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ę z poziomu Play > Konto > Subskrypcje. Subskrypcja została anulowana, ale nie wygasła jeszcze w momencie przywracania. Więcej informacji znajdziesz w sekcji Przywracanie.
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED (DEPRECATED) – użytkownik potwierdził zmianę ceny subskrypcji.
  • (9) SUBSCRIPTION_DEFERRED – czas odnowienia subskrypcji został wydłużony.
  • (10) SUBSCRIPTION_PAUSED – subskrypcja została wstrzymana.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED – zmieniono harmonogram wstrzymania subskrypcji.
  • (12) SUBSCRIPTION_REVOKED – subskrypcja została anulowana przez użytkownika przed upływem terminu ważności.
  • (13) SUBSCRIPTION_EXPIRED – subskrypcja wygasła.
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELLED – oczekująca transakcja dotycząca subskrypcji została anulowana.
  • (19) SUBSCRIPTION_PRICE_CHANGE_UPDATED – aktualizuje szczegóły zmiany ceny produktu w ramach subskrypcji.
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

Plik 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”. To pole różni się od innych pól wersji.
notificationType int Typ powiadomienia. Może ona 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 dokonania 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

Formularz VoidedPurchaseNotification zawiera te pola:

Nazwa usługi

Wartość

Opis

purchaseToken

string

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

orderId

string

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

productType

int

Wartość productType w przypadku anulowanego zakupu może mieć jedną z tych wartości:

  • (1) PRODUCT_TYPE_SUBSCRIPTION – anulowanie zakupu subskrypcji.
  • (2) PRODUCT_TYPE_ONE_TIME – anulowanie jednorazowego zakupu.

refundType

int

Wartość refundType w przypadku anulowanego zakupu może mieć jedną z tych 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 przez częściowy zwrot środków na podstawie liczby produktów, co jest możliwe tylko w przypadku zakupów większej liczby produktów. Zakup może zostać częściowo unieważniony wiele razy.

Pamiętaj, że gdy zwrócisz pozostałą łączną liczbę sztuk zakupu złożonego z wielu sztuk, refundType stanie się 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
  }
}

Wykorzystanie VoidedPurchaseNotification

Gdy klient RTDN otrzyma VoidedPurchaseNotification, należy wziąć pod uwagę te informacje:

  • packageName: identyfikuje aplikację.
  • eventTimeMillis: informuje dewelopera o czasie zmiany stanu.
  • purchaseToken: token dostarczony na urządzenie użytkownika w momencie zakupu produktu.
  • orderId: identyfikuje zamówienie powiązane z anulowaną transakcją.
  • productType: ta wartość informuje, czy anulowany zakup był zakupem w aplikacji czy subskrypcją.
  • refundType: określa rodzaj zwrotu środków, który unieważnił zakup.

Jeśli do wprowadzenia zmian uprawnień wystarczy znalezienie odpowiedniego zakupu i zamówienia, masz już wszystkie potrzebne informacje. Aby dowiedzieć się, jak uzyskać dodatkowe informacje o unieważnionym zakupie, skorzystaj z interfejsu Google Play Voided Purchases API, który jest modelem pull zapewniającym dodatkowe dane o unieważnionych zakupach między danym sygnaturą czasową.

W przypadku częściowo unieważnionych zakupów obejmujących wiele sztuk pole refundableQuantity udostępnione przez purchases.products zawiera pozostałą liczbę zakupionych produktów, które nie zostały unieważnione.

TestNotification

Formularz TestNotification zawiera te pola:

{
  "version": string
}
Nazwa właściwości Wartość Opis
Wersja ciąg znaków Wersja tego powiadomienia. Początkowo jest to „1.0”. To pole 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"
  }
}