全面披露:我在布伦特里工作。如果您还有其他问题,请随时联系
支持人员。
实际上,您可以在 Client Token 生成选项中设置一个名为failOnDuplicatePaymentMethod的参数。如果此选项作为 True 传递并且付款方式已添加到 Vault,则请求将失败。这只能在 customer_id 也被传递的情况下被传递。如果检查失败,此选项将阻止 Drop-in 返回 payment_method_nonce。不幸的是,这不适用于 Paypal 付款方式,并且有一些解决方法。
不存储在保险库中
您首先需要在客户端回调中收集客户的 PayPal 电子邮件帐户。当支付类型是 PayPalAccount 时,您可以在用户的电子邮件上运行 Braintree::Customer.search() 请求。如果这带来了拥有您指定的 PayPal 电子邮件帐户(从客户端集成中检索到)的任何客户,您不需要保管该帐户,您可以简单地继续在现有令牌上创建另一个交易。
删除重复帐户
第二种解决方法与第一种类似。您像往常一样收集客户的 PayPal 付款方式(收集 nonce 并将其传递到您的服务器),然后在 Braintree::PaymentMethod.create 或 Braintree::Customer.create API 请求中使用它照常。在返回的结果对象中,您可以检查此 PayPal 交易的详细信息 paypal_details 并检查它以找到电子邮件地址。如果此电子邮件与该客户的 PayPal 帐户匹配,您可以选择立即删除新的付款方式。
如果您需要更多帮助,请随时联系 Braintree 支持。