8

所以我知道有很多关于存储信用卡信息的帖子。我们正在构建一个移动应用程序,并希望人们能够一次输入他们的卡信息,而不是每次购买。

我们查看了Authorize.net CIM,它似乎是一个理想的解决方案(我们只存储返回信用卡号的配置文件 ID 或令牌)......但它可能无法满足我们的需求,因为信用卡信息是'不是由 authorize.net 处理(必要),而是通过我们发送付款的任何商家帐户。换句话说,我们希望像钱包一样存储信用卡信息......不一定每次都使用 Authorize.net 处理。

阅读CIM XML 文档(第 94 页),看起来 getCustomerPaymentProfileResponse 掩盖了信用卡返回数据......所以我看不出如果数据被掩盖,这对处理有何用处?

我们确实有其他一些实施选项,但我真的希望有一种基于网络的方式让客户管理他们的支付账户。有谁知道存储信用卡数据的任何方法,这些数据可以按需调用以传递给任何给定商家的处理器?

编辑 4.28.2011 - 我碰壁了。如果我们根本不存储信用卡信息,让客户输入然后传递它怎么办……我们如何安全地做到这一点?不存储它,传递 HTTPS,在传输过程中加密卡数据?

4

3 回答 3

8

可悲的是,没有简单的方法可以实现这一目标。

如您所知,支付服务提供商将安全地存储卡详细信息,并返回一个令牌 ID(以便您可以参考这些详细信息),但他们永远无法将原始卡详细信息返回给您。

这是因为 PSP 将通过 PCI-DSS 合规性。这种合规性的一部分是确保卡详细信息在任何地方传递(例如传递给其他第 3 方)符合 PCI-DSS。如果他们允许将卡详细信息从保险库返回给客户,那么他们将需要确保客户也符合 PCI-DSS(这几乎会破坏客户使用支付服务提供商的观点!) .

因此,您的选择是:
- 通过 PCI-DSS 合规性工作,以便您可以自己安全地存储卡详细信息。
- 将卡详细信息存储到您与之互操作的每个支付服务提供商,并存储每个返回的令牌。

于 2011-04-28T10:20:26.507 回答
3

Stripe做了这样的事情。他们处理信用卡详细信息,而您无需存储它们,并给您一个代表信用卡的令牌,然后您可以:

  • 要么进行一次性收费,要么
  • 保存为“客户”,然后在将来根据需要或以自动重复的方式计费

有一个很好的关于使用 Stripe 计费的RailsCast,值得一试。对开发人员非常友好。

于 2013-01-31T04:08:55.410 回答
1

编辑
我刚刚意识到 Authorize.Net CIM 是一种标记化服务。因此,您可能已经知道其中的大部分内容。不过,我会把帖子留在这里——它可能对其他人有用。

如果这些商家/供应商愿意改变他们的 API,我会考虑卡标记化。这是某些处理器提供的一项功能,可让您在没有卡号的情况下进行付款。这种工作方式是在用户将他们的卡信息交给处理器的第一笔交易中,处理器将一个令牌传回给商家,该令牌唯一地标识该用户和商家的持卡人数据,并且用户的卡数据由处理器内部存储.

然后,您可以存储这些令牌并将它们传递给供应商支付应用程序,后者将使用它们来处理交易。我假设这些令牌对于特定商家来说是唯一的,因此您可能必须为每个供应商/商家为特定用户存储 1 个令牌。

可能有一条规则,供应商/商家不能代理令牌或以其他方式从第三方获取它们。如果是这种情况,您的供应商可以提供一个新的令牌/guid,该令牌/guid 映射到他们在内部存储的令牌,以便与他们的卡处理器一起使用......

谷歌 - 信用卡令牌化

PCI 标准

PCI-DSS 不是开玩笑,虽然这些商家/供应商在技术上不需要向他们的处理器披露您的应用程序正在存储卡号,但如果他们确实披露了它可能会变得一团糟。两种情况中的任何一种都可能发生:

  • 供应商可能会被迫阻止您的应用程序使用 API
  • 您的应用程序必须通过 PCI 认证
于 2011-04-27T19:03:05.050 回答