我需要从磁卡上获取 Track 1 和 Track 2 数据,然后通过网络将它们发送到等待的服务器。从 USB HID 磁卡读卡器获取轨道数据的简单方法是什么?
如果有帮助,我有一个 MAGTEK 迷你刷卡式磁条阅读器(部件号 21040140)
我与操作系统无关——Windows、Mac 或 Linux 的解决方案会很棒。最好不要.NET,但如果这是最简单的方法,我会选择它。
大家怎么看?
谢谢!
我需要从磁卡上获取 Track 1 和 Track 2 数据,然后通过网络将它们发送到等待的服务器。从 USB HID 磁卡读卡器获取轨道数据的简单方法是什么?
如果有帮助,我有一个 MAGTEK 迷你刷卡式磁条阅读器(部件号 21040140)
我与操作系统无关——Windows、Mac 或 Linux 的解决方案会很棒。最好不要.NET,但如果这是最简单的方法,我会选择它。
大家怎么看?
谢谢!
我见过的每个读卡器都有一个键盘模拟器,所以你刷卡它会通过键盘缓冲区发送字符。看起来这个也可以(文档: http: //www.magtek.com/documentation/public/99875206-16.01.pdf)
第 14 页描述了刷卡后发送的数据,这在读卡器中也是相当标准的:
[Tk1 SS] [Tk1 Data] [ES] [Tk2 SS] [Tk2 Data] [ES] [Tk3 SS] [Tk3 Data] [ES] [CR]
因此,您的轨道一数据以开头%
和结尾?
轨道二数据以开头;
和结尾?
我注意到这个问题被标记为信用卡,因此值得确保您知道通过网络(甚至是内部网络)发送原始卡数据的后果。查看支付卡行业数据安全标准 (PCI-DSS):https ://www.pcisecuritystandards.org/security_standards/pci_dss.shtml
VB 源代码中有一个针对特定阅读器的演示程序。
http://www.magtek.com/support/software/demo_programs/usb_swipe_insert.asp
从此链接下载 Cab 文件并将其包含在“magtek”文件夹中的项目目录中的最简单方法。
http://www.magtek.com/support/software/demo_programs/card/usb_hid_swipe_readers/read_parse.asp
在标记后的 aspx 文件中添加此代码(按 更改 cab 文件 src)
<object id="USBHID" classid="CLSID:22571E97-956A-4CDD-AF8D-AE9C26597683" codebase="magtek/99510060.CAB#version=1,13,0,2">
</object>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
$('#txtNameFirst').focus(); // Focus on a textbox is required
USBHID.PortOpen = true;
if (USBHID.PortOpen == false) {
$('#<%= lblStatus.ClientID %>').text('Could not open MagTek reader');
}
else {
$('#<%= lblStatus.ClientID %>').text('Please Swipe a card');
}
});
$("#txtNameFirst").bind('change', function () {
var CCData = $("#txtNameFirst").val(); // CCData will contain the complete credit card data in a string.
alert(CCData);
$("#txtNameFirst").val(CCData.split('^')[1].split(' ')[0]);
$("#txtNameLast").val(CCData.split('^')[1].split(' ')[1]);
$("#txtCCNo").val(CCData.split('^')[0].substring(2, 18));
//alert(' Split1: ' + CCData.split('^')[1] + ' Split2: ' + CCData.split('^')[2]);
//alert('parsing good!');
$("#txtExpiDt_RoutingNo").val(CCData.split('^')[2].substring(2, 4) + '/' + CCData.split('^')[2].substring(0, 2));
});
</script>
根据上面的代码,我添加了对文本框的关注。刷卡后,文本框会自动显示完整的信用卡数据字符串。