2016-01-06 22 views
2

完成交易後,保險櫃下有兩個客戶輸入。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.Then與API的幫助下成功地生成JS現時:

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, 
), 
)); 

我的代碼有什麼問題嗎?爲什麼一次交易創建了兩個客戶記錄?記錄第一個記錄的名字和姓氏。但第二種情況不存儲這些細節。 第二步和第三步需要第一次創建客戶。

+0

另一種解決方案是在第一步中忽略客戶創建並生成客戶端令牌而不傳遞任何客戶ID。在交易銷售電話中,傳遞所有客戶信息以及其他信息。 –

回答

2

完全披露:我在布倫特裏工作。

您的代碼創建兩個單獨的客戶,因爲當您調用Transaction :: sale時,它沒有與您的Customer :: create調用綁定的客戶,並且您可以選擇將付款方法存儲在成功的跳躍。當從交易中保存付款方式時,這會創建客戶,因爲付款方式必須與客戶綁定。要解決您的問題,請在調用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, 
), 
));