分享通过Uniapp调用NFC读取身份证信息

概要

uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。

身份证信息读取:通过具有手机的NFC读取二代证基本信息和照片信息,结合UNiapp和NFC技术可以满足快速开发、快速项目上线,方便部署。

扩展:在UNiapp中,通过手机的NFC芯片,也可以将UNiapp中的信息写入NFC标签。例如,用户可以在UNiapp中输入一些个人信息,然后将这些信息写入NFC标签,再将标签贴在自己的名片上。当其他人使用支持NFC的手机扫描标签时,可以立即获取到用户的个人信息。通过结合UNiapp和NFC,可以开发出一些创新的应用,提供更便捷的服务和丰富的功能。但需要注意的是,NFC功能在不同手机上的支持程度可能有所差异,开发时需要考虑到兼容性问题。

整体架构流程

SDK 开发包集成到业务系统中,业务系统可能是安卓 APP 或 PC 端的应用系统,通过提供的SDK 将内部流程和容错机制都很好的封装,业务系统只需调用一个接口,即可完成数据的解码,SDK 开发包与云解码服务器中间进行数据交互,最终完成身份证信息的解码。

技术名词解释

  • NFC :近场通信(NFC)是一种无线通信技术,它使设备能够在不使用互联网的情况下相互通信。它首先识别附近配备NFC的设备。NFC常用于智能手机和平板电脑
  • 身份证类型:二代身份证、三代居民身份证、外国人永久居住证、港澳台居住证
  • SDK类别:微信小程序、支付宝、Uniapp、安卓\windows\Linux\IOS\海思\麒麟\统信

技术细节

// 获取 读证件的 插件
var readCardModule = uni.requireNativePlugin("csht_readcard");

// 配置参数
var config = {
                    'openSound': true, // 蜂鸣器开关
                    'openLog': true, // 日志保存开关
                    'readType': 2, // 1: USB 2: NFC 3:串口读卡 5:Sam离线读卡 9:NFC电子护照  
                    'nativePageUrl': '', //如果原生界面UI不满足时,可自定义传入web网页地址,进行自定义界面。如 https://***.com/read.html
                    'appId': "test", // 测试APPID,商用的 appid 请务必联系我司商务进行分配
                    'ipAndPort': [{ // 解码服务器地址,可配置多个服务器节点。第一个为主节点,其余为备用节点。
                        'ip': 'yfs3.sfzydq.com',
                        'port': 9999
                    }, {
                        'ip': 'yjm2.sfzydq.com',
                        'port': 9999
                    }]
                };
// readType设置成 3,串口读卡时,必须设置 串口文件地址、波特率 两个参数。(不需要时,可删除)
config.deviceFilePath = "/dev/ttyS0";
config.baudrate = 115200;
// readType设置成 9,读取护照时,必须添加 护照号、生日、有效期 三个参数。 (不需要时,可删除)
config.documentNumberStr = "E90342672"; // 9位护照号码
config.dateOfBirthStr = "940521"; // 出生日期,格式为 YYMMDD
config.dateOfExpiryStr = "261113"; // 有效日期,格式为 YYMMDD

// 跳转原生NFC界面,开始读卡
readCardModule.gotoNativeNFCPage(config, (ret) => {
    switch (ret.type) {
        case "InitState": // 初始化状态信息回调
            var code = ret.code; // 状态码  参照文档状态码说明
            var msg = ret.msg; // 状态信息
            var status = 'code: ' + code + '  msg: ' + msg;
            break;
        case "ReadCardState": // 读卡状态信息回调
            var code = ret.code; // 状态码  参照文档状态码说明
            var msg = ret.msg; // 状态信息
            var status = 'code: ' + code + '  msg: ' + msg;
            break;
        case "ReadICCardSuccess": // 读其他卡成功
            var dataJson = 'cardType: ' + ret.cardType + '\nicNumber' + ret.icNumber;
            break;
        case "ReadIDCardSuccess": // 读身份证成功
            var headImage = ret.base64Image;
            var data = ret.idCardData;
        if (data.type == 1081) { // 外国人永居证
            var dataJson =
                    '中文姓名: ' + data.nameChinese +
                    '\n英文姓名: ' + data.nameEnglish +
                    '\n性别: ' + data.sex +
                    '\n生日: ' + data.birthday +
                    '\n国籍: ' + data.nationlity +
                    '\n证件号码: ' + data.id +
                    '\n有效期限: ' + data.startDate + '-' + data.endDate;
            } else if (data.type == 1082) { // 港澳台居住证

            } else {
                // 中国居民身份证
                var dataJson =
                    '姓名: ' + data.name +
                    '\n民族: ' + data.nation +
                    '\n性别: ' + data.sex +
                    '\n生日: ' + data.birthday +
                    '\n住址: ' + data.address +
                    '\n证件号码: ' + data.id +
                    '\n签发机关: ' + data.issue +
                    '\n有效期限: ' + data.startDate + '-' + data.endDate;
            }
            break;
         case "ReadPassportSuccess": // 读护照成功
            var headImage = ret.base64Image;
            var data = ret.idCardData;
             var dataJson =
                '姓名: ' + data.nameOfHolder + '/' + data.primaryIdentifier + data.secondaryIdentifier +
                '\n性别: ' + data.gender +
                '\n生日: ' + data.dateOfBirth +
                '\n国家码: ' + data.nationality +
                '\n护照号码: ' + data.documentNumber +
                '\n有效期: ' + data.dateOfExpiry;
            break;
         default:
            break;
    }
});

官方APP离线打包文档

APP离线打包文档

Android原生工程配置修改

  • 30
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值