Ü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 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ı

  • oldValue ve newValue: Önceki ve güncellenmiş durumu temsil eder. Olası değerler: approved, pending, disapproved veya boş bir dize ('').
    • oldValue atlanırsa ürün yeni oluşturulur.
    • newValue atlanı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'dan SHOPPING_ADS, LOCAL_INVENTORY_ADS, YOUTUBE_SHOPPING, YOUTUBE_CHECKOUT, YOUTUBE_AFFILIATE ve FREE_LISTINGS_UCP_CHECKOUT yer 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"
}