Integrasi Mobile•Account Linkage

Alur 4 Langkah Account Linkage Webview

Account Linkage adalah proses menghubungkan identitas akun pengguna di aplikasi client dengan dompet digital QoinCash. Seluruh interaksi sensitif (TnC, OTP, PIN, dan Biometrik) ditangani seutuhnya di dalam antarmuka WebView QoinCash yang aman.

Prinsip Utama: Buka Selalu Root URL ("/")

Salah satu kesalahan paling sering terjadi adalah aplikasi client mencoba menebak halaman dengan membuka langsung /activate atau /qoincash. Hal ini tidak diperbolehkan.

Sistem Resolver Otomatis di Root ("/")
Aplikasi native client wajib selalu membuka alamat root: {BASE_URL_SEAMLESS}/. Halaman root memiliki modul resolver cerdas yang memeriksa sesi dan status akun pengguna secara real-time:
  • Pengguna Baru: Otomatis diarahkan ke alur Aktivasi & Pendaftaran (/activate).
  • Pengguna Lama (Sesi Kadaluarsa): Otomatis diarahkan ke konfirmasi PIN Re-autentikasi (/aktivasi/pin).
  • Pengguna Aktif: Otomatis langsung membuka antarmuka Dompet Digital (/qoincash).
  • Signature Tidak Ditemukan / Tidak Valid: Menampilkan layar penolakan akses terstandar (/not-allowed?code=400).

Rincian Siklus Hidup Integrasi (Lifecycle)

1Tahap 1: Pengambilan & Penyimpanan Signature

Aplikasi memanggil POST /api/init-linkage (disarankan lewat backend client S2S). Nilai string signature yang dikembalikan disimpan di local secure storage milik client. Nilai ini dipakai terus-menerus dan tidak boleh diganti selama pengguna tidak berganti perangkat fisik atau nomor telepon.

2Tahap 2: Memastikan Kesiapan Izin Geolocation GPS

Sebelum WebView dibuka, pastikan native app sudah meminta izin lokasi runtime ke pengguna dan GPS perangkat dalam keadaan aktif. Pasang WebChromeClient (Android) atau konfigurasi handler lokasi (iOS/Flutter) agar WebView tidak terblokir saat memanggil koordinat.

3Tahap 3: Peluncuran WebView & Injeksi postMessage

Muat WebView ke alamat {BASE_URL_SEAMLESS}/. Segera setelah event halaman selesai dimuat dipicu (misal onPageFinished), kirim payload JSON:window.postMessage(JSON.stringify({ Signature: "...", Palette: "original" }), "*");Lakukan pengiriman ulang sekali lagi setelah jeda ±500ms untuk menjamin listener di dalam webview sudah terdaftar.

4Tahap 4: Menangkap Sinyal Penutupan (Close Signal)

Native app hanya boleh menutup WebView saat menerima sinyal dengan parameter "close": true. Jika user berhasil aktivasi, tandai status lokal pengguna sebagai terhubung agar di masa mendatang tombol di native app langsung membuka dompet digital.