Cordova Braintree集成-用户信用卡详细信息仅一次

Cordova Braintree集成-用户信用卡详细信息仅一次,cordova,paypal,braintree,Cordova,Paypal,Braintree,我们正在开发一个类似于Uber的cordova应用程序。 工作流程很简单:用户请求一项服务,分配一名员工,工作完成后,按小时数向用户收费 我让服务器从braintree生成客户端令牌 $clientToken = Braintree_ClientToken::generate(); 并且可以要求用户在第一次请求中只输入一次他的信用卡详细信息,然后我创建一个Braintree_客户对象 $result = Braintree_Customer::create(array(

我们正在开发一个类似于Uber的cordova应用程序。 工作流程很简单:用户请求一项服务,分配一名员工,工作完成后,按小时数向用户收费

我让服务器从braintree生成客户端令牌

    $clientToken = Braintree_ClientToken::generate();
并且可以要求用户在第一次请求中只输入一次他的信用卡详细信息,然后我创建一个Braintree_客户对象

$result = Braintree_Customer::create(array(
                            'paymentMethodNonce' => $payment_token
                        ));
并将令牌存储在我的数据库中

    $payment = new Payment;
    $payment->owner_id = $owner_id;
    $payment->customer_id = $customer_id;
    $payment->last_four = $last_four;
    $payment->card_token = $result->customer->creditCards[0]->token;
    $payment->save();
我可以将此客户id用于所有后续交易吗

Braintree_Transaction::sale(array(
                            'amount' => $total,
                            'paymentMethodNonce' => $customer_id
                            ));
在这种情况下,我们希望用户只输入一次卡的详细信息,下一次他创建另一个请求时,即使在一个月左右之后,我们也应该能够向他开具账单,而不必输入卡的详细信息


我可以得到一个简单的工作流程来说明我们如何实现这一点吗?如果有的话,还有一些例子吗?

看起来您希望对Transaction.sale使用paymentMethodToken键,以该令牌字符串作为值,对特定客户存储的支付方法收费

result = braintree.Transaction.sale({
    'amount' => $total,
    'paymentMethodToken' => 'token_string'
})

因此,对于所有后续事务,您都希望使用paymentMethodToken并传入该令牌字符串,与传递客户ID相反。

您好,“token\u string”到底是什么?我从哪里可以得到它,我有一个注册客户,他已经提供了他的信用卡数据,我不想让他再这样做?@Maxlight这可以在中找到。该属性将返回客户存储的付款方式列表。每个支付方式都将包含与之关联的令牌字符串。谢谢我现在看到:)顺便说一句,我正在使用托管字段进行信用卡输入和paypal支付,我应该如何处理它们?我是否应该检查是否有存储的付款方式,是否没有显示托管字段,或者如果存在使用付款方式的退货客户,是否应该以不同的方式初始化?听起来这完全取决于您,但我认为在您的Braintree Vault中找到该客户并首先检查他们是否有任何存储的付款方式是合乎逻辑的。