更新记录

1.2.1(2024-10-26) 下载此版本

新增蓝牙读卡;优化已知问题;

1.1.0(2024-04-19) 下载此版本

修复读卡弹窗遮挡问题

1.0.1(2024-03-13) 下载此版本

修改护照读卡问题 去除读卡界面跳转

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 14.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


注意事项

测试使用的 appid 不可以用于商用(否则后果自负)。 商用的 appid 请务必联系我司商务进行分配。 Tel: 18039233198 wx: csht-beyond 技术支持:wx: CSHTZSF

uniapp使用插件步骤

1、加载插件

[NFC身份证件读取——插件市场链接](https://ext.dcloud.net.cn/plugin?id=16843)

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

2、参数设置

// 配置参数
var config = {
                    'openSound': true, // 蜂鸣器开关
                    'openLog': true, // 日志保存开关
                    'readType': 2, // 1: USB 2: NFC 3:串口读卡 5:Sam离线读卡 7:蓝牙 9:NFC电子护照  
                    'appId': "test", // 测试APPID,商用的 appid 请务必联系我司商务进行分配
                    '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、初始化成功后,开始读卡


// 开始读卡
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;
                            uni.hideLoading();
                            break;
                        case "ReadIDCardSuccess": // 读身份证成功
                            var data = ret.idCardData;
                            this.$data.headImage = ret.base64Image;
                            uni.hideLoading();
                            if (data.type == 1081) { // 外国人永居证
                                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": // 读护照成功
                            uni.hideLoading();
                            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();
            }

附录

身份证详细信息

字段 类型 注释
type int 1080:中国居民身份证 1082:港澳台居住证
address string 家庭住址
birthday string 出生日期
dn string dn码
endDate string 身份证结束时间
startDate string 身份证生效时间
id string 身份证号码
issue string 签发机关
name string 姓名
nation string 民族
sex string 性别
uuid string uuid
base64Image String base64照片

外国人永久居住证

字段 类型 注释
type int 1081:新版外国人永久居住证1083:旧版外国人永久居住证
birthday string 出生日期
dn string dn码
endDate string 身份证结束时间
startDate string 身份证生效时间
id string 身份证号码
issue string 签发机关
sex string 性别
uuid string uuid
base64Image String base64照片
nameChinese string 中文姓名
nameEnglish string 英文姓名
nameEnglishAdd string 英文附加姓名
nationlity string 国籍
cardVersion string 卡版本号
cardType string 卡类型
historicalNumber string 历史号码
renewalNumber string 续签数

电子护照详细信息

字段 类型 注释
nameOfHolder string 中文姓名
primaryIdentifier string
secondaryIdentifier string
gender string 性别 M男 F女
dateOfBirth string 生日
nationality string 国家码
dateOfExpiry string 有效期
documentNumber string 护照号码
duration long 解码时长
base64Image String base64照片

状态码对应表

    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_BANK(1061, "银行卡"),
    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, "港澳台居住证")
    CARD_IDCARD_FOREIGN_OLD(1083, "旧版外国永久居住证"),

隐私、权限声明

1. 本插件需要申请的系统权限列表:

android.permission.NFC

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

作者未提供license.md

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问