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 ne zaman onaylanmadığını tespit ederek olası veri kalitesi sorunlarını düzeltebilirsiniz.
Başlamadan önce, geri çağırma URI'nizin Notifications alt API'sine genel bakış bölümünde açıklanan şartlara 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 notificationsubscriptions kaynağına registeredEvent, PRODUCT_STATUS_CHANGE olarak ayarlanmış bir POST isteği gönderin.
Belirli bir hedef hesaba abone olma
Aşağıdaki örnek istek, belirli bir satıcı hesabındaki ü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: 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 yönetiyorsanız (ör. alt hesapları olan gelişmiş bir hesap) 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, aboneliğiniz için benzersiz bir abonelik kimliği de dahil olmak üzere bir name tanımlayıcısı 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üklerinin kodunu çözme
Ürün durumu değiştiğinde geri çağırma URI'niz base64 ile kodlanmış bir mesaj alır. Kodu çözüldüğünde yük, ProductStatusChangeMessage biçimine uyar:
{
"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üncellenmiş durumu temsil eder. Olası değerler:approved,pending,disapprovedveya boş bir dize ('').oldValueatlanırsa ürün yeni oluşturulur.newValueatlanırsa ürün silinmiştir.
expirationTime: Ürün teklifinin süresinin ne zaman dolacağını belirtir. Bir ürün silindiğinde bu alan atlanır.reportingContext: Durumun değiştiği reklam veya ücretsiz listeleme yüzeyi. Desteklenen değerler arasında ReportingContextEnum'danSHOPPING_ADS,LOCAL_INVENTORY_ADS,YOUTUBE_SHOPPING,YOUTUBE_CHECKOUT,YOUTUBE_AFFILIATEveFREE_LISTINGS_UCP_CHECKOUTyer alır.eventTime: Etkinliğin oluşturulduğu zaman damgası. Etkinliklerin doğru şekilde sıralanması 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. Kodu çözülen mesaj aşağıdaki içeriğe sahiptir:
{
"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"
}