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 element 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 anulowanego zakupu, a to pole zawiera dodatkowe informacje o anulowanym 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 `ReviewRefund` API.

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ę Google Play.

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

SubscriptionNotification

Element 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 Wartość notificationType w przypadku subskrypcji może być jedną z tych 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 – kupiono nową subskrypcję.
  • (5) SUBSCRIPTION_ON_HOLD – subskrypcja została zawieszona (jeśli ta opcja jest włączona).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD – subskrypcja jest w okresie 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 sekcji Przywracanie.
  • (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 – oczekująca transakcja subskrypcji została anulowana.
  • (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 dewelopera w czasie rzeczywistym jest wysyłane tylko w przypadku subskrypcji w regionie, w którym wymagana jest podwyżka ceny.
purchaseToken tekst Token przekazany na urządzenie użytkownika podczas zakupu subskrypcji.

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

Element 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 nabył 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 podczas zakupu.
sku tekst Identyfikator kupionego 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

Element VoidedPurchaseNotification zawiera te pola:

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

purchaseToken

string

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

orderId

string

Unikalny identyfikator zamówienia powiązany z anulowaną transakcją. 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

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

  • (1) PRODUCT_TYPE_SUBSCRIPTION – anulowano zakup subskrypcji.
  • (2) PRODUCT_TYPE_ONE_TIME – anulowano zakup jednorazowy.

refundType

int

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

  • (1) REFUND_TYPE_FULL_REFUND – zakup został w całości anulowany.
  • (2) REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND – zakup został częściowo anulowany przez częściowy zwrot środków na podstawie ilości. Dotyczy to tylko zakupów z większą liczbą produktów. Zakup można częściowo anulować kilka razy.

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

Odbieranie powiadomienia VoidedPurchaseNotification

Gdy klient powiadomień dewelopera w czasie rzeczywistym 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 podczas 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

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

.

Element 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 w trakcie sprawdzania. Przekaż ten token podczas wywoływania interfejsu ReviewRefund API.
orderId tekst Identyfikator zamówienia zakupu, którego dotyczy oczekująca opinia o zwrocie środków.
refundReason int Powód żądania zwrotu środków. W przypadku oczekujących opinii obsługiwany jest tylko powód zwrotu CHARGEBACK (7). 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

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