在不处理的情况下在线获取信用卡信息——如何最好地做到这一点?

Posted

技术标签:

【中文标题】在不处理的情况下在线获取信用卡信息——如何最好地做到这一点?【英文标题】:Taking credit card information online without processing -- how best to do so? 【发布时间】:2010-11-11 22:05:39 【问题描述】:

我收到了一些客户的请求,他们希望在线获取客户的信用卡号,然后在终端的 POS 处处理店内付款。我想知道这样做的最佳方法是什么。

我不想将信用卡号以纯文本形式存储在服务器上,也不想以纯文本形式发送包含该号码的电子邮件。

客户不想注册在线支付帐户,因为在线支付处理器的成本较高且额外费用较高。此外,两位客户都无法在线收费,因为总金额可能会因产品缺货或客户要求的问题而发生变化。

我还有什么其他选择?

我将使用 php。如果规则对我应该使用哪种方法有任何影响,我也在加拿大。

【问题讨论】:

这将在第一次退款之前运行良好。您不会在档案上有签名,您的处理器会想知道为什么。在线交易与刷卡交易相比,利率更高是有原因的。 一个客户,当他们来取他们的产品(房车租赁)时,他们有客户签名。另一个客户经常在没有签名的情况下通过电话获取卡号并且没有遇到问题。通常我会同意你的看法。不过,这两位客户都不能在线收费,因为总额可能会因产品缺货或客户要求的问题而发生变化。 【参考方案1】:

我通过构建 GPG 前端并允许网站所有者生成自己的 GPG 密钥来解决了这个问题。然后,所有信用卡数据都经过 GPG 加密,并且只能使用网站所有者的私钥解密,如果需要,可以将其置于服务器之外以提高安全性。

【讨论】:

【参考方案2】:

我推荐使用 Authorize.net(只是因为这是我用过的)。您可以将信用卡信息发布到 Authorize.net 以捕获(我相信是 AUTH_CAPTURE)要收费的信用卡信息。然后,您的客户可以登录 Authorize.net 虚拟终端并根据可用库存对每笔付款进行收费或作废。

请勿将信用卡信息(即使已加密)存储在可通过 Internet 访问的数据库中。我不知道 PCI 合规性从哪里开始和结束,但我知道如果您的客户存储信用卡信息,那么他们接受的信贷提供商要求他们遵守 PCI。 PCI 合规性是一种痛苦,我推荐的方法是我发现的最简单的解决方法。并且让客户的头痛最小化。

【讨论】:

我知道它并没有直接解决这个问题,但它直接与这个答案有关:如果您进行授权,即使您最终没有收费,它也会暂停资金卡片。如今,每个人都将其连接到他们的在线银行对帐单,这是客户服务的噩梦,因为他们认为您已经向他们收费,而实际上您并没有。最好的方法是使用专为存储信息以供以后使用而设计的服务(如 Authorize.net 的客户信息管理器)。【参考方案3】:

比起使用 POS 机,我建议使用大量可用的支付处理器。大多数评论是 PayPal、Authorize.net、Cyber​​Source...都有编程 API 让您与您的网站交互。

其次,我使用 Rijndael 加密,因为我相信这是存储卡数据的最安全方式。我竭尽全力将加密密钥隐藏在网络配置之外(单独的文件、注册密钥等)。

最后但可能是最重要的一点是,您应该认真查看 PCI(支付卡行业)合规性认证 (https://www.pcisecuritystandards.org/)。我相信这正在迅速成为在线接受卡数据的要求(如果还没有的话)。未来,不遵守规定的人可能会被罚款。

【讨论】:

【参考方案4】:

您可以将信用卡数据存储在 mysql 数据库中(其他可能有效,但我不熟悉)使用 MySql AES_ENCRYPT 函数加密卡号,然后在检索时使用 AES_DECRYPT。使用强键并在处理完数据库中的条目后将其删除。

可能有一种方法可以使用 PHP 进行 AES 加密/解密,但我不知道原生方式。

【讨论】:

【参考方案5】:

您最好的选择是使用非对称加密。生成 RSA 公钥和私钥对。将私钥放在安全的位置。将公钥放在您的网络服务器上。当客户想要提交他们的信用卡详细信息时,将公钥推送给他们。在此客户端使用公钥加密数据。在 OpenSSL 中,查看 Envelope 例程 (EVP_**)。

这样,恢复明文信用卡数据的唯一方法是使用非常安全、从未放置在网上、从未见过互联网连接的计算机私钥进行解密。

您可以创建一个非常简单的独立应用程序来执行此操作,同样使用 OpenSSL。

考虑到你要加密的数据量很小,我认为这是一个相当实用的解决方案。

一种更有效但更复杂的解决方案是使用 AES 加密客户端生成的密钥来加密数据。然后如上所述加密此 AES 密钥(在我的上述解决方案中将信用卡替换为 AES 密钥。)

【讨论】:

【参考方案6】:

存储信用卡完全符合 PCI 规定。 PCI的规章制度繁琐而详细。这不是一个简单的问题。如果我必须重新做一遍,我会考虑购买符合 PCI 的购物车并安装它并完成它。

【讨论】:

【参考方案7】:

我知道您要求的解决方案不涉及支付处理器,但加拿大有一个名为 CurePay 的信用卡处理器,据我所知,它相对便宜(我自己不使用它)。 www.curepay.com。可能值得让他们大喊一声,至少可以了解定价。

另外,我似乎记得一些关于获取信用卡号码的合规性。存储信用卡或“错误地”处理它们可能会让您面临法律问题。不是想吓唬你,只是确保你肯定会考虑这样的事情,无论你采取什么解决方案。

【讨论】:

以上是关于在不处理的情况下在线获取信用卡信息——如何最好地做到这一点?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不离开我的网站的情况下接受信用卡付款? [关闭]

在不存储信用卡信息的情况下重复计费可变金额

如何在不使用 ios 应用中的应用内购买的情况下处理付款? [关闭]

如何在不使用任何支付网关的情况下验证信用卡?

如何在不登录Paypal的情况下使用信用卡支付

iPhone:如何在连接设备的情况下刷卡时收集信用卡信息?