Guia de referência de notificações do desenvolvedor em tempo real

Este tópico 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,
  "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,
  "subscriptionId": 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:
  • (1) SUBSCRIPTION_RECOVERED: uma assinatura foi recuperada da suspensão de conta.
  • (2) SUBSCRIPTION_RENEWED: uma assinatura ativa foi renovada.
  • (3) SUBSCRIPTION_CANCELED: uma assinatura foi cancelada de forma voluntária ou involuntária. Em um cancelamento voluntário, esse valor é enviado quando o usuário faz o cancelamento.
  • (4) SUBSCRIPTION_PURCHASED: uma nova assinatura foi comprada.
  • (5) SUBSCRIPTION_ON_HOLD: uma assinatura entrou na suspensão de conta (se ativada).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD: uma assinatura entrou no período de carência (se ativado).
  • (7) SUBSCRIPTION_RESTARTED: o usuário reativou a assinatura em Play > Conta > Assinaturas. A assinatura foi cancelada, mas ainda não havia expirado quando o usuário a restaurou. Para mais informações, consulte Restaurações.
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED: uma mudança no preço da assinatura foi confirmada pelo usuário.
  • (9) SUBSCRIPTION_DEFERRED: o tempo de renovação de uma assinatura foi estendido.
  • (10) SUBSCRIPTION_PAUSED: uma assinatura foi pausada.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED: a programação de uma pausa na assinatura foi alterada.
  • (12) SUBSCRIPTION_REVOKED: uma assinatura foi revogada pelo usuário antes do prazo de vencimento.
  • (13) SUBSCRIPTION_EXPIRED: a assinatura expirou.
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED: uma transação pendente de uma assinatura for cancelada.
purchaseToken string O token fornecido ao dispositivo do usuário quando a assinatura foi comprada.
subscriptionId string O ID do produto para assinatura comprada (por exemplo, "monthly001").

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",
    "subscriptionId":"monthly001"
  }
}

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:
  • (1) ONE_TIME_PRODUCT_PURCHASED: um produto de aquisição única foi comprado por um usuário.
  • (2) ONE_TIME_PRODUCT_CANCELED: uma compra pendente de um produto de aquisição única foi cancelada pelo usuário.
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

purchaseToken

string

O token associado à compra que foi anulada. Essas informações são fornecidas ao desenvolvedor quando ocorre uma nova compra.

orderId

string

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.

productType

int

O productType para uma compra anulada pode ter estes valores:

  • (1) PRODUCT_TYPE_SUBSCRIPTION: uma compra de assinatura foi anulada.
  • (2) PRODUCT_TYPE_ONE_TIME: uma compra única foi anulada.

refundType

int

O refundType para uma compra anulada pode ter estes valores:

  • (1) REFUND_TYPE_FULL_REFUND: a compra foi totalmente anulada.
  • (2) REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND compra tiver sido parcialmente anulada por um reembolso parcial baseado em quantidade, aplicável somente a compras de quantidade múltipla. Uma compra pode ser parcialmente anuladas várias vezes.

Observe quando a quantidade total restante de uma compra de quantidade múltipla é reembolsado, o valor de refundType vai ser REFUND_TYPE_FULL_REFUND.

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 ao desenvolvedor a hora em que a mudança no 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: informa se a compra anulada foi uma compra no app ou uma assinatura.
  • refundType: informa o tipo de reembolso que anulou a compra.

Se tudo o que você precisa fazer para ajustar os direitos de acesso é localizar a compra e o pedido certos, você já tem todas as informações necessárias. Para saber como conseguir mais informações sobre a compra anulada, consulte a API Voided Purchases do Google Play, que é um modelo de pull que fornece mais dados para compras anuladas no intervalo de um determinado carimbo de data/hora.

Para compras de quantidade múltipla parcialmente anuladas, o campo refundableQuantity fornecido por purchases.products contém os valores restantes número de produtos comprados que não foram anulados.

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"
  }
}