web调用身份证读卡器品牌选择及技术实现

做过的厂家设备:

精伦(IDR210-NMG,iDR210),

神思(SS628(100),SS628(100)版本号004U,SS628(100),SS728M),

信通(对接后取消),

华视(CVR-100UC,CVR-100N,CVR-100U),

中控(ID100),

海康(DS-K1F600U-D6E-IF)

这些设备厂家产品都遵循police的接入规范来的,所以身份证接口读取技术差别不大。

身份证阅读器(仅描述上述品牌型号)

按照设备实现方式分为:

1. ocx控件 (精伦,神思,信通,华视,海康)

2. 本地websocket调用(神思SS728M, 中控)

按照浏览器可用

1、IE11(精伦,神思,信通,华视,海康)

2、通用(神思SS728M, 中控)

建议使用:websocke方式调用,websocket实现的设备价格高一点,但是贵有贵的好处(也不一定,遇过坑,后期避坑讲);

OCX控件设备技术实现:

整体思路:本地驱动安装,浏览器安装ocx控件,js调用 ,根据控件方法获得身份证信息

1.本地驱动安装,安装过程略过。

注意事项:

(1)不要带中文路径

(2)最好安装在C盘

(3)问清楚驱动是否必须安装在 86 或 64文件下面(默认路径最好)

安装成功后在,文件下有demo.html,测试时会用到。

2.页面中写入标签ie 11 支持<OBJECT>标签,这段代码在demo.html文件中有直接cv

<OBJECT>标签与<script>同级

3.技术实现(神思设备举例)

// 判断浏览器是否安装控件(多设备情况下此方法不可用)
if (hasIEPlugin("SDRDCARD.SDRdCardCtrl.1")) {
        // 打开设备
        var ss = rdcard.OpenPort();
        // 执行读卡
        var ps = rdcard.readcard();
        
        var pp = rdcard.ReadSecurityNum();
        if (ss == 0 && pp == 0) { 
           if (ps == 0 && ss == 0) {
               readCardieSS(ps);
            } 
        } else {
            // 关闭端口(必须要有)
            rdcard.ClosePort();
        }
function readCardieSS(ps) {
    switch (ps) {
        case -1:
            swal("操作失败!");
            return;
        case -5:
            swal("软件授权文件错误或没有授权文件!");
            return;
        case -6:
            swal("设备连接错误!");
            return;
        case -7:
            swal("验证卡失败,没有找到卡或者需要将卡拿离验证区重新读卡!");
            return;
    }
    // 所有汉字读取可能会有乱码,电脑语言问题造成
    $("#name").val(rdcard.NameL).change();
    $("#idCard").val(rdcard.CardNo);身份号码(明文)
    $("#address").val(rdcard.Address);地址
    $("#cardImg").attr('src', "data:image/jpeg;base64," + rdcard.JPGBuffer);
    setSelect2("sex1", rdcard.SexL); //性别
    setSelect2("nation", rdcard.Nation);//民族 
    var times = rdcard.Born; // 出生年月
    var vals = times.substring(0, 4) + "-" + times.substring(4, 6) + "-" + times.substring(6);
    $("#birth").val(vals).change();

    $("#image").val(rdcard.JPGBuffer);

    // 删除读取身份证头像图片
    rdcard.DeleteOutputFile();
    // 关闭连接 (每读取一次:开启一次,关闭一次,必须要有)
    rdcard.ClosePort();

}

遇到的坑:

1.设备有的需要开启固定端口,使用完要关闭端口。不然会连接一次可以,拔开再连接就不行。

2.多厂家,多品牌型号下如何指定设备读取卡。页面提供设备选择,redis缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值