c# - 3D Secure 2.0 与 Braintree 订阅集成

标签 c# braintree 3d-secure

我正在实现 3DS 2.0 与 Braintree 订阅的集成。 Braintree 的文档不够清晰,无法回答我的问题,而且 Braintree 支持根本没有帮助。以下是我的问题:

  1. 什么时候是执行卡验证的最佳时机:将卡添加到保险库时还是创建订阅时?也许我应该在这两种情况下都这样做两次?
  2. 将卡添加到保险库时应使用多少金额来验证卡?应该是 0 美元、1 美元还是我应该依赖 Braintree 网关在我未传递金额时选择的金额?
  3. 将卡添加到保险库时执行的 3DS 2.0 验证能否保证以后(创建订阅时)我可以在没有 3DS 的情况下向卡收取数百、数千美元?
  4. 如果在创建订阅时应执行验证,这样做是否正确:
    1. 使用付款方式 token 从 Braintree 获取 PaymentMethodNoce
    2. 使用随机数验证卡并获取新的随机数
    3. 使用第2步中获得的Nonce作为SubscriptionRequest中的PaymentMethodNonce参数
  5. 如果我降低或提高订阅价格会怎样?我必须使用 3DS 重新验证吗?我应该重新验证更新后的价格吗?
  6. 我正在使用按比例分配机制。 3DS 会以任何方式影响这一点吗?
  7. 如果用于创建订阅的 3DS 验证卡更换为新卡,会发生什么情况?应该使用多少金额来验证新卡(就像第二个问题一样)?
  8. 如何在无需 3DS 重新验证的情况下提高订阅价格?
  9. 是否有示例代码说明如何使用 3DS 和订阅?

Braintree 似乎不知道如何回答这些问题,或者出于某种原因不想这样做。支持非常差。我非常感谢任何反馈。

最佳答案

我与 Braintree 联系时也有类似的问题。我想我可以回答你的问题。这是我对情况的看法:

  1. 最好的时刻是当您知道订阅​​价格时。您应按照卡验证期间指定的金额向保管卡收取费用(有一些异常(exception)情况,例如不需要验证的小额金额)。如果您跳过验证,那么您似乎要对欺诈行为负责,而不是银行。如果您验证的金额低于您尝试收取的金额,我想银行可以拒绝该交易。

  2. 您无法验证金额为 0 美元的卡。我试过了。我的假设是您不验证保管卡。知道金额后,您可以从保险库中选择一张卡,验证其金额并使用从 3DS 获得的随机数更新订阅。

  3. 当金额增加时,您应该再次执行验证。我的观点是,您可以跳过 3DS 以进行更高金额的后续付款,但您对潜在的欺诈负全部责任。如果您使用新金额执行 3DS,则责任将转移给银行。

  4. 是的,这似乎是正确的。

  5. 是的,您应该使用 3DS 重新验证。验证始终要求您指定金额,因此请使用新金额进行验证。

  6. 我一分钟前收到了 Braintree 的回复。这应该不是问题。升级订阅时,您可以根据每月价格验证该卡。按比例分配的金额将小于该金额。如果您收取的金额低于验证金额,银行也不会太在意。

  7. 我在这里使用每月订阅金额。

  8. 只需使用新金额更新订阅即可。不过,我认为如果您跳过 3DS,您将再次承担欺诈责任。

  9. 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/

相关文章:

node.js - 如何在 Braintree MarketPlace 中从子商户账户退款?

python - 如何在 ECB 模式下解密 3DES(使用单词列表)?

ios - iOS 中的信用卡支付(3-D 安全?)

c# - MonoTouch : App killed for low mem, 为什么?事件字节分配 5 MB 顶部

c# - 在 C# 中从 resx 文件名中提取文化信息的最有效方法是什么?

通过 Braintree SDK 的 Paypal Express Checkout 突然失败(缺少服务商 REST API 应用程序?)

ios - PayPal 用户对用户付款

angularjs - Angular $http.post 返回 404 错误

c# - XDocument.Save(string filename)是重新保存整个文件还是只是更改?

c# - 如何确定网页是否已完全加载到网络浏览器中?