用手机 NFC 读护照芯片、验数字签名真伪,在客户自有 APP 内完成「读卡—验真—取照」三步;本文给出依赖清单、调用代码、返回字段与全部返回码。
| 文档类型 | SDK 接入文档(V1.0.1) |
|---|---|
| 适用平台 | Android(aar 集成) |
| 支持证件 | 身份证 102 / 中国护照 414 / 往来港澳通行证 517 / 回乡证 516 |
| 核心能力 | NFC 芯片读取、被动认证验真、证件照读取、可选人脸核验 |
| 返回码 | 10 个(000000 通过 ~ 400001 人像不一致) |
| 原版文档 | 5 页 · 375 KB |
手机 NFC 全球护照芯片验真 SDK 用于在客户自有 APP 内读取护照、港澳通行证等符合 ICAO 国际旅行证件标准的芯片,完成芯片真伪核验(被动认证),并可按需叠加人脸识别,实现实名、实证一次完成。
与「拍证件照 + OCR」的差别在于:OCR 只能读到纸面印刷的信息,芯片里的数字签名无法伪造或篡改而不被发现。因此对护照类证件的验真,芯片读取是更可靠的一层。
证件类型通过 cardType 参数传入,SDK 按类型走不同的读取协议与解析逻辑。
usenseNFCSDK.aar 放入 app/libsdependencies 中加入 aar 与 7 个依赖:fastjson 1.2.31、okhttp 4.9.0、jmrtd 0.7.18、scuba-sc-android 0.0.20、spongycastle prov 1.58.0.0、jj2000 5.2、jnbis 1.1.0其中 jmrtd、scuba、spongycastle 三件是国际民航组织(ICAO)证件读取的标准实现,jj2000 处理芯片内的 JPEG2000 人像照片——这一层决定了「能读到」和「读不全」的差别。
在 Activity 中初始化并启动,账号、密钥、证件类型、请求码一并传入:
UsensePassportVSDK sdk = new UsensePassportVSDK(); sdk.startPassportVNFC(LocalActivity.this, true, "account", "key", "414", 111);
结果在 onActivityResult 中接收,通过 PersonDetails 取证件字段。
| 身份信息 | name 姓名(不同证件格式不一)、gender 性别(个别证件可能缺失)、personalNumber 个人号码(护照)、date_of_birth 出生日期、date_of_expiry 有效期、serialNumber 证件号、address 住址(身份证独有)、nationality 国籍、issuingAuthority 签发机关 |
|---|---|
| 影像 | headImage 证件照(base64)、livenessPhoto 人脸识别采集的人像 |
| 结果 | result 全流程识别结果、retcode 状态码 |
工程上最常见的坑集中在 100000 与 300001:前者是用户中途把手机拿开,需要在交互上明确提示「读取过程中不要移动手机」;后者多为弱网,SDK 调用前应先做网络探测。
OCR 读取的是证件表面的印刷文字,NFC 读取的是证件芯片里的机读数据,并做芯片数字签名的真伪核验(被动认证)。表面信息可以修图伪造,芯片签名无法伪造而不被发现,所以两者是叠加关系:先 OCR 取表面信息,再 NFC 验芯片真伪。
usenseNFCSDK.aar 放入 app/libs,另需 fastjson 1.2.31、okhttp 4.9.0、jmrtd 0.7.18、scuba-sc-android 0.0.20、spongycastle prov 1.58.0.0、jj2000 5.2、jnbis 1.1.0。其中 jmrtd/scuba/spongycastle 负责 ICAO 证件读取,jj2000 处理芯片内 JPEG2000 人像。
支持。cardType 传 102 为居民身份证、414 为中国护照(含华侨)、517 为往来港澳通行证、516 为往来港澳通行证(回乡证)。
100000 表示用户在 NFC 核验流程中取消。工程上多数是贴卡位置不对或中途移开了手机,建议在交互层给出明确的贴卡提示与倒计时。
设备需具备 NFC 能力并已开启,Android 侧通过 aar 集成,调用后由 SDK 完成芯片读取与后端认证。具体系统版本与机型适配清单以接入时的 demo 与技术支持答复为准。