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

Braintree Integration - User Credit Card Details only once

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

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

    $clientToken = Braintree_ClientToken::generate();

并且可以要求用户在第一次请求时只输入一次他的信用卡详细信息,之后我创建一个 Braintree_customer 对象

$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。