Anda dapat menggunakan Merchant Notifications API untuk mendapatkan notifikasi push terkait perubahan data akun. Misalnya, jika berlangganan notifikasi perubahan status produk, Anda dapat diberi tahu secara real time saat produk ditolak. Anda dapat berlangganan notifikasi untuk sub-akun atau akun tertaut lainnya.
Panduan ini memberikan contoh cara mengelola notifikasi untuk perubahan status
produk. Anda dapat menggunakan contoh ini untuk mengelola notifikasi peristiwa lain dengan mengubah nilai kolom registeredEvent
dalam permintaan. Untuk mengetahui daftar lengkap jenis peristiwa, baca referensi Merchant Notifications API.
Subscribe
Untuk menerima notifikasi, Anda memerlukan callBackUri
. URI callback Anda harus
memenuhi persyaratan berikut:
- Harus berupa alamat HTTPS yang dapat diakses secara publik dengan sertifikat SSL valid, yang ditandatangani oleh certificate authority.
- Harus menerima permintaan
POST
HTTP dengan headerContent-Type
dan nilaiapplication/json
. - Harus menampilkan salah satu kode respons berikut untuk mengonfirmasi bahwa
notifikasi telah diterima.
102
200
201
202
204
Anda dapat menggunakan URI callback yang sama untuk beberapa langganan. Sebaiknya gunakan URI callback unik per akun lanjutan, per jenis peristiwa untuk meminimalkan pemuatan permintaan push ke URI tunggal.
Berikut adalah contoh permintaan untuk berlangganan notifikasi perubahan status produk
untuk akun penjual tertentu. Gunakan ID penjual untuk akun yang akan menerima notifikasi sebagai merchantId
di URL permintaan, dan ID penjual akun yang akan menerima notifikasi sebagai targetMerchantId
dalam isi permintaan. Jika akun Anda adalah akun mandiri
tanpa akun tertaut, dan Anda ingin menerima notifikasi untuk
akun Anda sendiri, gunakan ID penjual Anda di kedua tempat.
POST https://merchantapi.googleapis.com/notifications/v1beta/accounts/merchantId/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"targetAccount": "accounts/targetMerchantId",
"callBackUri": "https://example.com"
}
Panggilan yang berhasil akan menampilkan
name
untuk
langganan Anda, termasuk ID langganan:
{
"name":"accounts/merchantId/notificationsubscriptions/subscriptionId",
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"targetAccount": "accounts/targetMerchantId",
"callBackUri": "https://example.com"
}
Anda dapat menggunakan name
ini untuk GET
dan DELETE
langganan perorangan.
Anda dapat berlangganan notifikasi tentang perubahan status produk untuk semua akun tertaut dengan menyertakan "allManagedAccounts": true
, bukan targetAccount
, dalam permintaan Anda:
POST https://merchantapi.googleapis.com/notifications/v1beta/accounts/merchantId/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com"
}
Untuk memperbarui langganan yang sudah ada, gunakan PATCH
dengan update_mask
untuk menentukan
kolom yang ingin Anda perbarui, dan nilai baru dalam isi JSON:
PATCH /notifications/v1beta/accounts/merchantId/notificationsubscriptions/subscriptionId?update_mask=callBackUri
{
"callBackUri": "https://my-own-personal-domain.com"
}
Dekode notifikasi
Setelah membuat langganan, Anda akan menerima notifikasi ke callBackUri
yang ditentukan dalam format berikut:
{"message":{"data":"{base64_encoded_string}"}}
Data notifikasi dienkode. Anda dapat mendekode data ke format teks yang dapat dibaca untuk digunakan dalam penerapan. Berikut adalah contoh pengontrol booting pegas yang mungkin Anda gunakan untuk memproses data yang dienkode:
@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
}
}
Berikut adalah contoh base64_encoded_string
yang telah didekode:
"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"
Menguji implementasi Anda
Berikut adalah contoh notifikasi yang dapat Anda gunakan untuk menguji URI callback dan decoding:
curl --header "Content-Type: application/json" --header "Accept: text/plain" --request POST --data '{"message":{"data":
"ImFjY291bnQiOiAiYWNjb3VudHMvMTIzNCIKIm1hbmFnaW5nX2FjY291bnQiOiAiYWNjb3VudHMvNTY3OCIKInJlc291cmNlX3R5cGUiOiBQUk9EVUNUCiJhdHRyaWJ1dGUiOiBTVEFUVVMKImNoYW5nZXMiOiB7CiAgIm9sZF92YWx1ZSI6ICJlbGlnaWJsZSIKICAicmVnaW9uX2NvZGUiOiAiVVMiCiAgInJlcG9ydGluZ19jb250ZXh0IjogU0hPUFBJTkdfQURTCn0KInJlc291cmNlX2lkIjogIk9OTElORX5lbn5VU34wMDAwMDAwMDAwMDAiCiJyZXNvdXJjZSI6ICJhY2NvdW50cy8xMjM0L3Byb2R1Y3RzL09OTElORX5lbn5VU34wMDAwMDAwMDAwMDAi"}}' https://{callBackUri}
Sebagai respons terhadap panggilan ini, URI callback Anda akan menampilkan kode respons yang berhasil. Pesan yang didekode harus memiliki nilai berikut:
"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"