基于Web浏览器的智能卡读写器,cab数字证书安装测试页面
2016-08-09 16:31:22
wenxing
601
经常有客户问到,如何通过浏览器去调用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>