Langsung ke konten utama
SDK JavaScript Didit menyediakan cara terprogram untuk mengintegrasikan verifikasi ke aplikasi web Anda dengan kendali penuh atas pengalaman pengguna.

Fitur

  • API Sederhana - Pola singleton dengan metode yang mudah digunakan
  • Integrasi Fleksibel - Gunakan URL UniLink secara langsung atau buat sesi melalui backend
  • Responsif - Berfungsi di browser desktop dan seluler
  • Dapat Dikustomisasi - Opsi konfigurasi untuk gaya dan perilaku
  • Berbagai Format - Build dalam format ESM, CommonJS, dan UMD
  • Dukungan TypeScript - Definisi tipe lengkap disertakan
  • Mode Modal & Inline - Pilih antara overlay modal atau embedding inline
  • Callback Event - Event real-time untuk progres verifikasi (dimulai, langkah selesai, selesai)
  • Manajemen State - Amati state SDK untuk UI kustom

Instalasi

NPM/Yarn

CDN (UMD)

Rilis npm terbaru yang dipublikasikan adalah 0.5.1. 0.5.0 menambahkan DiditSdk.shared.submitEvent() (lihat Kirim event), dan 0.5.1 memungkinkan alur verifikasi yang di-hosting meminta ID pengguna dari dompet ID digital di dalam SDK, serta menetapkan peluncuran yang gagal ke status error dengan errorMessage-nya. 0.4.0 menambahkan opsi kamera yang sudah tersedia di SDK native, termasuk defaultLivenessCamera, yang membuka pengambilan wajah dengan kamera belakang (lihat Opsi kamera).

Periksa versi yang terpasang

Manajer paket Anda tetap menjadi acuan utama untuk rilis yang terpasang:
Anda juga dapat memeriksa ekspor runtime:
Mulai dari 0.3.1, ekspor ini dihasilkan dari versi paket di setiap format JavaScript (ESM, CommonJS, UMD, UMD yang diminifikasi) dan di deklarasi TypeScript, sehingga selalu sesuai dengan rilis yang terpasang. 0.3.0 dan sebelumnya melaporkan 0.2.1 dari ekspor ini, terlepas dari versi yang terpasang. Pada rilis tersebut, gunakan npm list atau lockfile Anda sebagai gantinya.

JavaScript Murni

ES Modules / TypeScript

Tag Skrip (UMD)


Contoh Framework

Contoh Web SDK

React, Angular, Svelte, Next.js, Nuxt, Vue, dan lainnya, dengan contoh dan dokumentasi untuk setiap framework.

Metode Integrasi

Ada dua cara untuk mengintegrasikan SDK: Gunakan URL UniLink alur kerja Anda langsung dari Didit Console. Tidak diperlukan backend.
Dapatkan URL UniLink Anda dari Didit Console → Alur Kerja Anda → Salin Tautan. session_id yang dihasilkan akan dikirimkan kepada Anda melalui sebuah event. Lihat referensi event di sini

Metode 2: Sesi backend (direkomendasikan untuk produksi)

Backend Anda membuat sesi melalui Didit API dan mengembalikan URL verifikasi yang di-hosting. Dengan cara ini, Anda memiliki kendali atas vendor_data, callback per sesi, dan metadata, serta dapat membuat sesi sebelum pengguna membuka frontend. Baca selengkapnya di referensi API Create Session. Backend (Node.js / Express)
Frontend
Kolom respons pembuatan sesi bernama url (lihat skema OpenAPI Create Session). Teruskan langsung ke startVerification({ url }).

Konfigurasi

Lihat definisi tipe TypeScript lengkap di bawah untuk antarmuka DiditSdkConfiguration.

Opsi kamera

Opsi kamera memerlukan @didit-protocol/sdk-web 0.4.0 atau yang lebih baru.
SDK web menyediakan empat opsi kamera yang sama seperti SDK native. Secara default, pengambilan dokumen membuka kamera belakang dan pengambilan wajah (liveness) membuka kamera depan (swafoto). Kedua langkah juga menyediakan tombol pergantian kamera di dalam pengambilan, pada perangkat yang memiliki lebih dari satu kamera. Atur defaultLivenessCamera: 'back' untuk membuka pengambilan wajah dengan kamera belakang, misalnya di kiosk atau saat operator memegang perangkat dan mengarahkannya ke orang yang sedang diverifikasi.
  • Nilai lensa yang diterima adalah 'front' dan 'back'. Nilai lain akan diabaikan, begitu juga flag tombol pergantian yang bukan boolean.
  • Jika perangkat tidak memiliki kamera yang diminta, perangkat akan tetap menggunakan kamera yang dimilikinya. Laptop yang diminta 'back' tetap menggunakan webcam-nya. Tombol pergantian disembunyikan pada perangkat berkamera tunggal, apa pun nilai flag-nya.
  • Opsi liveness berlaku untuk pemeriksaan liveness pasif. Liveness aktif tidak terpengaruh.
  • SDK meneruskan opsi ke halaman verifikasi sebagai parameter kueri pada URL verifikasi: document_camera, liveness_camera, document_camera_switch, dan liveness_camera_switch. Jika Anda membuka URL verifikasi secara langsung, bukan melalui SDK, atur parameter tersebut sendiri: tambahkan ?liveness_camera=back ke URL tanpa string kueri, &liveness_camera=back ke URL yang sudah memiliki parameter, atau atur dengan API URL agar kedua kasus tertangani:

Kirim event

DiditSdk.shared.submitEvent() memasukkan event pengguna akhir (pendaftaran, login, login gagal, logout, reset kata sandi, MFA, perubahan perangkat) ke antrean untuk pemantauan event Didit. Backend Anda membuat token pemantauan untuk orang tersebut, lalu SDK mengirim event dalam batch beserta sidik jari perangkat. Jangan pernah mengirim kunci API ke peramban.
Lihat pengiriman event SDK untuk token, kolom event, dan perilaku pengirimannya.

Ukuran dan pengguliran modal

Perilaku ukuran di bawah ini memerlukan 0.3.1 atau yang lebih baru. 0.3.0 dan versi sebelumnya dapat memotong alur verifikasi pada viewport desktop dan lanskap yang pendek.
Mode modal menggunakan lebar maksimum 500px dan tinggi maksimum 700px. Pada viewport desktop dan lanskap yang lebih pendek, iframe mengikuti 90% dari viewport yang terlihat. Alur verifikasi digulir di dalam iframe, sehingga setiap langkah tetap dapat dijangkau sementara halaman di belakang modal tetap terkunci. SDK menggunakan dvh pada peramban yang mendukung unit viewport dinamis dan beralih ke vh pada peramban lama yang masih didukung. Pada lebar 540px atau kurang, modal memenuhi viewport yang terlihat. Tombol tutup dan konfirmasi keluar tetap berada di dalam modal.

Alur verifikasi yang didesain ulang

Semua isi bagian ini berlaku mulai versi 0.5.0, yang belum dirilis. Sampai Anda memperbarui ke versi tersebut, modal tetap menggunakan ukuran yang dijelaskan di atas.
Mulai versi 0.5.0, modal menyesuaikan ukurannya dengan alur verifikasi yang didesain ulang setelah halaman melaporkan tata letaknya melalui pesan didit:layout:
  • Ukuran awal, mulai versi 0.5.0: sampai halaman melaporkan tata letaknya, dan untuk halaman yang tidak pernah melaporkannya, modal tetap menggunakan ukuran maksimum yang ada, yaitu 500px x 700px. Ukuran ini tetap pas di jendela yang pendek dan tetap layar penuh pada 540px ke bawah.
  • Tombol tutup, mulai versi 0.5.0: lingkaran berukuran 44px di atas bilah atas halaman. Tombol ini mengikuti tema terang atau gelap pada halaman dan berpindah ke kiri pada bahasa yang ditulis dari kanan ke kiri.
  • Mode embedded, mulai versi 0.5.0: tetap memenuhi elemen host-nya, seperti sebelumnya (lihat Mode embedded).
  • URL verifikasi, mulai versi 0.5.0: SDK menambahkan sdk_presentation (modal atau embedded) dan, dalam modal, sdk_close_button (true atau false, mengikuti showCloseButton), sehingga halaman mengetahui cara halaman tersebut ditampilkan.
  • Event, mulai versi 0.5.0: SDK menangani didit:layout sendiri dan tidak meneruskannya ke onEvent.
Tidak ada yang perlu dikonfigurasi, dan setiap opsi yang ada tetap berfungsi.

Mode embedded

Mode embedded tidak menggunakan batas 500px x 700px pada modal. SDK mengisi area konten elemen host, sehingga berikan elemen tersebut tinggi eksplisit atau tinggi yang dapat ditentukan dengan cara lain:
Jika host tidak memiliki tinggi yang dapat ditentukan, iframe embedded juga tidak memiliki tinggi yang dapat dipakai. Ubah ukuran host setiap kali tata letak Anda berubah; SDK akan terus mengisinya secara otomatis.

Hasil Verifikasi

SDK mengembalikan tiga jenis hasil:

Selesai

Alur verifikasi selesai (disetujui, tertunda, atau ditolak).
Tipe TypeScript mendeklarasikan 'Approved' | 'Pending' | 'Declined', tetapi nilainya diteruskan dari status sesi alur yang di-hosting, sehingga Anda juga dapat menerima status lain, seperti In Review. Pending adalah nilai cadangan SDK saat alur tidak melaporkan status apa pun. Perlakukan status sebagai petunjuk, dan andalkan webhook untuk keputusan final.

Dibatalkan

Pengguna menutup modal verifikasi. session disertakan jika sessionId sudah diketahui sebelumnya (nilainya bisa undefined jika pengguna membatalkan sebelum iframe melaporkannya).

Gagal

Terjadi error selama verifikasi.

Pengelolaan State

Anda dapat memantau state SDK untuk UI kustom:

Referensi API

DiditSdk.shared

Instans SDK singleton.

Metode

Properti

Callback


Event Terperinci

Lacak progres verifikasi dengan callback onEvent:

Referensi Event

Koneksi terputus

Jika koneksi pengguna terputus, halaman verifikasi menutupi alur dengan layar “Tidak ada koneksi internet”, alih-alih membiarkan langkah tetap dimuat. Halaman terus memeriksa di latar belakang dan menutup layar itu dengan sendirinya begitu Didit dapat dijangkau kembali, lalu pengguna melanjutkan dari langkah yang sedang mereka jalani. Di dalam modal atau iframe SDK, layar tersebut juga menampilkan Keluar dari Verifikasi: halaman kemudian mengirim didit:error dengan error: "network_error", diikuti didit:cancelled, dan SDK menutup modal serta memanggil onComplete dengan type: "cancelled". Mulai versi 0.5.0, pesan didit:layout dari halaman mengatur ukuran modal dan tidak diteruskan ke onEvent. Jika Anda menanamkan halaman dengan iframe sendiri, lihat Ukur iframe dari didit:layout.

Nilai Langkah

Kolom step dapat berisi salah satu nilai berikut:
  • document_selection - Pemilihan jenis dokumen
  • document_front - Sisi depan dokumen
  • document_back - Sisi belakang dokumen
  • face - Verifikasi wajah/Deteksi Liveness
  • email - Verifikasi email
  • phone - Verifikasi telepon
  • poa - Bukti alamat
  • questionnaire - Langkah kuesioner

Nilai Saluran

Kolom channel pada code_sent dapat berisi:
  • email - Kode dikirim melalui email
  • sms - Kode dikirim melalui SMS
  • whatsapp - Kode dikirim melalui WhatsApp

Ukuran Kode

Kolom codeSize pada code_sent menunjukkan panjang kode OTP (misalnya 4 atau 6 digit).

Tipe TypeScript

Terakhir diubah pada 7 November 2026