Hesap verilerinizde yapılan değişikliklerle ilgili push bildirimleri alın

Değişikliklerle ilgili push bildirimleri almak için Merchant Notifications API'yi kullanabilirsiniz büyük önem taşır. Örneğin, ürün durumu değişikliğine abone olursanız bildirimleri sayesinde, bir ürün onaylanmadığında gerçek zamanlı olarak bildirim alabilirsiniz. Şunlardan herhangi biri için bildirimlere abone olabilirsiniz: alt hesaplar veya diğer bağlı hesaplar hesaplar.

Bu kılavuzda, ürün durumuyla ilgili bildirimleri nasıl yöneteceğinize dair örnekler sunulmaktadır. anlamına gelir. Diğer etkinliklerle ilgili bildirimleri yönetmek için aşağıdaki örneklerden yararlanabilirsiniz: isteklerinizdeki registeredEvent alanının değerini değiştirin. Tam fiyat için hakkında daha fazla bilgi edinmek için Satıcı Bildirimleri API'sini referans.

Abone ol

Bildirim almak için callBackUri abonesi olmanız gerekir. Geri çağırma URI'nız aşağıdaki şartları karşılamanız gerekir:

  • Geçerli bir SSL sertifikasına sahip, herkesin erişebileceği bir HTTPS adresi olmalıdır. bir sertifika yetkilisi tarafından imzalanır.
  • Content-Type üstbilgisi vePOST application/json değeri.
  • Şu yanıt kodlarından birini döndürerek, bildirim alındı.
    • 102
    • 200
    • 201
    • 202
    • 204

Birden çok abonelik için aynı geri çağırma URI'sini kullanabilirsiniz. Önerilerimiz her gelişmiş geri çağırma URI'si için hesap, etkinlik türü başına Tek bir URI'ye aktarma isteklerinin yükünü en aza indirme.

Aşağıda, ürün durumu değişiklikleriyle ilgili bildirimlere abone olmayla ilgili örnek bir istek verilmiştir. ekleyebilirsiniz. Şu olması gereken hesabın satıcı kimliğini kullanın: bildirimleri istek URL'sinde merchantId olarak alır ve olarak ( İstek gövdesinde targetMerchantId. Hesabınız bağımsız bir hesapsa hiçbir bağlı hesabı yoksa ve sahip değilseniz her iki yerde de kendi satıcı kimliğinizi kullanın.

POST https://merchantapi.googleapis.com/notifications/v1beta/accounts/merchantId/notificationsubscriptions/
{
  "registeredEvent": "PRODUCT_STATUS_CHANGE",
  "targetAccount": "accounts/targetMerchantId",
  "callBackUri": "https://example.com"
}

Başarılı aramalar, Sizin için name abonelik (abonelik kimliği dahil):

{
  "name":"accounts/merchantId/notificationsubscriptions/subscriptionId",
  "registeredEvent": "PRODUCT_STATUS_CHANGE",
  "targetAccount": "accounts/targetMerchantId",
  "callBackUri": "https://example.com"
}

Bu name aboneliğini GET ve DELETE adet abonelik için kullanabilirsiniz.

Tüm ürün veya hizmetlerinizle ilgili ürün durumu değişiklikleriyle ilgili bildirimlere abone olabilirsiniz. yerine "allManagedAccounts": true ekleyerek bağlı hesaplar İsteğinizde targetAccount:

POST https://merchantapi.googleapis.com/notifications/v1beta/accounts/merchantId/notificationsubscriptions/

{
  "registeredEvent": "PRODUCT_STATUS_CHANGE",
  "allManagedAccounts": true,
  "callBackUri": "https://example.com"
}

Mevcut bir aboneliği güncellemek için PATCH öğesini bir update_mask ile birlikte kullanarak belirtin güncellemek istediğiniz alanları ve JSON gövdesindeki yeni değerleri girin:

PATCH /notifications/v1beta/accounts/merchantId/notificationsubscriptions/subscriptionId?update_mask=callBackUri

{
  "​callBackUri": "https://my-own-personal-domain.com"
}

Bildirimlerin kodunu çöz

Abonelik oluşturduktan sonra Şu biçimdeki callBackUri:

{"message":{"data":"{base64_encoded_string}"}}

Bildirim verileri kodlanır. Verilerin kodunu okunabilir bir metin haline getirebilirsiniz biçimi olacaktır. Burada örnek bir ilkbahar başlatma denetleyicisini görebilirsiniz. kodlanmış verileri işlemek için kullanabileceğiniz bir reklam birimi örneği:

@RestController
public class ExampleController {
@RequestMapping(value = "/push",
  method = RequestMethod.POST,
  consumes = {"application/json"},
  produces = {"text/plain"})
  @ResponseStatus(HttpStatus.OK)
  public void doStuff(@RequestBody String message) {
        //wrapped message
        JSONObject jsonObject = new JSONObject(message);
        JSONObject jsonMessage = jsonObject.getJSONObject("message");
        message = jsonMessage.getString("data");
        byte[] decodedBytes = Base64.getDecoder().decode(message);
        String decodedMessage = new String(decodedBytes);
        // Implement your business logic here
  }
}

Kodu çözülmüş bir base64_encoded_string örneğini aşağıda bulabilirsiniz:

"account": "accounts/targetMerchantId"
"managing_account": "accounts/merchantId"
"resource_type": PRODUCT
"attribute": STATUS
"changes": {
  "old_value": "eligible"
  "new_value": "disapproved"
  "region_code": "GE"
  "reporting_context": SHOPPING_ADS
},
"changes" {
  "old_value": "eligible"
  "new_value": "disapproved"
  "region_code": "JP"
  "reporting_context": SHOPPING_ADS
},
changes {
  "old_value": "eligible"
  "new_value": "disapproved"
  "region_code": "US"
  "reporting_context": SHOPPING_ADS
}
resource_id: "ONLINE~en~US~1234"
resource: "accounts/targetMerchantId/products/ONLINE~en~US~1234"

Bildirimde old_value alanı yoksa yeni ürün hesabınıza eklendi. new_value alanı yoksa ürün silinmiştir hesabınızdan kaldırmanız gerekir.

reporting_context alanı yalnızca ReportingContextEnum sıralama değerinden (SHOPPING_ADS, LOCAL_INVENTORY_ADS, YOUTUBE_SHOPPING) desteklenir.

Uygulamanızı test etme

Aşağıda, geri çağırma URI'nizi test etmek ve kodu çözmek için kullanabileceğiniz örnek bir bildirim verilmiştir:

curl --header "Content-Type: application/json" --header "Accept: text/plain" --request POST --data '{"message":{"data":
"ImFjY291bnQiOiAiYWNjb3VudHMvMTIzNCIKIm1hbmFnaW5nX2FjY291bnQiOiAiYWNjb3VudHMvNTY3OCIKInJlc291cmNlX3R5cGUiOiBQUk9EVUNUCiJhdHRyaWJ1dGUiOiBTVEFUVVMKImNoYW5nZXMiOiB7CiAgIm9sZF92YWx1ZSI6ICJlbGlnaWJsZSIKICAicmVnaW9uX2NvZGUiOiAiVVMiCiAgInJlcG9ydGluZ19jb250ZXh0IjogU0hPUFBJTkdfQURTCn0KInJlc291cmNlX2lkIjogIk9OTElORX5lbn5VU34wMDAwMDAwMDAwMDAiCiJyZXNvdXJjZSI6ICJhY2NvdW50cy8xMjM0L3Byb2R1Y3RzL09OTElORX5lbn5VU34wMDAwMDAwMDAwMDAi"}}' https://{callBackUri}

Bu çağrıya yanıt olarak, geri çağırma URI'niz başarılı bir yanıt döndürecektir girin. Kodu çözülmüş mesaj aşağıdaki değeri içermelidir:

"account": "accounts/1234"
"managing_account": "accounts/5678"
"resource_type": PRODUCT
"attribute": STATUS
"changes": {
  "old_value": "eligible"
  "region_code": "US"
  "reporting_context": SHOPPING_ADS
}
"resource_id": "ONLINE~en~US~000000000000"
"resource": "accounts/1234/products/ONLINE~en~US~000000000000"