如何在不存储 CVV 代码的情况下每 2 个月向某人收取可变金额?

Posted

技术标签:

【中文标题】如何在不存储 CVV 代码的情况下每 2 个月向某人收取可变金额?【英文标题】:How do I charge someone a variable amount every 2 months without storing CVV code? 【发布时间】:2010-11-18 04:47:57 【问题描述】:

我们的实物产品每 2、3 或 4 个月发货一次,具体取决于客户偏好。在两次发货之间,用户可以选择修改他们的选择。

在任何人建议之前 - 我很确定定期计费系统(例如 Paypal)不适合我们的需求。出于两个原因,像 Paypal 这样的系统似乎并不理想。

他们只允许您按月、按季、按年进行。不是每2或3个月一次。 [Paypal API document here] 如果客户想要他们的产品早于或晚于正常时间表,我们希望他们能够“立即发货”。 由于它是一种实物产品,我们无法将其拆分为按比例分配的每月金额。

我认为因此我们必须使用与创建初始订单时相同的机制重新计费 - 使用 CC 编号和 CVV2 代码。但显然我们不能存储 CVV2 代码以符合 PCI 的要求!!

我最近遇到了'BrainTrees' payment services - 它允许您创建初始交易并检索代表该信用卡号的“令牌”。该令牌可以安全地存储,因为它对小偷毫无用处。它有助于最大限度地减少 PCI 合规性所需的工作。

我完全可以使用 BrainTree 的解决方案。它似乎非常适合我们的需求——但它让我对 Paypal 的产品感到困惑。我如何在无需存储 CVV2 代码的情况下使用 BrainTree 以外的任何系统实现我想要做的事情?

【问题讨论】:

【参考方案1】:

这篇文章很好地解释了围绕 CVV2 号码重复计费的问题,值得一读: http://kb.modularmerchant.com/a378-credit-card-security-codes.php

【讨论】:

【参考方案2】:

您可能已经知道 cvv2 用于 avs/csc 检查,该检查通过获取客户地址中的数字、邮政/邮政编码中的数字和 cvv2 中的数字并将它们与保存的已知值进行比较来完成发卡机构。

avs/csc 检查的结果返回一个三位数的值,让您知道地址/cvv2 值是否与发卡机构保存的文件相匹配。然后可以使用此检查的结果来帮助防止欺诈交易。

因此,解决无法存储实际 cvv2 代码问题的常用方法是存储 cvv2 结果。这样您就可以相当确信只要地址没有被更改,该卡仍然有效。这种方法的唯一缺点是一些收单银行认为在没有 cvv2 检查的情况下执行的授权是不安全的,并且收取更高的交换率。您可能需要与您的收单行讨论这一点,以说明只有第一次授权是使用 cvv2 check 执行的,而后续的则不会。

总而言之,如果您改为使用允许您持有令牌值而不是实际卡号的服务提供商,您会发现 PCI 合规性要容易得多。

我不确定您是否考虑过定期付款的另一个问题是,卡会随着时间的推移而过期、被取消或重新发行。 Visa 和 MasterCard 都有一个相对较新的服务,称为 Visa Account Updater 或 MasterCard Automatic Billing Updater 来处理这个问题。您需要与收单银行一起组织它,或者如果您使用 PSP 路线,它可能会自动处理 - 但值得检查。

【讨论】:

如果没有 CVV2 代码,显然不会收取更高的交换率 - 根据 BrainTree:braintreepaymentsolutions.com/blog/… 听起来不错。在欧洲,我们确实有一些收购方会改变汇率。例如,我曾与巴克莱讨论过这个问题。 巴克莱银行的措辞如下,印刷精美! barclaycardbusiness.co.uk/existing_customers/accepting_cards/… "使用这些服务不是强制性的,但是通过使用它可以确保您不会为每件没有卡安全码处理的项目产生额外的非安全交易费用"【参考方案3】:

大多数网关不需要 cvv 即可工作。该代码本质上表示“存在信用卡”,不应用于重复交易。

Braintree 似乎是一个不错的选择,如果您不想要符合 PCI 的麻烦(我必须这样做,并不难,但需要创建相当多的流程)

【讨论】:

我只是厌倦了使用 Braintrees 的“独特”功能并依赖它们,如果它们不能真正降低我们的 PCI 合规性复杂性。 @everyone 的回答表明我可以使用原始交易中的参考号。如果这是真的,那么我看不到 Braintree 真的在这种情况下用他们的“保险库”提供任何特别的东西 我们 (Braintree) 可以通过消除您环境中信用卡数据的传输来显着降低您的 PCI 合规性复杂性。我们的透明重定向 API (braintreepaymentsolutions.com/credit-card-storage/tokenization) 允许您在结帐过程中保留控制权和品牌,而无需接触任何信用卡号码。【参考方案4】:

自从我不得不做这样的事情以来已经有一段时间了......而且 我只使用了 Verisign Payflow API。您可能想检查一下。

据我所知,支付网关强烈建议不要存储卡详细信息。

推荐的机制是使用原始交易中的参考号,然后将新交易链接到它;它必须与 Brain Tree 处理它的方式非常相似。

【讨论】:

所以我会存储一个蒙面的 CC 号码以供将来参考(这样我就可以告诉用户用卡付款 *************1234) - 连同参考号码对于初始交易。 paypal payflow 似乎并没有使这个选择成为一个显而易见的选择。您知道此链接是否有特定的“名称”吗? 我记不太清了;已经好几年了。如果你有 API,试试 Reference Transactions (i tink)

以上是关于如何在不存储 CVV 代码的情况下每 2 个月向某人收取可变金额?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不完全影响主屏幕绘图性能的情况下每 200/250 毫秒更新一次小部件?

如何在不首先克隆的情况下“连接”一个 git 存储库?

如何在不将密码保存在数据库中的情况下验证用户身份

如何在不使用for循环的情况下合并需要提前3个月的列上的两个数据框

存储 CVV/CVC 电话是不是符合 PCI 标准?

如何在不本地存储的情况下知道图像文件大小