Możesz subskrybować PRODUCT_STATUS_CHANGEpowiadomienia, aby otrzymywać alerty w czasie rzeczywistym, gdy zmieni się stan zatwierdzenia produktu na Twoich kontach Merchant Center. Możesz na przykład wykryć, kiedy produkt zostanie odrzucony, aby rozwiązać potencjalne problemy z jakością danych.
Zanim zaczniesz, upewnij się, że identyfikator URI wywołania zwrotnego jest skonfigurowany zgodnie z wymaganiami opisanymi w omówieniu podrzędnego interfejsu API powiadomień.
Subskrybowanie zmian stanu produktu
Aby zasubskrybować zmiany stanu produktu, wyślij żądanie POST do zasobu notificationsubscriptions z parametrem registeredEvent ustawionym na PRODUCT_STATUS_CHANGE.
Subskrybowanie konkretnego konta docelowego
Przykładowa prośba o subskrypcję zmian stanu produktu na konkretnym koncie sprzedawcy:
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"targetAccount": "accounts/{TARGETACCOUNT_ID}",
"callBackUri": "https://example.com/callback"
}
Zastąp te elementy:
- ACCOUNT_ID: identyfikator konta, do którego należy subskrypcja i na które są wysyłane powiadomienia.
- TARGETACCOUNT_ID: identyfikator konta, o którym chcesz otrzymywać powiadomienia.
Jeśli Twoje konto Merchant Center jest kontem samodzielnym, które nie jest połączone z żadnymi innymi kontami, użyj własnego identyfikatora konta w przypadku obu zmiennych.
Subskrybuj wszystkie zarządzane konta
Jeśli zarządzasz wieloma kontami (np. kontem zaawansowanym z
kontami podrzędnymi), możesz subskrybować zmiany stanu produktów na wszystkich zarządzanych
kontach, ustawiając allManagedAccounts: true:
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
Wywołania zakończone powodzeniem zwracają identyfikator subskrypcji name, w tym unikalny identyfikator subskrypcji:
{
"name":"accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}",
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
Dekodowanie ładunków zmian stanu produktu
Gdy nastąpi zmiana stanu produktu, Twój identyfikator URI wywołania zwrotnego otrzyma zakodowaną w formacie base64 wiadomość. Po zdekodowaniu ładunek jest zgodny z formatem 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"
}
Pola i reguły ładunku
oldValueinewValue: reprezentują poprzedni i zaktualizowany stan. Możliwe wartości toapproved,pending,disapprovedlub pusty ciąg znaków ('').- Jeśli pominiesz właściwość
oldValue, produkt zostanie utworzony na nowo. - Jeśli pominiesz właściwość
newValue, produkt zostanie usunięty.
- Jeśli pominiesz właściwość
expirationTime: wskazuje, kiedy wygasa oferta produktu. To pole jest pomijane, gdy produkt zostanie usunięty.reportingContext: platforma reklamowa lub bezpłatna, na której zmienił się stan. Obsługiwane wartości toSHOPPING_ADS,LOCAL_INVENTORY_ADS,YOUTUBE_SHOPPING,YOUTUBE_CHECKOUT,YOUTUBE_AFFILIATEiFREE_LISTINGS_UCP_CHECKOUTz elementu ReportingContextEnum.eventTime: sygnatura czasowa wygenerowania zdarzenia. Użyj tej sygnatury czasowej, aby zapewnić prawidłową kolejność zdarzeń.
Testowanie powiadomień o zmianach stanu produktu
Użyj poniższej przykładowej prośby, aby sprawdzić, czy punkt końcowy wywołania zwrotnego prawidłowo odbiera, potwierdza i dekoduje wiadomości o zmianie stanu produktu:
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=="}}'W odpowiedzi na to wywołanie identyfikator URI wywołania zwrotnego powinien zwrócić akceptowalny kod stanu HTTP (np. 200 OK). Zdekodowana wiadomość ma następującą treść:
{
"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"
}