En este documento, 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,
"pendingRefundReviewNotification": PendingRefundReviewNotification,
"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á, esa notificación está relacionada 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 pendingRefundReviewNotification, oneTimeProductNotification, voidedPurchaseNotification y testNotification. |
| oneTimeProductNotification | OneTimeProductNotification | Si este campo está, esa notificación está relacionada 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 pendingRefundReviewNotification, 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 pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification y testNotification. |
| pendingRefundReviewNotification | PendingRefundReviewNotification | Si este campo está presente, esta notificación se relaciona con una solicitud de contracargo para la que puedes sugerir una resolución. Para responder a esta notificación, llama a la API de `ReviewRefund`. Ten en cuenta que este campo es mutuamente excluyente con subscriptionNotification, oneTimeProductNotification, voidedPurchaseNotification, 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 Developer Console. Ten en cuenta que este campo es mutuamente excluyente con pendingRefundReviewNotification, oneTimeProductNotification, subscriptionNotification y voidedPurchaseNotification. |
SubscriptionNotification
Un objeto SubscriptionNotification incluye los siguientes campos:
{
"version": string,
"notificationType": int,
"purchaseToken": 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:
|
| purchaseToken | string | Es el token que se envió al dispositivo del usuario cuando se compró la suscripción. |
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"
}
}
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:
|
| purchaseToken | string | Es el token que se envió al dispositivo del usuario cuando se realizó 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 |
|---|---|---|
|
|
Es el token asociado con la compra que se anuló. Esta información se proporciona al desarrollador cuando se produce una compra nueva. |
|
|
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. |
|
|
El
|
|
|
El
Ten en cuenta que, cuando se reembolsa la cantidad total restante de una compra de cantidades múltiples, el |
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: Te informa la hora en que ocurrió el cambio de estado.purchaseToken: Es el token que se envió al dispositivo del usuario cuando se compró el producto.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: Especifica el tipo de reembolso que anuló la compra.
PendingRefundReviewNotification
Se envía un objeto PendingRefundReviewNotification cuando un usuario solicita un contracargo por una compra y la solicitud requiere la revisión del desarrollador. Cuando
recibas esta notificación, debes evaluar la solicitud y proporcionar una sugerencia de reembolso
y pruebas de uso de la compra en un plazo de 24 horas llamando a la
ReviewRefund API.
Un objeto PendingRefundReviewNotification incluye los siguientes campos:
{
"version": string,
"pendingRefundToken": string,
"orderId": string,
"refundReason": int,
"obfuscatedAccountId": string,
"obfuscatedProfileId": 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. |
| pendingRefundToken | string | Es un token único que identifica la solicitud de reembolso pendiente en revisión. Pasa este token cuando llames a la API de ReviewRefund. |
| orderId | string | Es el ID de pedido de la compra que está sujeta a la revisión de reembolso pendiente. |
| refundReason | int | Es el motivo de la solicitud de reembolso. Las revisiones pendientes solo admiten CHARGEBACK (7) como motivo de reembolso. Tu código debe
controlar los motivos nuevos a medida que estén disponibles. |
| obfuscatedAccountId | string | (Si corresponde) Es el ID de cuenta de usuario ofuscado especificado por el desarrollador que se proporcionó cuando se realizó la compra. |
| obfuscatedProfileId | string | (Si corresponde) Es el ID de perfil ofuscado especificado por el desarrollador que se proporcionó cuando se realizó la compra. |
Ejemplo
Este es un ejemplo de una notificación de revisión de reembolso pendiente:
{
"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
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"
}
}