所以我知道有很多关于存储信用卡信息的帖子 . 我们正在构建一个移动应用程序,并希望人们能够输入一次卡片信息,而不是每次购买 .
我们查看Authorize.net CIM,它似乎是一个理想的解决方案(我们只存储一个返回信用卡号的 Profiles ID或令牌)......但它可能达不到我们的需求,因为信用卡信息未被处理(必须)由authorize.net,但我们发送付款的任何商家帐户 . 换句话说,我们希望存储信用卡信息,如钱包......不一定每次都与Authorize.net一起处理 .
阅读CIM XML documentation(第94页),看起来getCustomerPaymentProfileResponse掩盖了信用卡返回数据......所以我不知道如果数据被屏蔽,这对处理有什么用呢?
我们确实有其他一些实施方案,但我真的希望有一种基于网络的方式让客户管理他们的支付账户 . 有没有人知道存储信用卡数据的任何方法,可以根据需要调用这些数据传递给任何给定商家的处理器?
编辑4.28.2011 - 我正在用这个打墙 . 如果我们根本不存储信用卡信息,让客户输入然后通过它怎么办...我们如何安全地做到这一点?不存储它,传递HTTPS,在传输过程中加密卡数据?
3 回答
可悲的是,没有简单的方法来实现这一目标 .
如您所知,付款服务提供商将安全地存储卡详细信息,并返回令牌ID(以便您可以参考这些详细信息),但他们永远不会将原始卡详细信息返还给您 .
这是因为PSP将符合PCI-DSS标准 . 合规性的一部分是确保卡片详细信息通过的任何地方(例如其他第三方)也符合PCI-DSS . 如果他们允许将卡详细信息从保险库返回给客户端,那么他们需要确保客户端也符合PCI-DSS(这几乎会使客户使用支付服务提供商失败!) .
因此,您的选择是:
Stripe做这样的事情 . 他们处理卡片详细信息,您无需存储它们并返回代表信用卡的令牌,然后您可以:
或者一次充电,或者
另存为'customer',然后根据需要或以自动重复的方式计费
有一个很好的RailsCast关于Stripe的计费,值得一试 . 非常开发人员 .
Edit
我刚刚意识到Authorize.Net CIM是一种令牌化服务 . 所以你're probably aware of most of this. I'将留下这里的帖子 - 它可能对其他人有用 .
如果这些商家/供应商愿意改变他们的API,我会考虑卡片令牌化 . 这是某些处理器提供的功能,可让您在没有卡号的情况下进行付款 . 这种工作的方式是在第一次交易时,用户将他们的卡信息交给处理器,处理器将令牌传递给商家,该商家唯一地识别该用户和商家的持卡人数据,并且用户的卡数据由处理器在内部存储 . .
然后,您可以存储这些令牌并将其传递给供应商支付应用程序,供应商支付应用程序将使用它们来处理交易 . 我假设这些令牌对于特定商家来说是唯一的,因此您可能必须为特定用户为每个供应商/商家存储1个令牌 .
可能存在这样的规则,其中供应商/商家不能代理令牌或以其他方式从第三方获得它们 . 如果是这种情况,您的供应商可以提供一个新的令牌/ guid,映射到他们内部存储的令牌,以便与他们的卡处理器一起使用...
Google - credit card tokenization
PCI Standards
PCI-DSS不是开玩笑,虽然这些商家/供应商在技术上并不需要向他们的处理器披露您的应用程序存储卡号,但如果他们确实披露它可能会变得混乱 . 两种情况都可能发生:
供应商可能被迫阻止您的应用程序使用API
您的申请必须通过PCI认证