Guía de referencia de las notificaciones para desarrolladores en tiempo real

En este tema, se enumeran y describen los tipos de notificaciones para desarrolladores en tiempo real que puedes recibir de Google Play.

Codificación

Cada publicación realizada en un tema de Cloud Pub/Sub incluye un campo de datos único con codificación base64.

{
  "message": {
    "attributes": {
      "key": "value"
    },
    "data": "eyAidmVyc2lvbiI6IHN0cmluZywgInBhY2thZ2VOYW1lIjogc3RyaW5nLCAiZXZlbnRUaW1lTWlsbGlzIjogbG9uZywgIm9uZVRpbWVQcm9kdWN0Tm90aWZpY2F0aW9uIjogT25lVGltZVByb2R1Y3ROb3RpZmljYXRpb24sICJzdWJzY3JpcHRpb25Ob3RpZmljYXRpb24iOiBTdWJzY3JpcHRpb25Ob3RpZmljYXRpb24sICJ0ZXN0Tm90aWZpY2F0aW9uIjogVGVzdE5vdGlmaWNhdGlvbiB9",
    "messageId": "136969346945"
  },
  "subscription": "projects/myproject/subscriptions/mysubscription"
}

Una vez que se decodifica el campo de datos con codificación base64, el objeto DeveloperNotification incluye los siguientes campos:

{
  "version": string,
  "packageName": string,
  "eventTimeMillis": long,
  "oneTimeProductNotification": OneTimeProductNotification,
  "subscriptionNotification": SubscriptionNotification,
  "voidedPurchaseNotification": VoidedPurchaseNotification,
  "testNotification": TestNotification
}

Estos campos se describen en la siguiente tabla.

Nombre de la propiedad Valor Descripción
version string Es la versión de esta notificación. Inicialmente, es "1.0". Esta versión es distinta del resto de los campos de versión.
packageName string Es el nombre del paquete de la aplicación con la que está relacionada esta notificación (por ejemplo, "com.algo").
eventTimeMillis long Es la marca de tiempo en la que se produjo el evento, en milisegundos, desde la época.
subscriptionNotification SubscriptionNotification Si este campo está presente, entonces la notificación se relaciona con una suscripción, y este campo contiene información adicional relacionada con la suscripción. Ten en cuenta que este campo es mutuamente excluyente con oneTimeProductNotification, voidedPurchaseNotification y testNotification.
oneTimeProductNotification OneTimeProductNotification Si este campo está presente, entonces la notificación se relaciona con una compra única, y este campo contiene información adicional relacionada con la compra. Ten en cuenta que este campo es mutuamente excluyente con subscriptionNotification, voidedPurchaseNotification y testNotification.
voidedPurchaseNotification VoidedPurchaseNotification Si este campo está presente, entonces la notificación se relaciona con una compra anulada y este campo contiene información adicional relacionada con esa compra. Ten en cuenta que este campo es mutuamente excluyente con oneTimeProductNotification, subscriptionNotification y testNotification.
testNotification TestNotification Si este campo está, esta notificación está relacionada con una publicación de prueba. Solo se envían a través de Google Play Console. Ten en cuenta que este campo es mutuamente excluyente con oneTimeProductNotification, subscriptionNotification y voidedPurchaseNotification.

SubscriptionNotification

Un objeto SubscriptionNotification incluye los siguientes campos:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "subscriptionId": string
}
Nombre de la propiedad Valor Descripción
version string Es la versión de esta notificación. Inicialmente, es "1.0". Esta versión es distinta del resto de los campos de versión.
notificationType int El objeto notificationType de una suscripción puede tener los siguientes valores:
  • (1) SUBSCRIPTION_RECOVERED: Se recuperó una suscripción de una suspensión de la cuenta.
  • (2) SUBSCRIPTION_RENEWED: Se renovó una suscripción activa.
  • (3) SUBSCRIPTION_CANCELED: Una suscripción se canceló de manera voluntaria o involuntaria. Las cancelaciones voluntarias se envían cuando el usuario realiza la acción.
  • (4) SUBSCRIPTION_PURCHASED: Se adquirió una suscripción nueva.
  • (5) SUBSCRIPTION_ON_HOLD: Una suscripción entró en suspensión de la cuenta (si está habilitada).
  • (6) SUBSCRIPTION_IN_GRACE_PERIOD: Una suscripción entró en un período de gracia (si está habilitado).
  • (7) SUBSCRIPTION_RESTARTED: Un usuario restableció su suscripción desde Play > Cuenta > Suscripciones. Se canceló la suscripción, pero no venció cuando el usuario la restableció. Para obtener más información, consulta Restablecimientos.
  • (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED: El usuario confirmó correctamente un cambio en el precio de la suscripción.
  • (9) SUBSCRIPTION_DEFERRED: Se extendió el tiempo de recurrencia de una suscripción.
  • (10) SUBSCRIPTION_PAUSED: Se detuvo una suscripción.
  • (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED: Se modificó el programa de detención de una suscripción.
  • (12) SUBSCRIPTION_REVOKED: Un usuario revocó una suscripción antes del vencimiento.
  • (13) SUBSCRIPTION_EXPIRED: Venció una suscripción.
  • (20) SUBSCRIPTION_PENDING_PURCHASE_CANCELED: Una transacción pendiente de una suscripción se canceló.
purchaseToken string Es el token que se envió al dispositivo del usuario cuando se compró la suscripción.
subscriptionId string Es el ID del producto de la suscripción comprada (por ejemplo, "monthly001").

Ejemplo

Este es un ejemplo de una notificación por la compra de una suscripción nueva:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "subscriptionNotification":
  {
    "version":"1.0",
    "notificationType":4,
    "purchaseToken":"PURCHASE_TOKEN",
    "subscriptionId":"monthly001"
  }
}

OneTimeProductNotification

Un objeto OneTimeProductNotification incluye los siguientes campos:

{
  "version": string,
  "notificationType": int,
  "purchaseToken": string,
  "sku": string
}
Nombre de la propiedad Valor Descripción
version string Es la versión de esta notificación. Inicialmente, será "1.0". Esta versión es distinta del resto de los campos de versión.
notificationType int El tipo de notificación. Puede tener los siguientes valores:
  • (1) ONE_TIME_PRODUCT_PURCHASED: Un usuario compró con éxito un producto único.
  • (2) ONE_TIME_PRODUCT_CANCELED: Un usuario canceló la compra pendiente de un producto único.
purchaseToken string Es el token que se envió al dispositivo del usuario en el momento de la compra.
sku string Es el ID del producto único que se compró (por ejemplo, "espada_001").

Ejemplo

A continuación, se incluye un ejemplo de una notificación por una nueva compra única:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503349566168",
  "oneTimeProductNotification":
  {
    "version":"1.0",
    "notificationType":1,
    "purchaseToken":"PURCHASE_TOKEN",
    "sku":"my.sku"
  }
}

VoidedPurchaseNotification

Un objeto VoidedPurchaseNotification incluye los siguientes campos:

Nombre de la propiedad

Valor

Descripción

purchaseToken

string

Es el token asociado con la compra que se anuló. Esta información se proporciona al desarrollador cuando se produce una compra nueva.

orderId

string

Es el ID de pedido único asociado con la transacción que se anuló. En el caso de las compras únicas, representa el ID de pedido único generado para la compra. En el caso de las suscripciones con renovación automática, se genera un ID de pedido nuevo para cada transacción de renovación.

productType

int

El productType de una compra anulada puede tener los siguientes valores:

  • (1) PRODUCT_TYPE_SUBSCRIPTION: Se anuló la compra de una suscripción.
  • (2) PRODUCT_TYPE_ONE_TIME: Se anuló una compra única.

refundType

int

El refundType de una compra anulada puede tener los siguientes valores:

  • (1) REFUND_TYPE_FULL_REFUND: La compra se anuló por completo.
  • (2) REFUND_TYPE_QUANTITY_BASED_PARTIAL_REFUND: el compra se anuló parcialmente con un reembolso parcial basado en la cantidad, solo se aplica a compras de varias cantidades. Una compra puede ser parcialmente anulados varias veces.

Ten en cuenta que cuando la cantidad total restante de una compra con varias cantidades sea se reembolsó el importe de refundType REFUND_TYPE_FULL_REFUND

Ejemplo

Este es un ejemplo de una notificación por la compra de una suscripción que se anuló nueva:

{
  "version":"1.0",
  "packageName":"com.some.app",
  "eventTimeMillis":"1503349566168",
  "voidedPurchaseNotification":
  {
    "purchaseToken":"PURCHASE_TOKEN",
    "orderId":"GS.0000-0000-0000",
    "productType":1
    "refundType":1
  }
}

Cómo consumir VoidedPurchaseNotification

Cuando tu cliente de RTDN recibe un VoidedPurchaseNotification, ten en cuenta la siguiente información:

  • packageName: Identifica la app.
  • eventTimeMillis: Informa al desarrollador sobre la hora en que ocurrió el cambio de estado.
  • purchaseToken: Es el token que se envió al dispositivo del usuario cuando se compró la suscripción.
  • orderId: Identifica el pedido asociado con la transacción anulada.
  • productType: Indica si la compra anulada fue una compra directa desde la aplicación o una suscripción.
  • refundType: Indica el tipo de reembolso que anuló la compra.

Si todo lo que necesitas hacer para los ajustes de derechos es ubicar la compra y el pedido correctos, entonces tienes toda la información que necesitas en este punto. Si quieres obtener más información sobre la compra anulada, consulta la API de Voided Purchases de Google Play, que es un modelo de extracción que proporciona datos adicionales para las compras anuladas entre una marca de tiempo determinada.

Para las compras de varias cantidades anuladas de forma parcial, el campo refundableQuantity proporcionados por purchases.products contiene los restantes cantidad de productos comprados que no se anularon

TestNotification

Un objeto TestNotification incluye los siguientes campos:

{
  "version": string
}
Nombre de la propiedad Valor Descripción
version string Es la versión de esta notificación. Inicialmente, es "1.0". Esta versión es distinta del resto de los campos de versión.

Ejemplo

Este es un ejemplo de una notificación de prueba:

{
  "version":"1.0",
  "packageName":"com.some.thing",
  "eventTimeMillis":"1503350156918",
  "testNotification":
  {
    "version":"1.0"
  }
}