尝试使用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' => '[email protected]',
),
'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进行了付款,并相应地替换了代码。有没有更简化的方法?
我在Braintree工作。如果您需要更多帮助,可以随时与我们的支持团队联系。
您有正确的主意。您需要一边跟踪Braintree是否存在客户ID。
还有一种选择,但我不建议这样做,因为它需要额外的API调用。
您可以先尝试使用Braintree创建客户,如果错误代码为,则忽略错误91510
:
$result = Braintree_Customer::create(array(
'id' => 'testId',
'firstName' => 'John',
'lastName' => 'Doe',
'email' => '[email protected]',
));
然后,您知道该客户已经存在,或者您刚刚创建了该客户,就可以使用第二种方法来创建交易。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句