Integrasi Mobile•Bridge & Events

Protokol postMessage & Tema Tampilan

Komunikasi dua arah antara host native app dan QoinCash WebView berjalan melalui protokol standar **window.postMessage** dan JavaScript Bridge.

1. Pesan Masuk: Injeksi Signature & Palette (Native $\rightarrow$ WebView)

Sesaat setelah WebView selesai memuat URL root ({BASE_URL}/), native app mengirimkan payload JSON berikut:

Contoh Injeksi postMessage
const payload = {
  Signature: "eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00iLC...",
  Palette: "original" // Opsional
};

// Kirim ke window webview
window.postMessage(JSON.stringify(payload), "*");
Kamus Parameter Pesan Masuk
ParameterTipe DataStatusDeskripsi & Contoh
SignaturestringWajib
String token terenkripsi yang didapat dari API POST /api/init-linkage.
PalettestringOpsional
Tema warna antarmuka webview agar serasi dengan aplikasi partner. Default: 'original'.
Contoh: original | blue-ocean | red-lava | green-forest | dark-blue

Pilihan Palet Warna (Theming)

original

Kuning emas signature Qoin Cash.

blue-ocean

Biru laut cerah & profesional.

red-lava

Merah aksen berani & dinamis.

green-forest

Hijau natural segar & ramah lingkungan.

dark-blue

Deep Navy resmi Korlantas RI (Primary 700).

2. Pesan Keluar: Event Balasan (WebView $\rightarrow$ Native)

WebView akan mengirimkan pesan status balik ke host native app untuk menginformasikan progres transaksi pengguna:

Struktur Data Event Balasan
ParameterTipe DataStatusDeskripsi & Contoh
closebooleanOpsional
Indikator mutlak apakah native app harus menutup/dismiss WebView container.
Contoh: true
STATUSstringOpsional
Status keberhasilan alur.
Contoh: 'TRUE' (sukses) atau 'FALSE' (gagal/batal)
FORstringOpsional
Kategori fitur yang sedang berlangsung.
Contoh: 'ACTIVATE' | 'PAYMENT' | 'QRIS' | 'TRANSFER'
RECEIPT_NOstringOpsional
Nomor struk/referensi transaksi resmi yang diterbitkan Qoin.
Contoh: SSO240930123456ABC
codenumberOpsional
Kode status HTTP numerik jika terjadi penolakan atau error.
Contoh: 400, 401, 500
Aturan Penutupan Webview
Hanya tutup WebView ketika pesan mengandung properti close: true. Event tanpa properti tersebut hanya bersifat notifikasi status progres UI.

3. Permintaan Data dari Native: /native/message

Selain event hasil transaksi di atas, native dapat meminta data baca-saja (saldo, inquiry QRIS, dan daftar/inquiry e-wallet) lewat halaman WebView tanpa tampilan. Formatnya berbeda: permintaan berbentuk {"type","body"} dan balasan berbentuk {"type","code","message","data"}, tanpa properti close(native yang menutup WebView). Rinciannya ada di halaman Native Message.

Rute lama tetap ada
Halaman headless /native/balance tidak berubah. Ia membalas dengan type: "BALANCE" dan close: true. Rute baru /native/message memakai tipe GETBALANCE (dan type lain), tidak mengirim close, dan tidak membutuhkan Signature dari native.