Ürün durumu değişiklikleriyle ilgili push bildirimleri alma

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ı

  • oldValue ve newValue: Önceki ve güncellenen durumu gösterir. Olası değerler approved, pending, disapproved veya 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ında SHOPPING_ADS, LOCAL_INVENTORY_ADS, YOUTUBE_SHOPPING, YOUTUBE_CHECKOUT, YOUTUBE_AFFILIATE ve FREE_LISTINGS_UCP_CHECKOUT yer 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"
}