在Braintree中,是否可以仅为一个客户而不是整个保险库验证重复的付款方式?

Rev*_*ent 7 php braintree

对于Braintree_PaymentMethod :: create()函数,其中一个选项是:

'failOnDuplicatePaymentMethod', bool

如果传递此选项并且已将支付方法添加到Vault,则请求将失败.此选项不适用于PayPal付款方式.

这似乎是一个全球比较.即,如果保险库中存在信用卡信息,无论客户ID如何,这都将失败.

有没有办法检查特定客户的重复项?

Ray*_*erg 9

完全披露:我在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";
    }
} 
Run Code Online (Sandbox Code Playgroud)

根据您的目的,您可以删除新的付款方式或其他任何您需要的方法.