跳到主要内容

🚀 入门

立即试用 — 无需编码

实时摄像头演示页面 上立即体验 Web SDK — 自动文档捕获、人脸活体检测、人脸验证和被动活体检测,全部在您的浏览器中运行。

iApp eKYC SDK 是一套免费的开源(Apache-2.0)客户端 SDK,适用于 iApp Technology 的企业级 eKYC API — 自动泰语身份证/护照捕获、人脸活体检测、人脸验证和被动活体检测 — 支持 Web (HTML5/JavaScript)Flutter (Android/iOS)原生 iOS (Swift/Objective-C)原生 Android (Kotlin/Java)React Native

Web 和 Flutter 包直接在设备上运行捕获引擎。原生 iOS、Android 和 React Native 包是围绕同一生产 Web 引擎的薄层封装 — 在任何地方都具有相同的捕获质量,并且几乎没有增加二进制大小。有关这些平台的信息,请参阅 iOS、Android 和 React Native

SDK 本身是免费的。API 调用按每次请求计费到您的 iApp API 密钥,费率与直接调用 API 相同 — 有关费用,请参阅每个功能页面。

源代码: https://github.com/iapp-technology/iapp-ekyc-sdk

SDK 为您提供的功能

功能SDK 功能API 计费
🪪 身份证自动捕获检测卡片边界,等待清晰稳定的帧,进行透视校正,提交1.25 张身份证正面 / 0.75 张身份证背面
🛂 护照自动捕获相同的引擎,针对护照数据页(MRZ)进行优化0.75 张身份证
📇 官方证件自动捕获驾驶证、存折、带签名的身份证1.0–1.25 张身份证/页
🙂 人脸活体检测随机设备内挑战,最佳帧选择,服务器签名验证1 次
👥 人脸验证一次调用比较两张面部图像0.3 次
🛡️ 人脸被动活体检测单图像防伪检查0.3 次

安装

Flutter

pubspec.yaml 中将 SDK 添加为 Git 依赖项:

dependencies:
iapp_ekyc_sdk:
git:
url: https://github.com/iapp-technology/iapp-ekyc-sdk.git
path: flutter
import 'package:iapp_ekyc_sdk/iapp_ekyc_sdk.dart';

final client = IappEkycClient(apiKey: 'YOUR_API_KEY');

Web

从 npm 安装:

npm install @iapp-technology/ekyc-sdk
import { IappEkyc } from '@iapp-technology/ekyc-sdk';

const ekyc = new IappEkyc({ apiKey: 'YOUR_API_KEY' });

或者通过 script 标签加载 UMD 包,它会公开 window.IappEkyc 命名空间(类位于其中):

<script src="https://unpkg.com/@iapp-technology/ekyc-sdk"></script>
<script>
const ekyc = new window.IappEkyc.IappEkyc({ apiKey: 'YOUR_API_KEY' });
</script>

iOS (Swift / Objective-C)

Xcode → File → Add Package Dependencies…https://github.com/iapp-technology/iapp-ekyc-sdk → product IappEkyc

import IappEkyc

let config = IappEkycConfig(apiKey: "YOUR_API_KEY", flow: .documentCapture)
config.documentType = .thaiIdFront
IappEkycSdk.present(from: self, config: config) { result in /* ... */ }

完整设置(权限、Objective-C、结果):iOS、Android 和 React Native

Android (Kotlin / Java)

通过 JitPack

// app/build.gradle.kts — 在 repositories 中加上 maven("https://jitpack.io")
dependencies { implementation("com.github.iapp-technology:iapp-ekyc-sdk:v0.2.0") }
val ekyc = registerForActivityResult(IappEkycContract()) { result -> /* ... */ }
ekyc.launch(IappEkycRequest.DocumentCapture(config, EkycDocumentType.THAI_ID_FRONT))

完整设置(Java 回调 API、结果):iOS、Android 和 React Native

React Native

git clone https://github.com/iapp-technology/iapp-ekyc-sdk
npm install ./iapp-ekyc-sdk/react-native react-native-webview
<IappEkycFlow flow="documentCapture" documentType="thaiIdFront"
apiKey="YOUR_API_KEY" onResult={...} onError={...} onCancel={...} />

完整设置(权限、Modal 用法):iOS、Android 和 React Native

API 密钥设置

API 密钥管理 页面获取 API 密钥。

确保您的密钥不包含在已发布的客户端中

任何包含在客户端应用中的密钥都可以被提取(APK 反编译、浏览器开发者工具)。对于生产环境,请使用 后端代理模式:将 SDK 指向您自己的后端,并将 iApp 密钥保留在服务器端。

IappEkycClient(apiKey: '', baseUrl: 'https://your-backend.example.com/ekyc')

apiKey 为空时,SDK 发送 apikey 头;您的代理会附加真实密钥并转发到 https://api.iapp.co.th。至少,为每个应用创建一个专用的受限密钥,这样就可以独立吊销泄露的密钥。完整指南:GitHub 上的 SECURITY.md

主题

所有平台都提供相同的专业 浅蓝色默认主题,并接受完全覆盖。令牌名称和默认值在各平台之间是相同的(原生包装器通过它们的配置对象传递相同的令牌):

令牌默认值用途
primary#0284C7按钮、活动引导框、进度
primaryDark#0C4A6E标题、指令文本
primaryLight#BAE6FD空闲引导框、微妙的强调
surface#F0F9FF面板、指令提示
onPrimary#FFFFFF主要颜色上的文本/图标
success#22C55E四个角锁定、挑战通过
warning#F59E0B保持静止/太模糊
error#EF4444失败
overlayScrim#0C4A6E (60%)引导框外的相机覆盖层
brandDeep#113F7B可选的 iApp 品牌强调
borderRadius16提示、按钮、结果卡片
guideStrokeWidth3引导框描边
fontFamily平台默认可选覆盖

FlutterEkycTheme 是一个普通的不可变类(不依赖于 Theme.of):

const theme = EkycTheme.lightBlue;             // 默认
final custom = EkycTheme.lightBlue.copyWith(
primary: Color(0xFF113F7B),
borderRadius: 12,
);
DocumentCaptureView.start(context, theme: custom, ...);

Web — 令牌作为 CSS 自定义属性注入到挂载元素上:

new IappEkyc({ apiKey, theme: { primary: '#113F7B', borderRadius: 12 } });
/* 或者使用纯 CSS 覆盖 */
#ekyc-mount { --iapp-ekyc-primary: #113f7b; --iapp-ekyc-border-radius: 12px; }

更多详情:GitHub 上的 THEMING.md

本地化

所有 UI 字符串都提供 英语、泰语和中文

// Flutter
DocumentCaptureView.start(context, client: client,
documentType: DocumentType.thaiIdFront, locale: EkycLocale.th);
// Web: 'en' | 'th' | 'zh'
await ekyc.captureDocument({ mount, documentType: 'thaiIdFront', locale: 'th' });

原生包装器接受相同的语言环境:config.locale = .th (iOS)、.locale(EkycLocale.TH) (Android)、locale="th" (React Native)。

平台要求

Flutter

  • Flutter ≥ 3.32 / Dart ≥ 3.8
  • Android: minSdk 24
  • iOS: 15.5+ 并在 Info.plist 中有一个 NSCameraUsageDescription 条目(有关所需的权限字符串,请参阅仓库中的 flutter/example 应用)

Web

  • 支持 WebAssemblygetUserMedia 的现代浏览器
  • 需要 HTTPS(或 localhost) — 浏览器会阻止不安全来源的摄像头访问
  • OpenCV/MediaPipe 资产仅在开始捕获流程时延迟加载;如果您的 CSP 禁止 CDN 请求,请通过 assetBaseUrl 选项自托管它们

iOS / Android / React Native(原生包装器)

  • iOS: 15+ · Swift Package Manager · Info.plist 中的 NSCameraUsageDescription
  • Android: minSdk 24 · 最新的 Android 系统 WebView(建议使用 Chrome/WebView ≥ 100)
  • React Native: RN ≥ 0.72 · react-native-webview ≥ 13.6
  • 运行时需要互联网访问 https://iapp.co.th/sdk/webview.html

后续步骤