Este documento lista e descreve os tipos de Notificações do desenvolvedor em tempo real que você pode receber do Google Play.
Codificação
Cada publicação feita em um tópico do Cloud Pub/Sub contém um único campo de dados codificado em base64.
{
  "message": {
    "attributes": {
      "key": "value"
    },
    "data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
    "messageId": "136969346945"
  },
  "subscription": "projects/myproject/subscriptions/mysubscription"
}
Depois de que você decodifica o campo de dados codificado em base64, o DeveloperNotification
contém os seguintes campos:
{
  "version": string,
  "packageName": string,
  "eventTimeMillis": long,
  "oneTimeProductNotification": OneTimeProductNotification,
  "subscriptionNotification": SubscriptionNotification,
  "voidedPurchaseNotification": VoidedPurchaseNotification,
  "testNotification": TestNotification
}
Esses campos são descritos na tabela a seguir.
| Nome da propriedade | Valor | Descrição | 
| version | string | A versão da notificação. Inicialmente, é "1.0". Essa versão é diferente dos outros campos de versão. | 
| packageName | string | O nome do pacote do aplicativo a que a notificação se refere (por exemplo, "com.alguma.coisa"). | 
| eventTimeMillis | long | Carimbo de data/hora em que o evento ocorreu, em milissegundos desde a época. | 
| subscriptionNotification | SubscriptionNotification | Se esse campo estiver presente, a notificação estará relacionada a uma assinatura. O campo vai conter mais informações sobre a assinatura. Esse campo é mutuamente exclusivo com oneTimeProductNotification, voidedPurchaseNotification e testNotification. | 
| oneTimeProductNotification | OneTimeProductNotification | Se esse campo estiver presente, a notificação será relacionada a uma compra única. O campo vai conter mais informações sobre a compra. Esse campo é mutuamente exclusivo com subscriptionNotification, voidedPurchaseNotification e testNotification. | 
| voidedPurchaseNotification | VoidedPurchaseNotification | Se esse campo estiver presente, a notificação estará relacionada a uma compra anulada e o campo vai conter outras informações relacionadas a essa compra. Esse campo é mutuamente exclusivo com oneTimeProductNotification, subscriptionNotification e testNotification. | 
| testNotification | TestNotification | Se esse campo estiver presente, a notificação estará relacionada a uma publicação de teste. O envio é feito usando apenas o Google Play Console. Esse campo é mutuamente exclusivo com oneTimeProductNotification, subscriptionNotification e voidedPurchaseNotification. | 
SubscriptionNotification
Um SubscriptionNotification contém os seguintes campos:
{
  "version": string,
  "notificationType": int,
  "purchaseToken": string
}
| Nome da propriedade | Valor | Descrição | 
| version | string | A versão da notificação. Inicialmente, é "1.0". Essa versão é diferente dos outros campos de versão. | 
| notificationType | int | O notificationType de uma assinatura pode ter os seguintes valores: 
 | 
| purchaseToken | string | O token fornecido ao dispositivo do usuário quando a assinatura foi comprada. | 
Exemplo
Veja um exemplo de notificação para uma nova compra de assinatura:
{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "subscriptionNotification":
  {
    "version":"1.0",
    "notificationType":4,
    "purchaseToken":"PURCHASE_TOKEN"
  }
}
OneTimeProductNotification
Um OneTimeProductNotification contém os seguintes campos:
{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "sku": string
}
| Nome da propriedade | Valor | Descrição | 
| version | string | A versão da notificação. Inicialmente, será "1.0". Essa versão é diferente dos outros campos de versão. | 
| notificationType | int | O tipo de notificação. Pode ter os seguintes valores: 
 | 
| purchaseToken | string | O token fornecido ao dispositivo do usuário quando a compra foi feita. | 
| sku | string | O ID do produto de aquisição única comprado (por exemplo, "sword_001") | 
Exemplo
Este é um exemplo de notificação para uma nova compra única:
{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "oneTimeProductNotification":
  {
    "version":"1.0",
    "notificationType":1,
    "purchaseToken":"PURCHASE_TOKEN",
    "sku":"my.sku"
  }
}
VoidedPurchaseNotification
Uma VoidedPurchaseNotification contém os seguintes campos:
| Nome da propriedade | Valor | Descrição | 
| 
 | 
 | O token associado à compra que foi anulada. Essas informações são fornecidas ao desenvolvedor quando ocorre uma nova compra. | 
| 
 | 
 | O código exclusivo do pedido associado à transação que foi anulada. Para compras únicas, isso representa o código do pedido gerado para a compra. Para assinaturas de renovação automática, um novo código do pedido é gerado para cada transação de renovação. | 
| 
 | 
 | O  
 | 
| 
 | 
 | O  
 Quando a quantidade restante de uma compra com várias quantidades é
      reembolsada, o  | 
Exemplo
Confira um exemplo de notificação para uma nova compra anulada:
{
  "version":"1.0",
  "packageName":"com.some.app",
  "eventTimeMillis":"1503349566168",
  "voidedPurchaseNotification":
  {
    "purchaseToken":"PURCHASE_TOKEN",
    "orderId":"GS.0000-0000-0000",
    "productType":1
    "refundType":1
  }
}
Como consumir uma VoidedPurchaseNotification
Quando o cliente de RTDN receber uma VoidedPurchaseNotification, observe estas
informações:
- packageName: identifica o app.
- eventTimeMillis: informa a hora em que a mudança de status ocorreu.
- purchaseToken: o token fornecido ao dispositivo do usuário quando o produto foi comprado.
- orderId: identifica o pedido associado à transação anulada.
- productType: indica se a compra anulada foi uma compra no app ou uma assinatura.
- refundType: especifica o tipo de reembolso que anulou a compra.
TestNotification
Um TestNotification contém os seguintes campos:
{
  "version": string
}
| Nome da propriedade | Valor | Descrição | 
| version | string | A versão da notificação. Inicialmente, é "1.0". Essa versão é diferente dos outros campos de versão. | 
Exemplo
Veja um exemplo de notificação de teste:
{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "testNotification":
  {
    "version":"1.0"
  }
}
