我与Braintree有问题,
假设客户在我的网站上登录,然后我为该客户创建客户端令牌(通过在Braintree\ClientToken::generate()
函数中传递客户ID),
因此,如果他有任何现有的付款方式,那么它将自动加载到客户端。
但是,如果客户选择已经在金库中的新付款方式:
与卡相同的卡号,对于Paypal相同的电子邮件地址,
然后它会自动添加到该客户的保险库中,无论是否存在,
所以在我的情况下,我不想为同一个用户存储两次或更多次相同的付款方式(Paypal或卡),
如何限制,以便相同的付款方式不应多次存储在保险库中?
答案 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支持人员联系。