Merchant Center hesaplarınızda ürün onay durumları değiştiğinde anlık uyarılar almak için PRODUCT_STATUS_CHANGE bildirimlerine abone olabilirsiniz. Örneğin, bir ürünün onaylanmadığını tespit edebilir ve böylece olası veri kalitesi sorunlarını düzeltebilirsiniz.
Başlamadan önce geri çağırma URI'nizin Bildirimler alt API'sine Genel Bakış bölümünde açıklanan koşullara göre yapılandırıldığından emin olun.
Ürün durumu değişikliklerine abone olma
Ürün durumu değişikliklerine abone olmak için POST isteğini registeredEvent parametresi PRODUCT_STATUS_CHANGE olarak ayarlanmış şekilde notificationsubscriptions kaynağına gönderin.
Belirli bir hedef hesaba abone olma
Aşağıdaki örnek istek, belirli bir satıcı hesabının ürün durumu değişikliklerine abone olur:
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"targetAccount": "accounts/{TARGETACCOUNT_ID}",
"callBackUri": "https://example.com/callback"
}
Aşağıdakini değiştirin:
- ACCOUNT_ID: Aboneliğin sahibi olan ve bildirimleri alan hesabın tanımlayıcısı.
- TARGETACCOUNT_ID: Hakkında bildirim almak istediğiniz hesabın tanımlayıcısı.
Merchant Center hesabınız bağlı hesabı olmayan bağımsız bir hesapsa her iki değişken için de kendi hesap kimliğinizi kullanın.
Tüm yönetilen hesaplar için abone olma
Birden fazla hesap (ör. alt hesapları olan gelişmiş bir hesap) yönetiyorsanız allManagedAccounts: true ayarını yaparak yönetilen tüm hesaplardaki ürün durumu değişikliklerine abone olabilirsiniz:
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
Başarılı çağrılar, benzersiz bir abonelik kimliği de dahil olmak üzere aboneliğinizin name tanımlayıcısını döndürür:
{
"name":"accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}",
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
Ürün durumu değişikliği yüklerini çözme
Ürün durumu değişikliği olduğunda geri çağırma URI'niz base64 kodlu bir mesaj alır. Yük, kodu çözüldüğünde şu ProductStatusChangeMessage biçimine uygun olur:
{
"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"
}
Yük alanları ve kuralları
oldValuevenewValue: Önceki ve güncellenen durumu gösterir. Olası değerlerapproved,pending,disapprovedveya boş dizedir ('').oldValueçıkarılırsa ürün yeni oluşturulur.newValueçıkarılırsa ürün silinmiştir.
expirationTime: Ürün teklifinin geçerlilik süresinin ne zaman sona erdiğini gösterir. Bu alan, bir ürün silindiğinde atlanır.reportingContext: Durumun değiştiği reklam veya ücretsiz listeleme yüzeyi. Desteklenen değerler arasındaSHOPPING_ADS,LOCAL_INVENTORY_ADS,YOUTUBE_SHOPPING,YOUTUBE_CHECKOUT,YOUTUBE_AFFILIATEveFREE_LISTINGS_UCP_CHECKOUTyer alır. Bu değerler, ReportingContextEnum'dan alınır.eventTime: Etkinliğin oluşturulduğu zaman damgası. Etkinliklerin doğru şekilde sıralanmasını sağlamak için bu zaman damgasını kullanın.
Ürün durumu değişikliği bildirimlerini test etme
Geri çağırma uç noktanızın ürün durumu değişikliği mesajlarını doğru şekilde alıp almadığını, onaylayıp onaylamadığını ve kodunu çözüp çözmediğini test etmek için aşağıdaki örnek isteği kullanın:
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=="}}'Bu çağrıya yanıt olarak geri çağırma URI'niz kabul edilebilir bir HTTP durum kodu (ör. 200 OK) döndürmelidir. Kod çözme işlemi yapılan mesajda aşağıdaki içerik bulunur:
{
"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"
}