基于Web瀏覽器的智能卡讀寫器,cab數(shù)字證書安裝測試頁面
2016-08-09 16:31:22
wenxing
580
經(jīng)常有客戶問到,如何通過瀏覽器去調(diào)用IC卡讀寫器的方法,讓B/S系統(tǒng)也可以使用智能卡讀寫器對智能卡進行充值,扣費等一系列操作。諾塔斯智能科技旗下產(chǎn)品從L1系列到目前的L3系列均支持通過web瀏覽器調(diào)用函數(shù)接口從而實現(xiàn)對智能卡讀寫器的讀寫操作?;贗E瀏覽器、360瀏覽器通過ActiveX控件對讀寫器的操作,在本地PC上可以通過批處理命令完成,如何在服務器端部署ActiveX控件呢?
我們將ActiveX控件封裝成了cab數(shù)字證書,當客戶端請求訪問讀寫頁面的時候,瀏覽器會自動提示安裝cab數(shù)字證書從而注冊ActiveX控件。
演示頁面如下:http://www.www.rzqzixun.com/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("扇區(qū)0密碼修改失敗!"); LotusCardDriver.CloseDevice(nHandle); return; } alert("扇區(qū)0密碼修改成功!"); LotusCardDriver.CardPassWord="FFFFFFFFFFFF" bResult=LotusCardDriver.LoadKey(nHandle, 96, 1); if(bResult!=1) { alert("扇區(qū)1裝載密碼失敗!"); LotusCardDriver.CloseDevice(nHandle); return; } bResult=LotusCardDriver.Authentication(nHandle, 96, 1); if(bResult!=1) { alert("扇區(qū)1密碼認證失敗!"); LotusCardDriver.CloseDevice(nHandle); return; } bResult = LotusCardDriver.WriteText(nHandle, 1, "春眠不覺曉處處蚊子咬夜來風雨聲疙瘩知多少"); if(bResult!=1) { alert("扇區(qū)1寫文本失敗!"); LotusCardDriver.CloseDevice(nHandle); return; } strTextInfo = LotusCardDriver.ReadText(nHandle, 1); alert("扇區(qū)1文本:"+strTextInfo); LotusCardDriver.CloseDevice(nHandle); } </script> <!-- Insert HTML here --> <INPUT id=test type=button value="讀卡器測試" onclick=OnTest()></BODY> </BODY> </HTML>