【发布时间】:2015-06-07 17:05:38
【问题描述】:
尝试使用 Braintree 设置 iOS 和 PHP 支付系统。
我可以用
设置一个 clientToken$clientToken["client_token"] = Braintree_ClientToken::generate());
return ($clientToken);
我可以通过以下方式处理第一笔付款:
$result = Braintree_Transaction::sale(array(
'amount' => '1',
'paymentMethodNonce' => $nonce,
'customer' => array(
'id' => 'testId',
'firstName' => 'John',
'lastName' => 'Doe',
'email' => 'john@doe.com',
),
'options' => array(
'submitForSettlement' => true,
'storeInVaultOnSuccess' => true,
)
));
但是,当我尝试处理第二笔付款时,我收到了错误:
91609 – Customer ID has already been taken.
如何为具有相同 customerId ('testId') 的同一客户处理第二笔付款 - 为什么在我尝试使用现有客户 ID 进行付款时会引发错误?当然,它应该只是将付款附加给同一位客户吗?不就是为了这个吗?
编辑: 因此,在环顾四周后,我发现了另一个可以包含在 Braintree_Transaction::sale 中的字段,如下所示:
'customerId' => 'testId',
所以这将允许我重新使用存储在 Braintree 保险库中的 customerId。然而,对于第一次交易,我得到了错误:
91510 – Customer ID is invalid.
所以我最终遇到了第 22 个问题 - 我可以将第一组代码用于新客户,但不能用于回头客,我可以将第二组代码用于回头客,但不能用于新客户。我不能同时使用两者。所以我的解决方案是创建我自己的本地数据库条目,确定用户之前是否通过 Braintree 支付过,并相应地替换代码。有没有更精简的方法?
【问题讨论】: