在braintree金库问题中进入双重客户

时间:2016-01-06 14:35:59

标签: php braintree

完成交易后,在保险库下有两个客户入场。

我接下来的步骤:

1. Created customer.
//first customer vault entry is created at this point 
$customerParams = Braintree_Customer::create(array(
                    'firstName' => $firstName,
                    'lastName' => $lastName,
                  ));

2.然后生成clientToken

Braintree_ClientToken::generate(array(
   "customerId" => $customerParams->customer->id
));

3.然后在api的帮助下成功地在js中生成了nonce:

var client = new braintree.api.Client({clientToken: ctoken});
client.tokenizeCard({
...
...
});

4.此时此新客户已创建

Braintree_Transaction::sale(array(
 'amount' => $mapCidInvoiceID['amount'],
 'orderId' =>  $redirectParams['invoiceID'],
 'paymentMethodNonce' => $nonce,
 'options' => array(
    'storeInVaultOnSuccess' => true,
 ),
));

我的代码中有什么问题吗?为什么一个交易创建了两个客户记录?对于第一个记录,记录名字和姓氏。但第二种情况没有存储这样的细节。 第二步和第三步需要首先创建客户。

1 个答案:

答案 0 :(得分:2)

完全披露:我在Braintree工作。

您的代码正在创建两个单独的客户,因为当您调用Transaction :: sale时,它没有来自您的Customer :: create调用的客户,并且您可以选择将付款方式存储在Vault中成功。这样可以在从交易中保存付款方式时创建客户,因为付款方式必须与客户绑定。要解决您的问题,请在调用Transaction :: sale时将Customer :: create返回的客户ID作为customerId参数传递。

Braintree_Transaction::sale(array(
  'amount' => $mapCidInvoiceID['amount'],
  'orderId' =>  $redirectParams['invoiceID'],
  'customerId' => $customerParams->customer->id
  'paymentMethodNonce' => $nonce,
  'options' => array(
    'storeInVaultOnSuccess' => true,
  ),
));