我正在实现 3DS 2.0 与 Braintree 订阅的集成。 Braintree 的文档不够清晰,无法回答我的问题,而且 Braintree 支持根本没有帮助。以下是我的问题:
- 什么时候是执行卡验证的最佳时机:将卡添加到保险库时还是创建订阅时?也许我应该在这两种情况下都这样做两次?
- 将卡添加到保险库时应使用多少金额来验证卡?应该是 0 美元、1 美元还是我应该依赖 Braintree 网关在我未传递金额时选择的金额?
- 将卡添加到保险库时执行的 3DS 2.0 验证能否保证以后(创建订阅时)我可以在没有 3DS 的情况下向卡收取数百、数千美元?
- 如果在创建订阅时应执行验证,这样做是否正确:
- 使用付款方式 token 从 Braintree 获取 PaymentMethodNoce
- 使用随机数验证卡并获取新的随机数
- 使用第2步中获得的Nonce作为SubscriptionRequest中的PaymentMethodNonce参数
- 如果我降低或提高订阅价格会怎样?我必须使用 3DS 重新验证吗?我应该重新验证更新后的价格吗?
- 我正在使用按比例分配机制。 3DS 会以任何方式影响这一点吗?
- 如果用于创建订阅的 3DS 验证卡更换为新卡,会发生什么情况?应该使用多少金额来验证新卡(就像第二个问题一样)?
- 如何在无需 3DS 重新验证的情况下提高订阅价格?
- 是否有示例代码说明如何使用 3DS 和订阅?
Braintree 似乎不知道如何回答这些问题,或者出于某种原因不想这样做。支持非常差。我非常感谢任何反馈。
最佳答案
我与 Braintree 联系时也有类似的问题。我想我可以回答你的问题。这是我对情况的看法:
最好的时刻是当您知道订阅价格时。您应按照卡验证期间指定的金额向保管卡收取费用(有一些异常(exception)情况,例如不需要验证的小额金额)。如果您跳过验证,那么您似乎要对欺诈行为负责,而不是银行。如果您验证的金额低于您尝试收取的金额,我想银行可以拒绝该交易。
您无法验证金额为 0 美元的卡。我试过了。我的假设是您不验证保管卡。知道金额后,您可以从保险库中选择一张卡,验证其金额并使用从 3DS 获得的随机数更新订阅。
当金额增加时,您应该再次执行验证。我的观点是,您可以跳过 3DS 以进行更高金额的后续付款,但您对潜在的欺诈负全部责任。如果您使用新金额执行 3DS,则责任将转移给银行。
是的,这似乎是正确的。
是的,您应该使用 3DS 重新验证。验证始终要求您指定金额,因此请使用新金额进行验证。
我一分钟前收到了 Braintree 的回复。这应该不是问题。升级订阅时,您可以根据每月价格验证该卡。按比例分配的金额将小于该金额。如果您收取的金额低于验证金额,银行也不会太在意。
我在这里使用每月订阅金额。
只需使用新金额更新订阅即可。不过,我认为如果您跳过 3DS,您将再次承担欺诈责任。
developers.braintree.com 充满了示例。对于 3DS,请参阅 https://developers.braintreepayments.com/guides/3d-secure/client-side/javascript/v3
我有类似的问题,Braintree 支持团队快速且非常有帮助地回答了这些问题。
关于c# - 3D Secure 2.0 与 Braintree 订阅集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57371506/