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:
|
| 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:
|
| 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 |
|---|---|---|
|
|
Token powiązany z zakupem, który został anulowany. Te informacje są przekazywane deweloperowi, gdy nastąpi nowy zakup. |
|
|
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. |
|
|
W przypadku anulowanego zakupu
|
|
|
W przypadku anulowanego zakupu
Gdy zwrócisz pozostałą łączną liczbę produktów w przypadku zakupu wielu sztuk, wartość |
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"
}
}