使用javascript从磁条阅读器解析信用卡数据

Mit*_*ans 4 javascript php jquery

好的,所以我有一个html表单,显示如下:

   <span style='required'>*</span> - Indicates required field.
   <div class='fields'>Swiped Information</div>
     <input type=text name='swiped' id='swiped'>
   </div>
   <div class='fields'>First Name</div>
    <input type=text name='first_name' id='first_name'><span style='required'>*</span>
   </div>
   <div class='fields'>Last Name</div>
    <input type=text name='last_name' id='last_name'><span style='required'>*</span>
   </div>
   <div class='fields'>Expiration</div>
    <input type=text size=8 name='expiration' id='expiration'><span style='required'>*</span>(MMYY)
   </div>
   <div class='fields'>CVV Code</div>
    <input type=text size=8 name='cvv' id='cvv'><span style='required'>*</span>
   </div>
   <div class='fields'>Credit Card Number</div>
    <input type=text name='card' id='card'><span style='required'>*</span>
   </div>
   <hr>
   <div class='buttons'></div>
    <a onclick="readCard();" style="cursor:pointer; color:red;">Swipe Credit Card</a>
   </div>
Run Code Online (Sandbox Code Playgroud)

我对这种东西的了解很差.我有一个基本的小信用卡读卡器,可以通过USB插入我的电脑.我希望能够刷信用卡并让我的网站将信息解析到上面的表单字段中.

我已经onclick=readCard();在我的表单下面的链接中添加了一个事件,当推送时,java脚本被启动以将焦点放在Swiped Information将存储来自磁条读取器的数据串的字段上.

function readCard () {

   document.getElementById('swiped').focus();

}
Run Code Online (Sandbox Code Playgroud)

我的想法是,员工会点击"刷卡信用卡",这将使刷卡信息字段具有焦点,并将用字符串填充该字段,然后javascript将该信息分解成碎片并相应地填写表格.

我已经搜索了高低,试图找到一个解决方案,我最接近的是一个使用asp.net作为语言的教程,我不能这样做.PHP或JavaScript.提前致谢.

我需要做的就是将长串打破多个并在html表单中显示相应的部分.

PS我不担心表单验证ATM,我会在填写表单字段之后处理它!谢谢!

更新:

我创建了一个JSFiddle,虽然我输入的java脚本似乎没有工作. http://jsfiddle.net/r8FJX/

更新:

根据下面的评论,我添加了从读卡器发送到计算机的数据示例.我进去并用随机输入的假数字替换了字符串中的每个数字,并用假的替换了我的名字.(对不起诈骗者!)

%B6545461234613451^DOE/JOHN^00000000000000000000000?;6545461234613451=984651465116111?
Run Code Online (Sandbox Code Playgroud)

我假设上面的代码是如何布局的,我找不到任何文档:

%Bcardnumber^lastname/firstname^expDate?;cardnumber=expDate?
Run Code Online (Sandbox Code Playgroud)

Zac*_*ham 5

选项1)

var card_data = "%B6545461234613451^DOE/JOHN^00000000000000000000000?;6545461234613451=984651465116111?"

var details1 = card_data.split("^");

var card_number = details1[0];
card_number = card_number.substring(2);

var names = details1[1].split("/");
var first_name = names[1];
var last_name = names[0];

var details2 = details1[2].split(";");
details2 = details2[1].split("=");

var exp_date = details2[1];
exp_date = exp_date.substring(0, exp_date.length - 1);
exp_date = exp_date.substring(2, 3) + "/" + exp_date.substring(0,1);
Run Code Online (Sandbox Code Playgroud)

选项2)

var pattern=new RegExp("^\%B(\d+)\^(\w+)\/(\w+)\^\d+\?;\d+=(\d\d)(\d\d)\d+$");
var match = pattern.exec(card_data);

card_number = match[1];
first_name = match[3];
last_name = match[2];
exp_date = match[5] + "/" + match[4];
Run Code Online (Sandbox Code Playgroud)

然后做:

document.getElementById("first_name").value = first_name;
document.getElementById("last_name").value = last_name;
document.getElementById("card").value = card_number;
document.getElementById("expiry").value = exp_date;
Run Code Online (Sandbox Code Playgroud)