首页 > 其他分享 >Uniapp插件如何通过NFC读取多种证卡信息?

Uniapp插件如何通过NFC读取多种证卡信息?

时间:2024-12-13 11:57:38浏览次数:9  
标签:证卡 Uniapp 插件 code ret 读卡 msg data CARD

nfc读卡uniapp插件,由中软高科进行开发,主要是通过NFC读取居民身份证、港澳台居住证、外国人居住证、护照等证卡的信息。经过多个版本的升级更新,目前性能已趋于稳定,并且读卡速度较之最初版本有了大的提升。

注意事项

测试使用的 appid 不可用于商用(否则后果自负)。
商用的 appid 请务必联系我司商务进行分配。

uniapp使用原生插件示例

1、加载插件

NFC身份证件读取——插件市场链接

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

2、参数设置

// 参数配置
   var config = {
      'openSound': true, // 蜂鸣器开关
      'openLog': true, // 日志保存开关
      'readType': 2, // 1: USB 2: NFC 3:串口读卡 5:Sam离线读卡 9:NFC电子护照  
      'appId': "123", // 
      'timeout': 20000, // 读卡超时时间 单位毫秒,最小值为 5000
      'openLocalCache': true, // 本地缓存开启
      'isNeedIdCardPhoto': false, // 解码身份证时,是否需要生成身份证正反面照片(不需要时不要开,以免影响速度)
      'isPassportPhoto': true, // 解码护照时,是否需要读取芯片里的高清人脸照(读取照片时间较长。可由外部OCR提取人脸照,速度快)
      'ipAndPort': [
            { // 解码服务器地址,可配置多个服务器节点。第一个为主节点,其余为备用节点。
                'ip': 'yfs4.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

    readCardModule.setReadCardConfig(config, (ret) => {
        var status = ret.status; 
        var msg = ret.msg; // 状态信息
        this.$data.status = 'status: ' + status + '  msg: ' + msg;

        if(status){
            // 参数设置成功,初始化读卡
            this.readCardInit();
        }
    });

3、初始化读卡

   readCardInit() {
       readCardModule.readCardInit((ret) => {
           if(ret.type == "InitState"){ // 初始化状态信息回调
               var code = ret.code; // 状态码  参照文档状态码说明
               var msg = ret.msg; // 状态信息
               this.$data.status = 'code: ' + code + '  msg: ' + msg;
               this.$data.initSuccess = code == 1001;
           }
       });
   }

4、初始化成功后,即可开启读卡


// 跳转原生NFC界面,开始读卡
readCardModule.startReadCard((ret) => {
    switch (ret.type) {
        case "ReadCardState": // 读卡状态信息回调
        var code = ret.code; // 状态码  参照文档状态码说明
        var msg = ret.msg; // 状态信息
        this.$data.status = 'code: ' + code + '  msg: ' + msg;
        switch (code) {
            case 1023: // 读卡解码中
            case 1024: // 开始寻卡
                uni.showLoading({
                    title: '读卡中...',
                    mask: true
                });
             break;
             case 1000: // 读卡成功
                 uni.hideLoading();
             break;
             case 1022: // 读卡失败
                 uni.hideLoading();
             break;
         }
         break;
         case "ReadICCardSuccess": // 读其他卡成功
             this.$data.dataJson = 'cardType: ' + ret.cardType + '\ncardNumber: ' + ret.icNumber;
             this.$data.headImage = null;
         break;
         case "ReadIDCardSuccess": // 读身份证成功
             var data = ret.idCardData;
             this.$data.headImage = ret.base64Image;
             if (data.type == 1081||data.type == 1083) { // 外国人永居证
                 this.$data.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) { // 港澳台居住证
                  //
                  this.$data.dataJson =
                  '姓名: ' + data.name +
                  '\n性别: ' + data.sex +
                  '\n生日: ' + data.birthday +
                  '\n住址: ' + data.address +
                  '\n证件号码: ' + data.id +
                  '\n签发机关: ' + data.issue +
                  '\n有效期限: ' + data.startDate + '-' + data.endDate;
               } else {
                   // 中国居民身份证
                  this.$data.dataJson =
                  '姓名: ' + data.name +
                  '\n性别: ' + data.sex +
                  '\n民族: ' + data.nation +
                  '\n生日: ' + data.birthday +
                  '\n住址: ' + data.address +
                  '\n证件号码: ' + data.id +
                  '\n签发机关: ' + data.issue +
                  '\n有效期限: ' + data.startDate + '-' + data.endDate;
                }       
                break;
           case "ReadPassportSuccess": // 读护照成功
               this.$data.headImage = ret.base64Image;
               var data = ret.idCardData;
               this.$data.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;
     }
 });

手动停止读卡

正常读卡时,不需要手动去停止,读卡结束后,会自动处理停止。

stopReadCard(){
    readCardModule.stopReadCard();
}

附录

身份证详细信息

字段类型注释
typeint1080:中国居民身份证 1082:港澳台居住证
addressstring家庭住址
birthdaystring出生日期
dnstringdn码
endDatestring身份证结束时间
startDatestring身份证生效时间
idstring身份证号码
issuestring签发机关
namestring姓名
nationstring民族
sexstring性别
uuidstringuuid
base64ImageStringbase64照片

外国人永久居住证

字段类型注释
typeint1081:外国人永久居住证
birthdaystring出生日期
dnstringdn码
endDatestring身份证结束时间
startDatestring身份证生效时间
idstring身份证号码
issuestring签发机关
sexstring性别
uuidstringuuid
base64Imagestringbase64照片
nameChinesestring中文姓名
nameEnglishstring英文姓名
nameEnglishAddstring英文附加姓名
nationlitystring国籍
cardVersionstring卡版本号
cardTypestring卡类型
historicalNumberstring历史号码
renewalNumberstring续签数

电子护照详细信息

字段类型注释
nameOfHolderstring中文姓名
primaryIdentifierstring
secondaryIdentifierstring
genderstring性别 M男 F女
dateOfBirthstring生日
nationalitystring国家码
dateOfExpirystring有效期
documentNumberstring护照号码
durationlong解码时长
base64ImageStringbase64照片

状态码对应表

    READCARD_SUCCESS(1000, "解码成功"),

    ININ_OK(1001, "初始化成功"),
    ININ_FAILE(1002, "初始化失败"),

    USB_NODEVICE_CODE(1003, "未发现读卡设备,请检查usb连接"),
    USB_NOREADCARD_CODE(1004, "没有检测到读卡设备"),
    USB_SYSYTEMREEOE_CODE(1005, "系统usb异常,请检查usb连接"),
    USB_NOINTERFACE_CODE(1006, "usb没有建立连接"),
    USB_NOCHANNLE_CODE(1007, "usb通道打开失败"),
    USB_NOSERVICE_CODE(1008, "没有usb服务"),

    SOCKET_SYS_CODE(1010, "网络通讯异常"),
    LOCAL_DATA_ERROR(1018, "本地通信失败"),

    UNKONW_ERROR(1020, "未知异常"),
    READCARD_START(1021, "解码开始"),
    READCARD_FAILE(1022, "解码失败"),
    READCARD_READING(1023, "解码中"),

    FIND_CARD_START(1024, "开始寻卡"),
    FIND_CARD_FAIL(1025, "寻卡失败"),
    FIND_CARD_SUCCESS(1026, "寻卡成功"),

    READ_UID_FAILE(1031, "UID异常"),
    SERIALPORT_NOINTERFACE_CODE(1036, "串口异常,请检查设备"),
    SERIALPORT_DATA_ERROR(1038, "串口异常"),

卡类型

    CARD_IC(1040, "IC卡"),
    CARD_M1(1041, "M1卡"),
    CARD_LCT_STUDENT(1051, "绿城通学生卡"),
    CARD_LCT_NORMAL(1052, "绿城通普通卡"),
    CARD_LCT_OLD(1053, "绿城通老年卡"),
    CARD_SB(1060, "社保卡"),
    CARD_CMCC_SIM(1070, "中国移动超级SIM卡"),
    CARD_CUCC_SIM(1071, "中国联通超级SIM卡"),
    CARD_CTCC_SIM(1072, "中国电信超级SIM卡"),
    CARD_IDCARD(1080, "中国居民身份证"),
    CARD_IDCARD_FOREIGN(1081, "外国永久居住证"),
    CARD_IDCARD_GAT(1082, "港澳台居住证")

标签:证卡,Uniapp,插件,code,ret,读卡,msg,data,CARD
From: https://blog.csdn.net/weixin_39406065/article/details/144421032

相关文章

  • uniapp在平板上启动图片被拉伸变形问题解决
    解决方法使用.9.npg格式图片,.9.PNG是安卓开发里面的一种特殊的图片,这种格式的图片通过ADT自带的编辑工具生成,使用九宫格切分的方法,使图片支持在android环境下的自适应展示。工具.9.npg制作工具draw9png下载地址https://wwvz.lanzouw.com/ixDXP2hzpubg使用方法下载解压draw......
  • uniappios首次安装没有网络
    处理思路https://blog.51cto.com/u_16213344/8459072逻辑图相关代码复制uni.getNetworkType({success:function(res){//获取网络类型constnetworkType=res.networkTypeif(networkType==='none'){//当前无网络连接,展示无网络页面......
  • idea继承代码注释翻译插件
    在读开源代码时,英文注释看起来比较吃力,于是安装一个翻译插件第一步:安装TranslateHelper插件配置IDEA->Preferences->Plugins,安装TranslateHelper这个插件 第二步:在百度翻译平台申请appId和secretKey地址https://fanyi-api.baidu.com/manage/developer可以免费申请第......
  • 王婆卖瓜, 推荐我开发的 云版公鸡Grasshopper插件发布,自带汉化功能
    经过几年的时间开发,长时间的测试,Grasshopper云版公鸡插件终于上线了.一.下载安装打开 www.softcn.store 网站,找到下载链接后下载安装包(内含安装说明及常见问题)二.注册登录有2种注册方式一是可以直接在网页端注册,激活账号公鸡网站二是可以在使用插......
  • k8s阶段07 Pod网路模型及主流网络插件flannel, Calico, Cilium
    Kubernetes网络:Node网络:Node间能正常建立TCP/IP通信连接Node间隔了路由器:隧道模型Node共存于同一个二层网络:隧道模型路由模型Service网络Pod网络CNI:网络插件NetP......
  • 一、新建插件
    (1)新建项目第1步: 第2步:项目名称:FirstTest路径:C:\PO_OFFICE\src\GcoslPlugins第3步:设置类名:PluginFirstTest 第4步:选择编译脚本:第5步:选择Qt版本: 第6步:直接点击构建,在debug模式下完成,在C:\PO_OFFICE\bin\plugins目录下会生成debug版PluginFirstTest.dll 切换到......
  • tooltip风格高级jquery分步引导插件
    TourJS是一款tooltip风格高级jquery分步引导插件。TourJS通过在关键位置显示tooltip信息,来分步引导用户进行页面操作,功能非常实用。在线预览 下载  使用方法在页面中引入jQuery、tour.js文件,以及tooltip的风格颜色主题css文件。<linkrel="stylesheet"type="te......
  • jQuery模态对话框插件jAlert
    jAlert是一款兼容ie8的jQuery模态对话框插件。jAlert可以实现模态对话框,弹出窗口,Lightbox等,并且在显示对话框时带有炫酷的动画效果。 在线预览 下载 使用方法在页面中引入jQuery和jAlert.js、jAlert.css文件。<linkrel="stylesheet"href="dist/jAlert.css">......
  • 使用Arthas和arhtas idea plugin插件做代码性能分析
    最新版本,点击下载https://arthas.aliyun.com/download/latest_version?mirror=aliyun一、idea插件安装idea中安装arthasidea插件在arthas下载目录运行java-jar.\arthas-boot.jar         (1)出现下面情况,是没有启动的java服务;       (2......
  • uniapp多次触发跳转问题
    问题描述:快速点击跳转页面后会闪退到登陆页面解决方案:重新封装uniapp跳转api,加防抖锁,To.tsimport{NavigateToOptions,RedirectToOptions,ReLaunchOptions,SwitchTabOptions}from'uni-app';interfaceToImplements{navigateTo(obj:NavigateToOptio......