Puedes suscribirte a las notificaciones de PRODUCT_STATUS_CHANGE para recibir alertas en tiempo real
cada vez que cambien los estados de aprobación de los productos en tus cuentas de
Merchant Center. Por ejemplo, puedes detectar cuándo se rechaza un producto para que puedas corregir posibles problemas de calidad de los datos.
Antes de comenzar, asegúrate de que el URI de devolución de llamada esté configurado según los requisitos que se describen en la Descripción general de la sub-API de notificaciones.
Suscríbete a los cambios en el estado de los productos
Para suscribirte a los cambios de estado de los productos, envía una solicitud POST al recurso notificationsubscriptions con registeredEvent establecido en PRODUCT_STATUS_CHANGE.
Cómo suscribirse a una cuenta de destino específica
En la siguiente solicitud de ejemplo, se suscriben los cambios de estado de los productos para una cuenta de comerciante específica:
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"targetAccount": "accounts/{TARGETACCOUNT_ID}",
"callBackUri": "https://example.com/callback"
}
Reemplaza lo siguiente:
- ACCOUNT_ID: Es el identificador de la cuenta propietaria de la suscripción y que recibe notificaciones.
- TARGETACCOUNT_ID: Es el identificador de la cuenta sobre la que deseas recibir notificaciones.
Si tu cuenta de Merchant Center es una cuenta independiente y no tiene cuentas vinculadas, usa tu propio ID de cuenta para ambas variables.
Suscribirse para todas las cuentas administradas
Si administras varias cuentas (como una cuenta avanzada con cuentas secundarias), puedes suscribirte a los cambios de estado de los productos en todas las cuentas administradas configurando allManagedAccounts: true:
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
Las llamadas exitosas devuelven un identificador name para tu suscripción, incluido un ID de suscripción único:
{
"name":"accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}",
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
Decodifica las cargas útiles de los cambios de estado de los productos
Cuando se produce un cambio en el estado del producto, tu URI de devolución de llamada recibe un mensaje
codificado en Base64. Cuando se decodifica, la carga útil se ajusta al formato ProductStatusChangeMessage:
{
"account": "accounts/{TARGETACCOUNT_ID}",
"managingAccount": "accounts/{ACCOUNT_ID}",
"resourceType": "PRODUCT",
"attribute": "STATUS",
"changes": [{
"oldValue": "approved",
"newValue": "disapproved",
"regionCode": "US",
"reportingContext": "SHOPPING_ADS"
}, {
"oldValue": "approved",
"newValue": "disapproved",
"regionCode": "JP",
"reportingContext": "SHOPPING_ADS"
},{
"oldValue": "approved",
"newValue": "disapproved",
"regionCode": "GE",
"reportingContext": "SHOPPING_ADS"
}],
"resourceId": "ONLINE~en~US~1234",
"resource": "accounts/{TARGETACCOUNT_ID}/products/ONLINE~en~US~1234",
"expirationTime": "2024-10-22T02:43:47.461464Z",
"eventTime": "2024-03-21T02:43:47.461464Z"
}
Campos y reglas de carga útil
oldValueynewValue: Representan el estado anterior y el actualizado. Los valores posibles sonapproved,pending,disapprovedo una cadena vacía ('').- Si se omite
oldValue, se crea el producto. - Si se omite
newValue, significa que se borró el producto.
- Si se omite
expirationTime: Indica cuándo vence la oferta del producto. Este campo se omite cuando se borra un producto.reportingContext: Es la plataforma de publicidad o de ficha gratuita en la que cambió el estado. Los valores admitidos incluyenSHOPPING_ADS,LOCAL_INVENTORY_ADS,YOUTUBE_SHOPPING,YOUTUBE_CHECKOUT,YOUTUBE_AFFILIATEyFREE_LISTINGS_UCP_CHECKOUTde ReportingContextEnum.eventTime: Es la marca de tiempo en la que se generó el evento. Usa esta marca de tiempo para garantizar el orden correcto de los eventos.
Prueba las notificaciones de cambios en el estado de los productos
Usa la siguiente solicitud de muestra para probar si tu extremo de devolución de llamada recibe, confirma y decodifica correctamente los mensajes de cambio de estado del producto:
curl --request POST \
'https://{YOUR_CALLBACK_URI}' \
--header 'Content-Type: application/json' \
--header 'Accept: text/plain' \
--data '{"message":{"data": "ewogICJhY2NvdW50IjogImFjY291bnRzLzEyMzQiLAogICJtYW5hZ2luZ0FjY291bnQiOiAiYWNjb3VudHMvNTY3OCIsCiAgInJlc291cmNlVHlwZSI6ICJQUk9EVUNUIiwKICAiYXR0cmlidXRlIjogIlNUQVRVUyIsCiAgImNoYW5nZXMiOiBbewogICAgIm9sZFZhbHVlIjogImFwcHJvdmVkIiwKICAgICJyZWdpb25Db2RlIjogIlVTIiwKICAgICJyZXBvcnRpbmdDb250ZXh0IjogIlNIT1BQSU5HX0FEUyIKICB9XSwKICAicmVzb3VyY2VJZCI6ICJPTkxJTkV+ZW5+VVN+MDAwMDAwMDAwMDAwIiwKICAicmVzb3VyY2UiOiAiYWNjb3VudHMvMTIzNC9wcm9kdWN0cy9PTkxJTkV+ZW5+VVN+MDAwMDAwMDAwMDAwIiwKICAiZXhwaXJhdGlvblRpbWUiOiAiMjAyNC0xMC0yMlQwMjo0Mzo0Ny40NjE0NjRaIiwKICAiZXZlbnRUaW1lIjogIjIwMjQtMDMtMjFUMDI6NDM6NDcuNDYxNDY0WiIKfQ=="}}'En respuesta a esta llamada, tu URI de devolución de llamada debería mostrar un código de estado HTTP
aceptable (como 200 OK). El mensaje decodificado tiene el siguiente contenido:
{
"account": "accounts/1234",
"managingAccount": "accounts/5678",
"resourceType": "PRODUCT",
"attribute": "STATUS",
"changes": [{
"oldValue": "approved",
"regionCode": "US",
"reportingContext": "SHOPPING_ADS"
}],
"resourceId": "ONLINE~en~US~000000000000",
"resource": "accounts/1234/products/ONLINE~en~US~000000000000",
"expirationTime": "2024-10-22T02:43:47.461464Z",
"eventTime": "2024-03-21T02:43:47.461464Z"
}