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

Posted

技术标签:

【中文标题】将信用卡读卡器连接到 Web 应用程序?【英文标题】:Connect a credit card reader to web application? 【发布时间】:2011-07-11 17:15:49 【问题描述】:

有没有办法将读卡器连接到我的网络应用程序 (javascript),这样用户就不必手动输入信用卡信息?

此网络应用程序用于在商店购买产品。用户点击想要购买的商品,然后在阅读器中刷信用卡,他会得到一张收据。

【问题讨论】:

【参考方案1】:

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

Please see my answer on that question that Maris linked to.

编辑:2016 年 2 月

我用一个非常简单的 jQuery 实现创建了一个GitHub Gist。

【讨论】:

隐藏字段仍然允许用户输入,如果他愿意的话。他只是看不到它。【参考方案2】:

正如另一个答案中提到的,条形码扫描仪或读卡器就像键盘一样工作。您可以附加一个监听器,例如在整个文档中:

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 修饰符是否打开,如果是则清除该字段。否则,用户只需通过粘贴立即“输入”【参考方案3】:

我认为这就是它的工作原理。信用卡会给你一个安装在你机器上的软件。该软件在本地端口上公开服务。

您的 Web 应用程序将向该本地服务发布请求。您提出的请求可能只包括您要收费的金额以及一些身份验证令牌以针对服务进行身份验证。

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

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

【讨论】:

authorize.net 将如何工作?他们有可以在本地安装的服务吗?

以上是关于将信用卡读卡器连接到 Web 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

在滑动 Android (Cardflight) 上获取信用卡持有人姓名

Xamarin 和托管可扩展性框架 (MEF)

从Web浏览器访问智能卡读卡器?

通过 javax.smartcardio 连接到 micro SD

等待连接 HID 读卡器

用于 Cocoa 应用程序的 USB 信用卡读卡器