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:
const payload = {
Signature: "eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00iLC...",
Palette: "original" // Opsional
};
// Kirim ke window webview
window.postMessage(JSON.stringify(payload), "*");| Parameter | Tipe Data | Status | Deskripsi & Contoh |
|---|---|---|---|
| Signature | string | Wajib | String token terenkripsi yang didapat dari API POST /api/init-linkage. |
| Palette | string | Opsional | 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)
Kuning emas signature Qoin Cash.
Biru laut cerah & profesional.
Merah aksen berani & dinamis.
Hijau natural segar & ramah lingkungan.
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:
| Parameter | Tipe Data | Status | Deskripsi & Contoh |
|---|---|---|---|
| close | boolean | Opsional | Indikator mutlak apakah native app harus menutup/dismiss WebView container. Contoh: true |
| STATUS | string | Opsional | Status keberhasilan alur. Contoh: 'TRUE' (sukses) atau 'FALSE' (gagal/batal) |
| FOR | string | Opsional | Kategori fitur yang sedang berlangsung. Contoh: 'ACTIVATE' | 'PAYMENT' | 'QRIS' | 'TRANSFER' |
| RECEIPT_NO | string | Opsional | Nomor struk/referensi transaksi resmi yang diterbitkan Qoin. Contoh: SSO240930123456ABC |
| code | number | Opsional | Kode status HTTP numerik jika terjadi penolakan atau error. Contoh: 400, 401, 500 |
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.
/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.