Descripción general de la sub-API de Notifications

Puedes usar la sub-API de notificaciones para recibir notificaciones push cuando cambien los datos en tus cuentas de Merchant Center. En lugar de sondear periódicamente la API para detectar cambios, puedes suscribirte a feeds de eventos en tiempo real que se envían directamente a un extremo HTTPS que configures.

La API secundaria de notificaciones 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 o cuentas secundarias vinculadas.
  • Cambios en el servicio de la cuenta: Recibe alertas en tiempo real cuando se crea, actualiza o borra un recurso AccountService (como cuando se establece, modifica o quita 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. El URI de devolución de llamada debe cumplir con los siguientes requisitos:

  • Debe ser una dirección HTTPS de acceso público 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 notificaciones proporciona métodos para crear, enumerar, recuperar, actualizar y borrar parámetros de configuración de notificaciones.

Crea una suscripción

La creación de suscripciones es específica del tipo de evento que quieres recibir. Cada tipo de evento requiere diferentes campos de configuración y entrega distintas estructuras de carga útil.

Para aprender a crear suscripciones y ver solicitudes de muestra para cada tipo de evento, consulta las guías correspondientes:

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

Cómo recuperar una suscripción

Para obtener detalles de 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"
}

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

Decodifica notificaciones

Cuando se produce 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 de 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 muestra, se indica 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: