对于Braintree_PaymentMethod :: create()函数,其中一个选项是:
'failOnDuplicatePaymentMethod', bool
如果传递此选项并且已将支付方法添加到Vault,则请求将失败.此选项不适用于PayPal付款方式.
这似乎是一个全球比较.即,如果保险库中存在信用卡信息,无论客户ID如何,这都将失败.
有没有办法检查特定客户的重复项?
完全披露:我在Braintree工作.如果您有任何其他问题,请随时联系支持.
您和Evan是正确的:无论客户创建,这都是唯一预先构建的重复创建方式.但是,您可以实现自己尝试使用自己的自动化.
为此,只需从客户对象中收集已存在的信用卡唯一ID.然后,在创建新的付款方式时,将其与现有卡进行比较:
function extractUniqueId($creditCard){ return $creditCard->uniqueNumberIdentifier; } $customer = Braintree_Customer::find('your_customer'); $unique_ids = array_map(extractUniqueId,$customer->creditCards); $result = Braintree_PaymentMethod::create(array( 'customerId' => 'your_customer', 'paymentMethodNonce' => 'fake-valid-discover-nonce', )); if ($result->success) { if(in_array(extractUniqueId($result->paymentMethod), $unique_ids)) { echo "Do your duplicate logic"; } else { echo "Continue with your unique logic"; } }
根据您的目的,您可以删除新的付款方式或其他任何您需要的方法.