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:
|
| 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:
|
| 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 |
|---|---|---|
|
|
Token powiązany z unieważnionym zakupem. Te informacje są przekazywane deweloperowi, gdy nastąpi nowy zakup |
|
|
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. |
|
|
|
|
|
Gdy zwracana jest pozostała łączna liczba produktów w zakupie z większą liczbą produktów, pole |
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"
}
}