Este documento lista e descreve os tipos de Notificações do desenvolvedor em tempo real que podem ser recebidas 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,
"pendingRefundReviewNotification": PendingRefundReviewNotification,
"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 pendingRefundReviewNotification, 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 pendingRefundReviewNotification, 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 pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification e testNotification. |
| pendingRefundReviewNotification | PendingRefundReviewNotification | Se esse campo estiver presente, a notificação estará relacionada a uma solicitação de estorno para a qual você pode sugerir uma resolução. Responda a essa notificação chamando a API `ReviewRefund`. Esse campo é mutuamente exclusivo com subscriptionNotification, oneTimeProductNotification, voidedPurchaseNotification, 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 Developer Console. Esse campo é mutuamente exclusivo com pendingRefundReviewNotification, 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
Uma 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
Observação: quando a quantidade total restante de uma compra de várias quantidades for
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.
PendingRefundReviewNotification
Uma PendingRefundReviewNotification é enviada quando um usuário solicita um estorno de uma compra e a solicitação exige análise do desenvolvedor. Quando você
receber essa notificação, avalie a solicitação e forneça uma sugestão de reembolso
e evidências de uso da compra em até 24 horas chamando a
ReviewRefund API.
Uma PendingRefundReviewNotification contém os seguintes campos:
{
"version": string,
"pendingRefundToken": string,
"orderId": string,
"refundReason": int,
"obfuscatedAccountId": string,
"obfuscatedProfileId": 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. |
| pendingRefundToken | string | Um token exclusivo que identifica a solicitação de reembolso pendente em análise. Transmita esse token ao chamar a API ReviewRefund. |
| orderId | string | O ID do pedido da compra que está sujeita à análise de reembolso pendente. |
| refundReason | int | O motivo da solicitação de reembolso. As análises pendentes só aceitam CHARGEBACK (7) como motivo do reembolso. Seu código precisa
processar novos motivos à medida que eles ficam disponíveis. |
| obfuscatedAccountId | string | (Se aplicável) O ID da conta de usuário ofuscado especificado pelo desenvolvedor que foi fornecido quando a compra foi feita. |
| obfuscatedProfileId | string | (Se aplicável) O ID de perfil ofuscado especificado pelo desenvolvedor que foi fornecido quando a compra foi feita. |
Exemplo
Confira um exemplo de notificação de análise de reembolso pendente:
{
"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
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"
}
}