Descripción general de la sub-API de Notifications

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 POST con el encabezado Content-Type establecido en application/json.
  • Debe devolver uno de los siguientes códigos de estado HTTP para confirmar que se recibió la notificación:

    • 102
    • 200
    • 201
    • 202
    • 204

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:

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: