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 Notifications mendukung notifikasi untuk:

  • Perubahan status produk: Menerima pemberitahuan real-time saat status persetujuan produk berubah (misalnya, saat produk tidak disetujui atau disetujui) di seluruh akun tertaut atau sub-akun 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 HTTP POST 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 Notifikasi menyediakan metode untuk membuat, mencantumkan, mengambil, memperbarui, dan menghapus konfigurasi notifikasi.

Membuat langganan

Pembuatan langganan khusus 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 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 Anda yang terdaftar. Notifikasi push tiba dalam amplop JSON dengan payload data berenkode base64:

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

Dekode string data untuk mengakses payload peristiwa JSON. Pengontrol Spring Boot contoh 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: