将信用卡读卡器连接到Web应用程序?

27

有没有一种方法可以将读卡器连接到我的Web应用程序(JavaScript),以便用户不必手动输入信用卡信息?

这个Web应用程序是用于在商店购买产品的。用户点击要购买的物品,然后在读卡器中刷卡,他将获得收据。

3个回答

41

实际上,这是可能的,因为简单的USB读卡器可以作为键盘输入设备。由于它作为键盘输入,一旦输入框获得焦点,您可以使用一些巧妙的jQuery将其刷卡并推送到隐藏字段中,然后从那里处理。

请查看Maris链接的问题中我的答案。

编辑:2016年2月

我创建了一个GitHub Gist,其中包含非常简单的jQuery实现。


1
隐藏字段仍然允许用户输入,如果他想的话。他只是看不到它。 - Guilherme Ferreira
这似乎有点过时了,基于磁条,不确定它如何与芯片和 PIN/非接触式读卡器配合使用。 - james-geldart

8

正如其他答案中提到的,条码扫描器或读卡器的工作原理类似于键盘。您可以在整个文档中附加监听器,例如:

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
        }
    }
}

如果你想要在文本框上添加监听器,可以这样做。当刷卡时,请确保文本框处于聚焦状态。


您需要检查用户是否将代码复制/粘贴到输入框中,为此只需检查CTRL和SHIFT修饰符是否打开,如果是,则清除该字段。否则,用户将通过粘贴“即时”输入。 - Guilherme Ferreira

0

我认为它是这样工作的。信用卡将提供给您一款软件,您可以在计算机上安装该软件。该软件会在本地端口上公开一个服务。

您的Web应用程序将向该本地服务发送POST请求。您所做的请求可能只包括您想要收取的金额以及某些身份验证令牌,以对该服务进行身份验证。

之后,信用卡终端将处理充电,并在成功时返回参考号或在失败时返回消息。

正如您所看到的,此过程不会将信用卡信息暴露给您的Web应用程序。它只会通知您交易是否已批准,以便您可以继续或拒绝处理订单。


Authorize.net是如何工作的?他们有本地安装服务可用吗? - PHPGuru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接