有没有一种方法可以将读卡器连接到我的Web应用程序(JavaScript),以便用户不必手动输入信用卡信息?
这个Web应用程序是用于在商店购买产品的。用户点击要购买的物品,然后在读卡器中刷卡,他将获得收据。
有没有一种方法可以将读卡器连接到我的Web应用程序(JavaScript),以便用户不必手动输入信用卡信息?
这个Web应用程序是用于在商店购买产品的。用户点击要购买的物品,然后在读卡器中刷卡,他将获得收据。
实际上,这是可能的,因为简单的USB读卡器可以作为键盘输入设备。由于它作为键盘输入,一旦输入框获得焦点,您可以使用一些巧妙的jQuery将其刷卡并推送到隐藏字段中,然后从那里处理。
编辑:2016年2月
我创建了一个GitHub Gist,其中包含非常简单的jQuery实现。
正如其他答案中提到的,条码扫描器或读卡器的工作原理类似于键盘。您可以在整个文档中附加监听器,例如:
document.onkeypress = function(e) {
e = e || window.event;
var charCode = (typeof e.which == "number") ? e.which : e.keyCode;
// store it , in this example, i use localstorage
if(localStorage.getItem("card") && localStorage.getItem("card") != 'null') {
// append on every keypress
localStorage.setItem("card", localStorage.getItem("card") + String.fromCharCode(charCode));
} else {
// remove localstorage if it takes 300 ms (you can set it)
localStorage.setItem("card", String.fromCharCode(charCode));
setTimeout(function() {
localStorage.removeItem("card");
}, 300);
}
// when reach on certain length within 300 ms, it is not typed by a human being
if(localStorage.getItem("card").length == 8) {
// do some validation
if(passedonvalidation){
// do some action
}
}
}
如果你想要在文本框上添加监听器,可以这样做。当刷卡时,请确保文本框处于聚焦状态。
我认为它是这样工作的。信用卡将提供给您一款软件,您可以在计算机上安装该软件。该软件会在本地端口上公开一个服务。
您的Web应用程序将向该本地服务发送POST请求。您所做的请求可能只包括您想要收取的金额以及某些身份验证令牌,以对该服务进行身份验证。
之后,信用卡终端将处理充电,并在成功时返回参考号或在失败时返回消息。
正如您所看到的,此过程不会将信用卡信息暴露给您的Web应用程序。它只会通知您交易是否已批准,以便您可以继续或拒绝处理订单。