Sie können PRODUCT_STATUS_CHANGE-Benachrichtigungen abonnieren, um Echtzeitbenachrichtigungen zu erhalten, wenn sich der Genehmigungsstatus von Produkten in Ihren Merchant Center-Konten ändert. So können Sie beispielsweise erkennen, wenn ein Produkt abgelehnt wird, und potenzielle Probleme mit der Datenqualität beheben.
Prüfen Sie vorab, ob Ihr Callback-URI gemäß den Anforderungen konfiguriert ist, die in der Übersicht über die Notifications-Unter-API beschrieben sind.
Änderungen des Produktstatus abonnieren
Wenn Sie Produktstatusänderungen abonnieren möchten, senden Sie eine POST-Anfrage an die Ressource notificationsubscriptions, wobei registeredEvent auf PRODUCT_STATUS_CHANGE festgelegt ist.
Für ein bestimmtes Zielkonto abonnieren
Mit der folgenden Beispielanfrage werden Produktstatusänderungen für ein bestimmtes Händlerkonto abonniert:
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"targetAccount": "accounts/{TARGETACCOUNT_ID}",
"callBackUri": "https://example.com/callback"
}
Ersetzen Sie Folgendes:
- ACCOUNT_ID: Die Kennung des Kontos, dem das Abo gehört und das Benachrichtigungen erhält.
- TARGETACCOUNT_ID: Die Kennung des Kontos, über das Sie Benachrichtigungen erhalten möchten.
Wenn Ihr Merchant Center-Konto ein eigenständiges Konto ohne verknüpfte Konten ist, verwenden Sie Ihre eigene Konto-ID für beide Variablen.
Abonnement für alle verwalteten Konten abschließen
Wenn Sie mehrere Konten verwalten, z. B. ein erweitertes Konto mit untergeordneten Konten, können Sie Produktstatusänderungen für alle verwalteten Konten abonnieren, indem Sie allManagedAccounts: true festlegen:
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
Bei erfolgreichen Aufrufen wird eine name-Kennung für Ihr Abo zurückgegeben, einschließlich einer eindeutigen Abo-ID:
{
"name":"accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}",
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
Nutzlasten für Produktstatusänderungen decodieren
Wenn sich der Produktstatus ändert, wird an Ihren Callback-URI eine Base64-codierte Nachricht gesendet. Die decodierte Nutzlast entspricht dem Format 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"
}
Nutzlastfelder und ‑regeln
oldValueundnewValue: Stellen den vorherigen und den aktualisierten Status dar. Mögliche Werte sindapproved,pending,disapprovedoder ein leerer String ('').- Wenn
oldValueweggelassen wird, wird das Produkt neu erstellt. - Wenn
newValueweggelassen wird, wurde das Produkt gelöscht.
- Wenn
expirationTime: Gibt an, wann das Produktangebot abläuft. Dieses Feld wird ausgelassen, wenn ein Produkt gelöscht wird.reportingContext: Die Werbe- oder Produkteintragsoberfläche, auf der sich der Status geändert hat. Unterstützte Werte sindSHOPPING_ADS,LOCAL_INVENTORY_ADS,YOUTUBE_SHOPPING,YOUTUBE_CHECKOUT,YOUTUBE_AFFILIATEundFREE_LISTINGS_UCP_CHECKOUTaus ReportingContextEnum.eventTime: Der Zeitstempel, der angibt, wann das Ereignis generiert wurde. Verwenden Sie diesen Zeitstempel, um die richtige Reihenfolge der Ereignisse zu gewährleisten.
Benachrichtigungen zu Änderungen des Produktstatus testen
Verwenden Sie die folgende Beispielanfrage, um zu testen, ob Ihr Callback-Endpunkt Nachrichten zu Produktstatusänderungen korrekt empfängt, bestätigt und decodiert:
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=="}}'Als Antwort auf diesen Aufruf sollte Ihr Callback-URI einen akzeptablen HTTP-Statuscode (z. B. 200 OK) zurückgeben. Die decodierte Nachricht hat folgenden Inhalt:
{
"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"
}