W tym dokumencie znajdziesz listę i opis rodzajó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,
  "testNotification": TestNotification
}
Pola są opisane w tej tabeli.
| Nazwa usługi | Wartość | Opis | 
| Wersja | ciąg znaków | Wersja tego powiadomienia. Początkowo jest to „1.0”. Ta wersja różni się od innych pól wersji. | 
| packageName | ciąg znaków | Nazwa pakietu aplikacji, której dotyczy to powiadomienie (np. `com.some.thing`). | 
| eventTimeMillis | długi | Sygnatura czasowa zdarzenia w milisekundach od początku epoki. | 
| subscriptionNotification | SubscriptionNotification | Jeśli to pole jest obecne, powiadomienie jest związane z subskrypcją, a to pole zawiera dodatkowe informacje dotyczące subskrypcji. Pamiętaj, że to pole wyklucza się z polami oneTimeProductNotification, voidedPurchaseNotification i testNotification. | 
| oneTimeProductNotification | OneTimeProductNotification | Jeśli to pole jest obecne, powiadomienie dotyczy zakupu jednorazowego, a to pole zawiera dodatkowe informacje związane z zakupem. Pamiętaj, że to pole wyklucza się wzajemnie z polami 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 oneTimeProductNotification, subscriptionNotification i testNotification. | 
| testNotification | TestNotification | Jeśli to pole jest obecne, powiadomienie jest związane z publikacją testową. Są one wysyłane tylko za pomocą Konsoli Play. Pamiętaj, że to pole wyklucza się z polami oneTimeProductNotification, subscriptionNotification i voidedPurchaseNotification. | 
SubscriptionNotification
SubscriptionNotification zawiera te pola:
{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
| Nazwa usługi | Wartość | Opis | 
| Wersja | ciąg znaków | 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: 
 | 
| purchaseToken | ciąg znaków | 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 usługi | Wartość | Opis | 
| Wersja | ciąg znaków | 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 | ciąg znaków | Token przekazany na urządzenie użytkownika w momencie zakupu. | 
| sku | ciąg znaków | 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 usługi | 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 jednorazowych zakupów jest to jedyny identyfikator zamówienia wygenerowany dla danego zakupu. W przypadku subskrypcji z automatycznym odnawianiem dla każdej transakcji odnowienia generowany jest nowy identyfikator zamówienia. | 
| 
 | 
 | 
 
 | 
| 
 | 
 | 
 
 Gdy pozostała łączna liczba produktów w zakupie wieloproduktowym zostanie zwrócona,  | 
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
  }
}
Wykorzystywanie powiadomienia o anulowaniu zakupu
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.
TestNotification
TestNotification zawiera te pola:
{
  "version": string
}
| Nazwa usługi | Wartość | Opis | 
| Wersja | ciąg znaków | 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"
  }
}
