0

我对 Braintree 有疑问,

假设客户登录我的网站,然后我为该客户创建客户令牌(通过在Braintree\ClientToken::generate()函数中传递客户 ID),这样如果他有任何现有的付款方式,那么它将在客户端自动加载。

但如果客户选择已在保险库中的新付款方式:

对于卡相同的卡号,对于 Paypal 相同的电子邮件地址,

然后它会自动为该客户添加到保险库中,无论它是否存在,

因此,就我而言,我不想为同一用户存储相同的付款方式(Paypal 或卡)两次或更多次,

我怎样才能限制相同的付款方式不应该在保险库中多次存储?

4

1 回答 1

0

全面披露:我在布伦特里工作。如果您还有其他问题,请随时联系 支持人员

实际上,您可以在 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 支持。

于 2017-12-06T17:15:52.347 回答