我有几个问题:
我可以在销售中存储信用卡/ paypal方法,还可以防止重复吗?或者重复使用 storeInVaultOnSuccess 时只会产生错误。 “重复方法”错误会导致销售失败吗?
我可以使用 Braintree_Transaction :: sale 创建客户吗? “重复客户”错误会导致销售失败吗?
有没有办法合并为 paymentMethodNonce 和 paymentMethodToken 执行“或/或”?
最后是安全问题。 Braintree是否确保客户的 paymenthMethodToken 与销售的 customerId 相匹配?确保一个客户方法的代币不能用于完成另一个客户的销售。
if($paymentMethodNonce){
if($save){
$create=Braintree_PaymentMethod::create([
"customerId"=>$customerId,
"paymentMethodNonce"=>$paymentMethodNonce,
"options"=>["failOnDuplicatePaymentMethod"=>true]
]);
}
$sale=Braintree_Transaction::sale([
"amount"=>$cost,
"paymentMethodNonce"=>$paymentMethodNonce,
"customerId"=>$customerId
]);
}
else if($paymentMethodToken){
$sale=Braintree_Transaction::sale([
"amount"=>$cost,
"paymentMethodToken"=>$paymentMethodToken,
"customerId"=>$customerId
]);
}
答案 0 :(得分:2)
要回答您的上一个问题,如果您在创建促销时同时包含paymentMethodToken
和customerId
,我们要求paymentMethodToken
属于所提供的{customerId
所指定的客户1}}。如果它不属于指定的客户,我们会抛出Transaction Error代码91516
(除非payment_method属于客户,否则无法同时提供payment_method_token和customer_id)。
答案 1 :(得分:1)
您可以在销售交易中创建客户和付款方式,但它们会在重复上创建错误,从而导致销售失败。最好的方法是创建和忽略错误
$create_customer=Braintree_Customer::create([
"id"=>$id,
]);
$create_payment_method=Braintree_PaymentMethod::create([
"customerId"=>$login,
"paymentMethodNonce"=>$method
]);
接下来,组合paymentMethodNonce和paymentMethodToken的唯一方法是根据正在处理的方式进行切换。
$TokenOrNonceType="paymentMethodToken"; or $TokenOrNonceType="paymentMethodNonce";
$sale=Braintree_Transaction::sale([
"amount"=>$cost,
$TokenOrNonceType=>$TokenOrNonce,
"customerId"=>$customerId
]);
最后,我仍然不确定最后一个问题。 Braintree是否确保客户的 paymenthMethodToken 与销售的 customerId 相匹配?确保一个客户方法的代币不能用于完成另一个客户的销售。感谢