存储信用卡信息

时间:2011-04-27 17:11:53

标签: payment-gateway payment credit-card pci-dss

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

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

阅读CIM XML documentation(第94页),看起来getCustomerPaymentProfileResponse会掩盖信用卡返回数据......所以我不知道如果数据被屏蔽,这对处理有什么用呢?

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

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

3 个答案:

答案 0 :(得分:8)

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

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

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

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

答案 1 :(得分:3)

Stripe做了类似的事情。他们处理卡片详细信息,您无需存储它们并返回代表信用卡的令牌,然后您可以:

  • 要么一次充电,要么
  • 保存为“客户”,然后根据需要或以自动重复的方式在将来开帐单

使用Stripe进行结算有一个很好的RailsCast,值得一试。非常开发人员。

答案 2 :(得分:1)

修改
我刚刚意识到Authorize.Net CIM是一种令牌化服务。所以你可能已经意识到这一点。我会留下这里的帖子 - 它可能对其他人有用。

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

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

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

Google - credit card tokenization

PCI Standards

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

  • 供应商可能被迫阻止您的应用程序使用API​​
  • 您的申请必须通过PCI认证