Braintree交易销售存储在valult和正确使用nonce和令牌

时间:2015-10-25 16:37:06

标签: php paypal braintree

我有几个问题:

我可以在销售中存储信用卡/ 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
  ]);
}

2 个答案:

答案 0 :(得分:2)

要回答您的上一个问题,如果您在创建促销时同时包含paymentMethodTokencustomerId,我们要求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 相匹配?确保一个客户方法的代币不能用于完成另一个客户的销售。感谢