在Braintree中存储和检索借记卡和信用卡详细信息

时间:2017-06-27 11:03:40

标签: android paypal braintree

我正在使用Braintree's v2 drop-in ui android进行付款,我的后端服务器位于node.js。我已成功实施付款部分,但现在我需要自动存储card details并从存储的debit/credit cardpaypal account中扣除金额。

我正在生成客户端令牌并将该令牌存储在我的数据库中。使用该令牌我生成nonce。然后我将nonce发送到transaction.sale()的后端服务器。

以下是付款部分的代码段

if (!TextUtils.isEmpty(braintreeClientToken)) {
    DropInRequest dropInRequest = new DropInRequest()
                    .clientToken(braintreeClientToken);
    startActivityForResult(dropInRequest.getIntent(this), REQUEST_CODE);
}

OnActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE) {
        if (resultCode == Activity.RESULT_OK) {
            DropInResult result = data.getParcelableExtra(DropInResult.EXTRA_DROP_IN_RESULT);
            PaymentMethodNonce paymentMethodNonce = result.getPaymentMethodNonce();
            String nonce = "";
            if (paymentMethodNonce != null)
                nonce = paymentMethodNonce.getNonce();
            // use the result to update your UI and send the payment method nonce to your server
            if (!TextUtils.isEmpty(nonce)) {
                NonceRequest obj = new NonceRequest("ANDROID", "1",
                            "DRIVER-SAVE-PAYMENT", "1", nonce);
                Call<NonceResponse> call = RestService.getInstance().restInterface.sendNonceToServer(userId, userToken, obj);
                    call.enqueue(new Callback<NonceResponse>() {
                    @Override
                    public void onResponse(Call<NonceResponse> call, Response<NonceResponse> response) {

                    }

                    @Override
                    public void onFailure(Call<NonceResponse> call, Throwable t) {

                    }
                });
            }
        } else if (resultCode == Activity.RESULT_CANCELED) {
            // the user canceled
        } else {
            // handle errors here, an exception may be available in
            Exception error = (Exception) data.getSerializableExtra(DropInActivity.EXTRA_ERROR);
        }
    }
}

有人可以告诉我存储credit/debit cardpaypal account详细信息并从存储的payment-method

中生成nonce的步骤

1 个答案:

答案 0 :(得分:4)

完全披露:我在Braintree工作。如果您有任何其他问题,请随时联系support

您要完成的大部分内容都将在服务器端进行更改。如果您想存储卡,您可以传入选项参数storeInVaultOnSuccess,这将成功保存该卡并使用该卡创建关联客户。否则,您也可以将该随机数传递到PaymentMethod.Create来电。如果这些调用成功,将为那些您可以重复使用的卡创建一个令牌。根据您声明的事实,您希望自动扣除金额&#34;,我认为您可能希望使用该令牌设置订阅。为此,您需要创建一个plan,这是您在控制面板中订阅的模板。然后,您想要使用您创建的存储令牌实际创建subscription。如果您希望这些已保存的卡片显示在Drop-in中供客户选择,您需要将customer_id传递给ClientToken.generate调用。这将允许客户从列表中选择存储的卡并在Drop-in中重复使用。