Anda dapat berlangganan notifikasi PRODUCT_STATUS_CHANGE untuk menerima pemberitahuan real-time setiap kali status persetujuan produk berubah di akun Merchant Center Anda. Misalnya, Anda dapat mendeteksi saat produk ditolak sehingga Anda dapat memperbaiki potensi masalah kualitas data.
Sebelum memulai, pastikan URI callback Anda dikonfigurasi sesuai dengan persyaratan yang dijelaskan dalam Ringkasan sub-API Notifikasi.
Berlangganan perubahan status produk
Untuk berlangganan perubahan status produk, kirim permintaan POST ke resource
notificationsubscriptions dengan registeredEvent ditetapkan ke
PRODUCT_STATUS_CHANGE.
Berlangganan untuk akun target tertentu
Contoh permintaan berikut berlangganan perubahan status produk untuk akun penjual tertentu:
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"targetAccount": "accounts/{TARGETACCOUNT_ID}",
"callBackUri": "https://example.com/callback"
}
Ganti kode berikut:
- ACCOUNT_ID: ID akun yang memiliki langganan dan menerima notifikasi.
- TARGETACCOUNT_ID: ID akun yang ingin Anda terima notifikasinya.
Jika akun Merchant Center Anda adalah akun mandiri tanpa akun tertaut, gunakan ID akun Anda sendiri untuk kedua variabel.
Berlangganan untuk semua akun terkelola
Jika Anda mengelola beberapa akun (seperti akun tingkat lanjut dengan sub-akun), Anda dapat berlangganan perubahan status produk di semua akun yang dikelola dengan menetapkan allManagedAccounts: true:
POST https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/
{
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
Panggilan yang berhasil akan menampilkan ID
name
untuk langganan Anda, termasuk ID langganan unik:
{
"name":"accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}",
"registeredEvent": "PRODUCT_STATUS_CHANGE",
"allManagedAccounts": true,
"callBackUri": "https://example.com/callback"
}
Mendekode payload perubahan status produk
Saat perubahan status produk terjadi, URI callback Anda akan menerima pesan yang dienkode base64. Saat didekode, payload sesuai dengan format
ProductStatusChangeMessage:
{
"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"
}
Kolom dan aturan payload
oldValuedannewValue: Mewakili status sebelumnya dan yang diperbarui. Nilai yang mungkin adalahapproved,pending,disapproved, atau string kosong ('').- Jika
oldValuetidak ada, produk baru dibuat. - Jika
newValuetidak ada, produk telah dihapus.
- Jika
expirationTime: Menunjukkan kapan penawaran produk berakhir. Kolom ini dihilangkan saat produk dihapus.reportingContext: Platform iklan atau listingan gratis tempat status berubah. Nilai yang didukung mencakupSHOPPING_ADS,LOCAL_INVENTORY_ADS,YOUTUBE_SHOPPING,YOUTUBE_CHECKOUT,YOUTUBE_AFFILIATE, danFREE_LISTINGS_UCP_CHECKOUTdari ReportingContextEnum.eventTime: Stempel waktu saat peristiwa dibuat. Gunakan stempel waktu ini untuk memastikan urutan peristiwa yang tepat.
Menguji notifikasi perubahan status produk
Gunakan contoh permintaan berikut untuk menguji apakah endpoint callback Anda menerima, mengonfirmasi, dan mendekode pesan perubahan status produk dengan benar:
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=="}}'Sebagai respons terhadap panggilan ini, URI callback Anda harus menampilkan kode status HTTP yang dapat diterima (seperti 200 OK). Pesan yang didekode memiliki konten berikut:
{
"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"
}