Przewodnik po powiadomieniach w czasie rzeczywistym dla deweloperów

Ten dokument zawiera 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 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,
  "pendingRefundReviewNotification": PendingRefundReviewNotification,
  "testNotification": TestNotification
}

Te pola są opisane w tabeli poniżej.

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 o subskrypcji.

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 jednorazowego zakupu, 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 unieważnionego zakupu, a to pole zawiera dodatkowe informacje o unieważnionym zakupie.

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 a żądania obciążenia zwrotnego, w przypadku którego możesz zaproponować rozwiązanie. Odpowiedz na to powiadomienie, wywołując interfejs API `ReviewRefund`.

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

testNotification TestNotification

Jeśli to pole jest obecne, powiadomienie dotyczy a testowej publikacji. Są one wysyłane tylko przez Konsolę Play.

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

SubscriptionNotification

Pole 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 Pole notificationType w przypadku subskrypcji może mieć te wartości:
  • (1) SUBSCRIPTION_RECOVERED – subskrypcja została przywrócona po zawieszeniu konta lub wznowiona po wstrzymaniu.
  • (2) SUBSCRIPTION_RENEWED – aktywna subskrypcja została odnowiona.
  • (3) SUBSCRIPTION_CANCELED – subskrypcja została anulowana dobrowolnie lub niedobrowolnie. W przypadku dobrowolnego anulowania powiadomienie jest wysyłane, gdy użytkownik anuluje subskrypcję.
  • (4) SUBSCRIPTION_PURCHASED – zakupiono nową subskrypcję.
  • (5) SUBSCRIPTION_ON_HOLD – subskrypcja została zawieszona (jeśli ta opcja jest włączona).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD – subskrypcja weszła w okres prolongaty (jeśli ta opcja jest włączona).
  • (7) SUBSCRIPTION_RESTARTED – użytkownik przywrócił swoją subskrypcję w sekcji Play > Konto > Subskrypcje. Subskrypcja została anulowana, ale nie wygasła, gdy użytkownik ją przywrócił. Więcej informacji znajdziesz w artykule Przywracanie subskrypcji przed jej wygaśnięciem.
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED (WYCOFANE) – 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 odebrana użytkownikowi przed upływem terminu ważności.
  • (13) SUBSCRIPTION_EXPIRED – subskrypcja wygasła.
  • (17) SUBSCRIPTION_ITEMS_CHANGED – zmieniono element w pakiecie subskrypcji.
  • (18) SUBSCRIPTION_CANCELLATION_SCHEDULED – anulowanie subskrypcji ratalnej zostało zaplanowane na koniec okresu zobowiązania.
  • (19) SUBSCRIPTION_PRICE_CHANGE_UPDATED – zaktualizowano szczegóły zmiany ceny elementu subskrypcji.
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED – anulowano oczekującą transakcję subskrypcji.
  • (22) SUBSCRIPTION_PRICE_STEP_UP_CONSENT_UPDATED – rozpoczął się okres zgody na podwyżkę ceny subskrypcji lub użytkownik wyraził zgodę na podwyżkę ceny. To powiadomienie RTDN jest wysyłane tylko w przypadku subskrypcji w regionie, w którym wymagana jest zgoda na podwyżkę ceny.
purchaseToken tekst Token przekazany na urządzenie użytkownika, gdy kupił subskrypcję.

Przykład

Oto przykład powiadomienia o nowym zakupie subskrypcji:

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

OneTimeProductNotification

Pole 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 mieć te wartości:
  • (1) ONE_TIME_PRODUCT_PURCHASED – użytkownik kupił produkt kupowany raz.
  • (2) ONE_TIME_PRODUCT_CANCELED – zakup produktu kupowanego raz został anulowany lub cofnięty.
purchaseToken tekst Token przekazany na urządzenie użytkownika, gdy dokonał 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

Pole VoidedPurchaseNotification zawiera te pola:

Nazwa właściwości Wartość Opis

purchaseToken

string

Token powiązany z unieważnionym zakupem. Te informacje są przekazywane deweloperowi, gdy nastąpi nowy zakup

orderId

string

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

productType

int

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 – zakup jednorazowy został unieważniony.

refundType

int

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

  • (1) REFUND_TYPE_FULL_REFUND – zakup został w pełni 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. Dotyczy to tylko zakupów z większą liczbą produktów. Zakup można częściowo unieważnić kilka razy.

Gdy zwracana jest pozostała łączna liczba produktów w zakupie z większą liczbą produktów, pole refundType ma wartość 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
  }
}

Odbieranie powiadomienia VoidedPurchaseNotification

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

  • packageName: identyfikuje aplikację.
  • eventTimeMillis: informuje o czasie, w którym nastąpiła zmiana stanu.
  • purchaseToken: token przekazany na urządzenie użytkownika, gdy kupił produkt.
  • orderId: identyfikuje zamówienie powiązane z unieważnioną transakcją.
  • productType: wskazuje, czy unieważniony zakup był zakupem w aplikacji czy subskrypcją.
  • refundType: określa typ zwrotu środków, który spowodował unieważnienie zakupu.

PendingRefundReviewNotification

Powiadomienie PendingRefundReviewNotification jest wysyłane, gdy użytkownik poprosi o obciążenie zwrotne za zakup, a żądanie wymaga sprawdzenia przez dewelopera. Gdy otrzymasz to powiadomienie, musisz ocenić żądanie i zaproponować zwrot środków oraz przedstawić dowód użycia zakupu w ciągu 24 godzin, wywołując interfejs API ReviewRefund.

Pole 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ące żądanie zwrotu środków. Przekaż ten token podczas wywoływania interfejsu API ReviewRefund.
orderId tekst Identyfikator zamówienia zakupu, który podlega oczekującej opinii o zwrocie środków.
refundReason int Powód żądania zwrotu środków. Oczekujące opinie obsługują tylko CHARGEBACK (7) jako powód zwrotu środków. Twój kod powinien obsługiwać nowe powody, gdy staną się dostępne.
obfuscatedAccountId tekst (Jeśli dotyczy) Zaciemniony identyfikator konta użytkownika określony przez dewelopera, który został podany podczas zakupu.
obfuscatedProfileId tekst (Jeśli dotyczy) Zaciemniony identyfikator profilu określony przez dewelopera, który został podany podczas zakupu.

Przykład

Oto przykład powiadomienia o oczekującej opinii o 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

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