Skip to content

Tổng quan Web SDK ​

eKYC Web SDK là một bundle TypeScript chạy luồng chụp ảnh, kiểm tra chất lượng và xác minh ngay trên trình duyệt. Nó quét mặt trước và mặt sau NID, mã QR, và khuôn mặt của người dùng, sau đó xác minh chúng với API. Phiên bản hiện tại 1.3.20.

Nền tảng ​

Thông tinMô tả
Trình duyệtChạy trên trình duyệt hiện đại và bên trong WebView. Yêu cầu HTTPS và quyền camera.
WebViewTrên WebView của iOS, bật chế độ phát media inline — allowsInlineMediaPlayback trong Flutter và React Native.
Node Engine>= 20 để build bundle.

Dependency khi build ​

Thông tinMô tả
@tensorflow/tfjs-core 4.20.0Các toán tử và cấu trúc dữ liệu cốt lõi.
@tensorflow/tfjs-backend-cpu 4.20.0Chạy model trên CPU của thiết bị.
@tensorflow/tfjs-tflite 0.0.1-alpha.8Chạy model TensorFlow Lite trong JavaScript.
@vladmandic/human 3.2.2Nhận diện khuôn mặt và phân tích đặc điểm khuôn mặt.
@types/w3c-image-capture 1.0.10Kiểu dữ liệu cho W3C Image Capture API.
javascript-obfuscator 4.1.1Làm rối bundle đã build.
esbuild 0.24.0Bundler và compiler.

SDK làm gì cho bạn ​

scanStart chạy một pipeline thay vì một thao tác đơn lẻ, giống cách takeNID và takeFaces của Mobile SDK hoạt động.

Thông tinMô tả
scanStart(['front','back'])Chụp thẻ → tải lên → kiểm tra sanity → trích xuất thông tin thẻ.
scanStart(['face'])Chụp selfie → tải lên → kiểm tra sanity khuôn mặt → kiểm tra liveness.
scanStart(['qrcode'])Quét và giải mã mã QR trên thẻ.

Kiểm tra chất lượng chạy ngay trên thiết bị trước khi tải lên, nên người dùng thấy cảnh báo ảnh mờ ngay lập tức thay vì sau một vòng round trip mạng.

API dựa trên class (CakeEkycSDK) cũng expose các bước riêng lẻ — scanNID, scanFace, verifyNID, verifyFaces, verifyPair, verifyFaceAuthentication — khi bạn cần tự điều khiển chúng.

WARNING

Đối tượng kết quả của SDK chỉ dùng để điều khiển giao diện. Quyết định onboarding phải dựa trên kết quả backend của bạn lấy từ eKYC server (hoặc trên response mà backend đã xác minh X-Signature) — không bao giờ dựa trên verdict do ứng dụng hay trình duyệt báo về, vì client bị chỉnh sửa có thể thay đổi chúng.

Cấu hình chung ​

Tham sốKiểuBắt buộcMặc địnhMô tả
baseUrlstringCó—Base URL cho các request API.
tokenstringCó—Authentication token. Lấy từ backend của bạn tại thời điểm chạy.
resourcePathstringKhông—Đường dẫn đến tài nguyên SDK.
headersRecord<string, string>Không—Header HTTP bổ sung.

WARNING

token là một thông tin xác thực riêng cho từng tenant. Hãy lấy nó từ backend của bạn — không bao giờ hardcode trong trang hay commit vào source. Bản thân Access Key không bao giờ được phép đến trình duyệt.

Hành trình ​

Luồng chuẩn chạy từ mặt trước đến mặt sau rồi đến khuôn mặt, với một bước xem lại sau mỗi lần chụp:

text
Bắt đầu
  → Quét mặt trước NID → Xem lại mặt trước NID
  → Quét mặt sau NID    → Xem lại mặt sau NID
  → Xác minh (Mặt trước + Mặt sau)
  → Quét khuôn mặt
  → Xác minh (Mặt trước + Mặt sau + Khuôn mặt)
Kết thúc
Thông tinMô tả
Quét mặt trước NIDChụp mặt trước của thẻ CCCD.
Xem lại mặt trước NIDHiển thị ảnh đã chụp cho người dùng xem lại.
Quét mặt sau NIDChụp mặt sau.
Xem lại mặt sau NIDHiển thị ảnh đã chụp cho người dùng xem lại.
Xác minh (Mặt trước + Mặt sau)Kiểm tra mặt trước và mặt sau nhất quán và hợp lệ.
Quét khuôn mặtChụp khuôn mặt của người dùng.
Xác minh (Mặt trước + Mặt sau + Khuôn mặt)So sánh khuôn mặt với ảnh và dữ liệu trên thẻ.

Đóng gói ​

Bản build được đóng gói bằng esbuild, sau đó làm rối và loại bỏ các lệnh gọi console.

javascript
function createBuildSettings(options) {
  return {
    entryPoints: ['./demo/adapter.ts'],
    outfile: 'dist/adapter.js',
    sourcemap: false,
    bundle: true,
    plugins: [
      esbuildPluginTsc({ force: false }),
      ObfuscatorPlugin({
        compact: true,
        controlFlowFlattening: true,
        filter: [],
      }),
    ],
    ...options,
  }
}

const settings = createBuildSettings({
  minify: true,
  minifyWhitespace: true,
  minifyIdentifiers: true,
  minifySyntax: true,
  treeShaking: true,
  drop: ['console'],
  ignoreAnnotations: true,
})

await esbuild.build(settings)

Mã lỗi của SDK ​

Do chính SDK phát sinh, tách biệt với mã lỗi API dạng số. Các giá trị khớp với Mobile SDK.

TrườngKiểuMô tả
60000NID_SANITY_FAILEDKiểm tra sanity của NID thất bại.
60001NID_TAMPERING_FAILEDPhát hiện giả mạo của NID thất bại.
60002FACE_SANITY_FAILEDKiểm tra sanity khuôn mặt thất bại.
60003FACE_LIVENESS_FAILEDKiểm tra liveness khuôn mặt thất bại.

Quét QR có mã riêng:

TrườngKiểuMô tả
DOP-675_001Scan timeout"Hết thời gian quét mã. Vui lòng thử lại."
DOP-675_002Scan error"Không thể quét được mã QR, vui lòng thử lại!"

Khác với Mobile SDK, Web SDK không có dải mã 40000–40003 — timeout, hủy bỏ và lỗi cấp quyền xuất hiện dưới dạng exception được ném ra hoặc dưới dạng sdkError trên response.

API được sử dụng ​

Thông tinMô tả
Tải ảnh lênMọi ảnh đã chụp đều được tải lên trước khi bất kỳ kiểm tra nào chạy.
Xác minh ID Card SanityKiểm tra tính xác thực và hợp lệ của thẻ.
Đọc thông tin thẻ IDTrích xuất OCR, MRZ và QR.
Xác minh sanity khuôn mặt · Xác minh liveness khuôn mặtChất lượng và liveness của selfie.
So sánh khuôn mặtSo khớp ảnh selfie với ảnh chân dung trên thẻ.
FaceAuthenXác minh danh tính với một tham chiếu đã lưu trữ. Được ghi ở FaceAuthen.

Bước tiếp theo ​

Developers