基于Web浏览器的智能卡读写器,cab数字证书安装测试页面
2016-08-09 16:31:22
wenxing
536
经常有客户问到,如何通过浏览器去调用IC卡读写器的方法,让B/S系统也可以使用智能卡读写器对智能卡进行充值,扣费等一系列操作。诺塔斯智能科技旗下产品从L1系列到目前的L3系列均支持通过web浏览器调用函数接口从而实现对智能卡读写器的读写操作。基于IE浏览器、360浏览器通过ActiveX控件对读写器的操作,在本地PC上可以通过批处理命令完成,如何在服务器端部署ActiveX控件呢?
我们将ActiveX控件封装成了cab数字证书,当客户端请求访问读写页面的时候,浏览器会自动提示安装cab数字证书从而注册ActiveX控件。
演示页面如下:http://www.lotuscard.cc/LotusCardDemo.html 请用IE浏览器或者360浏览器兼容模式打开。
<HTML> <HEAD><TITLE>LotusCardDemo</TITLE></HEAD> <BODY> <OBJECT ID=LotusCardDriver Visible=false WIDTH=0 HEIGHT=0 CLASSID="CLSID:BD1874A5-3810-4639-8B70-3DDD607BAADB" CODEBASE="./LotusCardActive.cab#version=1,0,0,3"> </OBJECT> <script language=javascript> function OnTest() { var nHandle = 0; //设备句柄 var bResult = 0; var strTextInfo = "" nHandle = LotusCardDriver.OpenDevice("",0,0,0); if(nHandle <=0 ) { alert("打开设备失败!"); return; } LotusCardDriver.Beep(nHandle,10); bResult = LotusCardDriver.SetCardType(nHandle, 'A'); if(bResult!=1) { alert("设置卡类型失败!"); LotusCardDriver.CloseDevice(nHandle); return; } bResult = LotusCardDriver.GetCardNo(nHandle,38); if(bResult!=1) { alert("寻卡失败!"); LotusCardDriver.CloseDevice(nHandle); return; } alert("卡号:"+LotusCardDriver.CardNo); LotusCardDriver.CardPassWord="FFFFFFFFFFFF" bResult=LotusCardDriver.LoadKey(nHandle, 96, 0); if(bResult!=1) { alert("装载密码失败!"); LotusCardDriver.CloseDevice(nHandle); return; } bResult=LotusCardDriver.Authentication(nHandle, 96, 0); if(bResult!=1) { alert("密码认证失败!"); LotusCardDriver.CloseDevice(nHandle); return; } bResult=LotusCardDriver.LoadKey(nHandle, 97, 0); if(bResult!=1) { alert("装载密码失败!"); LotusCardDriver.CloseDevice(nHandle); return; } bResult=LotusCardDriver.Authentication(nHandle, 97, 0); if(bResult!=1) { alert("密码认证失败!"); LotusCardDriver.CloseDevice(nHandle); return; } bResult = LotusCardDriver.Read(nHandle, 2); if(bResult!=1) { alert("读2块失败!"); LotusCardDriver.CloseDevice(nHandle); return; } alert("2块:"+LotusCardDriver.ReadWriteBuffer); LotusCardDriver.ReadWriteBuffer="0123456789abcdef0123456789abcdef" bResult = LotusCardDriver.Write(nHandle, 2); if(bResult!=1) { alert("写2块失败!"); LotusCardDriver.CloseDevice(nHandle); return; } alert("写2块OK"); bResult = LotusCardDriver.ChangePassword(nHandle, 0, "FFFFFFFFFFFFF","FFFFFFFFFFFFF"); if(bResult!=1) { alert("扇区0密码修改失败!"); LotusCardDriver.CloseDevice(nHandle); return; } alert("扇区0密码修改成功!"); LotusCardDriver.CardPassWord="FFFFFFFFFFFF" bResult=LotusCardDriver.LoadKey(nHandle, 96, 1); if(bResult!=1) { alert("扇区1装载密码失败!"); LotusCardDriver.CloseDevice(nHandle); return; } bResult=LotusCardDriver.Authentication(nHandle, 96, 1); if(bResult!=1) { alert("扇区1密码认证失败!"); LotusCardDriver.CloseDevice(nHandle); return; } bResult = LotusCardDriver.WriteText(nHandle, 1, "春眠不觉晓处处蚊子咬夜来风雨声疙瘩知多少"); if(bResult!=1) { alert("扇区1写文本失败!"); LotusCardDriver.CloseDevice(nHandle); return; } strTextInfo = LotusCardDriver.ReadText(nHandle, 1); alert("扇区1文本:"+strTextInfo); LotusCardDriver.CloseDevice(nHandle); } </script> <!-- Insert HTML here --> <INPUT id=test type=button value="读卡器测试" onclick=OnTest()></BODY> </BODY> </HTML>