Puedes usar la sub-API de Notifications para recibir notificaciones push cuando cambien los datos en tus cuentas de Merchant Center. En lugar de sondear la API periódicamente para detectar cambios, puedes suscribirte a feeds de eventos en tiempo real que se entregan directamente a un extremo HTTPS que configures.
La sub-API de Notifications admite notificaciones para lo siguiente:
- Cambios en el estado del producto: Recibe alertas en tiempo real cuando cambie el estado de aprobación de un producto (por ejemplo, cuando se rechace o apruebe un producto) en cualquiera de tus cuentas vinculadas o subcuentas.
- Cambios en los servicios de la cuenta: Recibe alertas en tiempo real cuando se cree, actualice o borre un recurso
AccountService(por ejemplo, cuando se establezca, modifique o quite una relación de servicio de la cuenta).
Requisitos previos y configuración del URI de devolución de llamada
Para recibir notificaciones push, debes proporcionar un callBackUri. Tu URI de devolución de llamada debe cumplir con los siguientes requisitos:
- Debe ser una dirección HTTPS accesible de forma pública con un certificado SSL válido firmado por una autoridad certificadora reconocida.
- Debe aceptar solicitudes HTTP
POSTcon el encabezadoContent-Typeestablecido enapplication/json. Debe devolver uno de los siguientes códigos de estado HTTP para confirmar que se recibió la notificación:
102200201202204
Puedes usar el mismo URI de devolución de llamada para varias suscripciones. Para minimizar la carga en un solo extremo, usa un URI de devolución de llamada único por cuenta avanzada y tipo de evento.
Administrar las suscripciones
La sub-API de Notifications proporciona métodos para crear, enumerar, recuperar, actualizar y borrar configuraciones de notificaciones.
Crea una suscripción
La creación de suscripciones es específica del tipo de evento que deseas recibir. Cada tipo de evento requiere diferentes campos de configuración y entrega estructuras de carga útil distintas.
Para obtener información sobre cómo crear suscripciones y ver solicitudes de muestra para cada tipo de evento, consulta las siguientes guías:
- Suscríbete a los cambios en el estado de los productos
- Cómo suscribirse a los cambios en los servicios de la cuenta
Enumerar suscripciones
Para enumerar todas las suscripciones a notificaciones de una cuenta, envía una solicitud GET a la colección notificationsubscriptions:
GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions
Recupera una suscripción
Para obtener detalles sobre una suscripción específica, usa el nombre del recurso de la suscripción:
GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}
Actualiza una suscripción
Para actualizar el URI de devolución de llamada de una suscripción existente, envía una solicitud PATCH con un update_mask que especifique los campos que se actualizarán:
PATCH https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}?update_mask=callBackUri
{
"callBackUri": "https://example.com/updated-callback"
}
Cómo borrar una suscripción
Para dejar de recibir notificaciones, borra la suscripción:
DELETE https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}
Cómo decodificar notificaciones
Cuando ocurre un evento, Google envía una notificación a tu callBackUri registrado. La notificación push llega en un sobre JSON con una carga útil data codificada en Base64:
{"message":{"data":"{base64_encoded_string}"}}
Decodifica la cadena de datos para acceder a la carga útil del evento JSON. En el siguiente controlador de Spring Boot de ejemplo, se muestra cómo recibir y decodificar notificaciones push:
@RestController
public class ExampleController {
@RequestMapping(value = "/push",
method = RequestMethod.POST,
consumes = {"application/json"},
produces = {"text/plain"})
@ResponseStatus(HttpStatus.OK)
public void handleNotification(@RequestBody String message) {
JSONObject jsonObject = new JSONObject(message);
JSONObject jsonMessage = jsonObject.getJSONObject("message");
String encodedData = jsonMessage.getString("data");
byte[] decodedBytes = Base64.getDecoder().decode(encodedData);
String decodedPayload = new String(decodedBytes);
// Process decodedPayload according to the registered event type
}
}
Próximos pasos
Para configurar suscripciones y controlar cargas útiles decodificadas para eventos específicos, consulta los siguientes recursos:
- Recibe notificaciones push sobre los cambios en el estado de los productos:
Aprende a suscribirte a las actualizaciones de aprobación y rechazo de productos, y a analizar la carga útil de
ProductStatusChangeMessage. - Recibe notificaciones push sobre los cambios en los servicios de la cuenta:
Obtén información para suscribirte a las actualizaciones de las relaciones de la cuenta y analizar la carga útil de
ResourceChangeMessage.