Przewodnik po powiadomieniach w czasie rzeczywistym dla deweloperów

W tym dokumencie znajdziesz listę i opis typó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 standardzie 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,
  "pendingRefundReviewNotification": PendingRefundReviewNotification,
  "testNotification": TestNotification
}

Pola są opisane w tej tabeli:

Nazwa właściwości Wartość Opis
wersja tekst Wersja tego powiadomienia. Początkowo jest to „1.0”. Ta wersja różni się od innych pól wersji.
packageName tekst Nazwa pakietu aplikacji, której dotyczy to powiadomienie (np. `com.some.thing`).
eventTimeMillis długi Sygnatura czasowa wystąpienia zdarzenia w milisekundach od początku epoki.
subscriptionNotification SubscriptionNotification

Jeśli to pole jest obecne, powiadomienie dotyczy subskrypcji, a to pole zawiera dodatkowe informacje związane z subskrypcją.

Pamiętaj, że to pole wyklucza się wzajemnie z polami pendingRefundReviewNotification, 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 pendingRefundReviewNotification, 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 pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification i testNotification.

pendingRefundReviewNotification PendingRefundReviewNotification

Jeśli to pole jest obecne, powiadomienie dotyczy prośby o obciążenie zwrotne, w przypadku której możesz zaproponować rozwiązanie. Odpowiedz na to powiadomienie, wywołując interfejs ReviewRefund API.

Pamiętaj, że to pole wyklucza się wzajemnie z polami subscriptionNotification, oneTimeProductNotification, voidedPurchaseNotification i testNotification.

testNotification TestNotification

Jeśli to pole jest obecne, oznacza to, że powiadomienie jest związane z publikacją testową. Są one wysyłane tylko w Konsoli Play.

Pamiętaj, że to pole wyklucza się z polami pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification i voidedPurchaseNotification.

SubscriptionNotification

SubscriptionNotification zawiera te pola:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
Nazwa właściwości Wartość Opis
wersja tekst Wersja tego powiadomienia. Początkowo jest to „1.0”. Ta wersja różni się od innych pól wersji.
notificationType int Parametr notificationType subskrypcji może mieć te wartości:
  • (1) SUBSCRIPTION_RECOVERED – subskrypcja została wznowiona po zawieszeniu konta lub wstrzymaniu.
  • (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 wstrzymana (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 przed wygaśnięciem.
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED (WYCOFANE) – użytkownik potwierdził zmianę ceny subskrypcji.
  • (9) SUBSCRIPTION_DEFERRED – czas cyklu 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 cofnięta użytkownikowi przed upływem czasu jej obowiązywania.
  • (13) SUBSCRIPTION_EXPIRED – subskrypcja wygasła.
  • (17) SUBSCRIPTION_ITEMS_CHANGED – zmieniono element w pakiecie subskrypcji.
  • (18) SUBSCRIPTION_CANCELLATION_SCHEDULED - A cancellation for an installment subscription has been scheduled to take effect at the end of the commitment period.
  • (19) SUBSCRIPTION_PRICE_CHANGE_UPDATED – zaktualizowano szczegóły zmiany ceny produktu w subskrypcji.
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED – oczekująca transakcja subskrypcji została anulowana.
  • (22) SUBSCRIPTION_PRICE_STEP_UP_CONSENT_UPDATED – rozpoczęcie okresu zgody na podwyżkę ceny w przypadku subskrypcji lub wyrażenie przez użytkownika zgody na podwyżkę ceny. Ten RTDN jest wysyłany tylko w przypadku subskrypcji w regionie, w którym wymagane jest podwyższenie ceny.
purchaseToken tekst 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 właściwości Wartość Opis
wersja tekst 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 tekst Token przekazany na urządzenie użytkownika w momencie zakupu.
sku tekst 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 właściwości 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 zakupów jednorazowych jest to jedyny identyfikator zamówienia wygenerowany dla zakupu. W przypadku subskrypcji z automatycznym odnawianiem dla każdej transakcji odnowienia generowany jest nowy identyfikator zamówienia.

productType

int

W przypadku anulowanego zakupu productType 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

W przypadku anulowanego zakupu refundType 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 z większą liczbą produktów. Zakup można częściowo anulować wielokrotnie.

Gdy zwrócisz pozostałą łączną liczbę produktów w przypadku zakupu wielu sztuk, wartość refundType zmieni się na 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
  }
}

Wykorzystywanie powiadomienia VoidedPurchaseNotification

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 przekazany 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.

PendingRefundReviewNotification

PendingRefundReviewNotification jest wysyłany, gdy użytkownik poprosi o obciążenie zwrotne za zakup, a żądanie wymaga sprawdzenia przez dewelopera. Gdy otrzymasz to powiadomienie, oceń prośbę i w ciągu 24 godzin zaproponuj zwrot środków oraz prześlij dowód wykorzystania zakupu, wywołując interfejs API ReviewRefund.

PendingRefundReviewNotification zawiera te pola:

{
  "version": string,
  "pendingRefundToken": string,
  "orderId": string,
  "refundReason": int,
  "obfuscatedAccountId": string,
  "obfuscatedProfileId": string
}
Nazwa właściwości Wartość Opis
wersja tekst Wersja tego powiadomienia. Początkowo jest to „1.0”. Ta wersja różni się od innych pól wersji.
pendingRefundToken tekst Unikalny token, który identyfikuje oczekującą prośbę o zwrot środków, która jest w trakcie sprawdzania. Przekaż ten token podczas wywoływania interfejsu ReviewRefund API.
orderId tekst Identyfikator zamówienia zakupu, którego dotyczy oczekująca weryfikacja zwrotu środków.
refundReason int przyczyna prośby o zwrot środków; W przypadku oczekujących na sprawdzenie zwrotów środków jako przyczynę zwrotu można podać tylko CHARGEBACK (7). Kod powinien obsługiwać nowe przyczyny, gdy tylko staną się dostępne.
obfuscatedAccountId tekst (W stosownych przypadkach) Celowo zniekształcony identyfikator konta użytkownika określony przez dewelopera, który został podany w momencie zakupu.
obfuscatedProfileId tekst (W stosownych przypadkach) Celowo zniekształcony identyfikator profilu określony przez dewelopera, który został podany w momencie zakupu.

Przykład

Oto przykład powiadomienia o oczekującym zwrocie środków:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "pendingRefundReviewNotification":
  {
    "version":"1.0",
    "pendingRefundToken":"example-token",
    "orderId":"GPA.1234-5678-9012-34567",
    "refundReason":7,
    "obfuscatedAccountId":"user-account-id",
    "obfuscatedProfileId":"user-profile-id"
  }
}

TestNotification

TestNotification zawiera te pola:

{
  "version": string
}
Nazwa właściwości Wartość Opis
wersja tekst 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"
  }
}