Ringkasan sub-API Notifikasi

Anda dapat menggunakan sub-API Notifikasi untuk menerima notifikasi push saat data berubah di akun Merchant Center Anda. Daripada melakukan polling API secara berkala untuk mendeteksi perubahan, Anda dapat berlangganan feed peristiwa real-time yang dikirim langsung ke endpoint HTTPS yang Anda konfigurasi.

Sub-API Notifikasi mendukung notifikasi untuk:

  • Perubahan status produk: Terima pemberitahuan real-time saat status persetujuan produk berubah (misalnya, saat produk menjadi tidak disetujui atau disetujui) di salah satu akun atau sub-akun tertaut Anda.
  • Perubahan layanan akun: Menerima pemberitahuan real-time saat resource AccountService dibuat, diperbarui, atau dihapus (seperti saat hubungan layanan akun dibuat, diubah, atau dihapus).

Prasyarat & penyiapan URI callback

Untuk menerima notifikasi push, Anda harus memberikan 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 yang diakui.
  • Harus menerima permintaan POST HTTP dengan header Content-Type yang ditetapkan ke application/json.
  • Harus menampilkan salah satu kode status HTTP berikut untuk mengonfirmasi bahwa notifikasi telah diterima:

    • 102
    • 200
    • 201
    • 202
    • 204

Anda dapat menggunakan URI callback yang sama untuk beberapa langganan. Untuk meminimalkan beban pada satu endpoint, gunakan URI callback unik per akun tingkat lanjut dan jenis peristiwa.

Kelola langganan

Sub-API Notifications menyediakan metode untuk membuat, mencantumkan, mengambil, memperbarui, dan menghapus konfigurasi notifikasi.

Membuat langganan

Pembuatan langganan bersifat spesifik untuk jenis peristiwa yang ingin Anda terima. Setiap jenis peristiwa memerlukan kolom konfigurasi yang berbeda dan memberikan struktur payload yang berbeda.

Untuk mempelajari cara membuat langganan dan melihat contoh permintaan untuk setiap jenis peristiwa, lihat panduan masing-masing:

Mencantumkan langganan

Untuk mencantumkan semua langganan notifikasi untuk sebuah akun, kirim permintaan GET ke koleksi notificationsubscriptions:

GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions

Mengambil langganan

Untuk mendapatkan detail langganan tertentu, gunakan nama resource langganan:

GET https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}

Memperbarui langganan

Untuk memperbarui URI callback untuk langganan yang ada, kirim permintaan PATCH dengan update_mask yang menentukan kolom yang akan diperbarui:

PATCH https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}?update_mask=callBackUri
{
  "callBackUri": "https://example.com/updated-callback"
}

Menghapus langganan

Untuk berhenti menerima notifikasi, hapus langganan:

DELETE https://merchantapi.googleapis.com/notifications/v1/accounts/{ACCOUNT_ID}/notificationsubscriptions/{SUBSCRIPTION_ID}

Mendekode notifikasi

Saat peristiwa terjadi, Google akan mengirimkan notifikasi ke callBackUri terdaftar Anda. Notifikasi push tiba dalam amplop JSON dengan payload data berenkode base64:

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

Dekode string data untuk mengakses payload peristiwa JSON. Contoh pengontrol Spring Boot berikut menunjukkan cara menerima dan mendekode notifikasi push:

@RestController
public class ExampleController {
@RequestMapping(value = "/push",
  method = RequestMethod.POST,
  consumes = {"application/json"},
  produces = {"text/plain"})
  @ResponseStatus(HttpStatus.OK)
  public void handleNotification(@RequestBody String message) {
        JSONObject jsonObject = new JSONObject(message);
        JSONObject jsonMessage = jsonObject.getJSONObject("message");
        String encodedData = jsonMessage.getString("data");
        byte[] decodedBytes = Base64.getDecoder().decode(encodedData);
        String decodedPayload = new String(decodedBytes);
        // Process decodedPayload according to the registered event type
  }
}

Langkah berikutnya

Untuk mengonfigurasi langganan dan menangani payload yang didekode untuk peristiwa tertentu, lihat: