如果存在,Braintree保险库不应存储相同的付款方式

时间:2017-12-06 10:33:57

标签: php paypal braintree braintree-sandbox

我与Braintree有问题,

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

但是,如果客户选择已经在金库中的新付款方式:

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

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

所以在我的情况下,我不想为同一个用户存储两次或更多次相同的付款方式(Paypal或卡),

如何限制,以便相同的付款方式不应多次存储在保险库中?

1 个答案:

答案 0 :(得分:0)

完全披露:我在Braintree工作。如果您有任何其他问题,请随时联系 support

实际上,您可以在名为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支持人员联系。