braintree集成导致Android问题

RaR*_*aRa 8 android braintree

我从服务器获取客户端令牌,但是当调用设置BraintreeFramgent时,它会说Tokenization Key或客户端令牌无效..

之后如果我点击按钮然后OnActivityResult考虑RESULT_CANCELED并显示对话框.

下面的代码

compile 'com.braintreepayments.api:braintree:2.+'

compile 'com.braintreepayments.api:drop-in:2.+'
Run Code Online (Sandbox Code Playgroud)

java文件

String clientToken;
private BraintreeFragment mBraintreeFragment;
private String mNonce;
Run Code Online (Sandbox Code Playgroud)

在OnCreate

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Warning, signature verification is disabled for this demo only, you should never
        // do this as it opens a security hole
        PayPalSignatureVerification.disableAppSwitchSignatureVerification();


        clienttoken();
    }
Run Code Online (Sandbox Code Playgroud)

clienttoken()

public void clienttoken() {
        AsyncHttpClient client = new AsyncHttpClient();
        client.get("http://......&action=clientToken", new TextHttpResponseHandler() {
            @Override
            public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, String responseString) {
                clientToken = responseString;
                setup();
                //Toast.makeText(MainActivity.this, clientToken, Toast.LENGTH_LONG).show();
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

建立()

private void setup() {
        try {

            mBraintreeFragment = BraintreeFragment.newInstance(this, clientToken);

        } catch (InvalidArgumentException e) {
            showDialog(e.getMessage());
        }
    }
Run Code Online (Sandbox Code Playgroud)

按钮单击

public void launchDropIn(View v) {
        startActivityForResult(onBraintreeSubmit().getIntent(this), DROP_IN_REQUEST);
    }
Run Code Online (Sandbox Code Playgroud)

onBraintreeSubmit()

public PaymentRequest onBraintreeSubmit() {
        PaymentRequest paymentRequest = new PaymentRequest()
                .clientToken(clientToken)
                .primaryDescription(getString(R.string.cart))
                .secondaryDescription("1 Item")
                .amount("$1.00")
                .submitButtonText(getString(R.string.buy));

        return paymentRequest;
    }
Run Code Online (Sandbox Code Playgroud)

onActivityResult

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);



        if (resultCode == Activity.RESULT_OK) {
            PaymentMethodNonce paymentMethodNonce =
                    data.getParcelableExtra(BraintreePaymentActivity.EXTRA_PAYMENT_METHOD_NONCE);

            if (Settings.isThreeDSecureEnabled(this)) {
                mLoading = ProgressDialog.show(this, getString(R.string.loading),
                        getString(R.string.loading), true, false);
                ThreeDSecure.performVerification(mBraintreeFragment, mNonce, "1");
            } else {
                mCreateTransactionButton.setEnabled(true);
            }
        } else if (resultCode != RESULT_CANCELED) {
            safelyCloseLoadingView();
            showDialog(data.getStringExtra(BraintreePaymentActivity.EXTRA_ERROR_MESSAGE));
        }
    }
Run Code Online (Sandbox Code Playgroud)

我对Android中的Braintree集成是全新的.问题是什么 我哪里错了?或者还有什么建议.

小智 3

全面披露:我在布伦特里工作。

您收到的警告表明您生成的客户端令牌可能不正确。使用此处给出的示例有效客户端令牌测试您的集成。如果有效,请检查以确保您正在使用的 Braintree 网关(沙盒或生产)的 API 密钥在您的项目中设置正确。您可以通过选择帐户 > 我的用户 > 查看 API 密钥从 Braintree 控制面板找到您的 API 密钥。请勿在 Stack Overflow 上发布您的 API 密钥。 如果您在集成时仍然遇到问题或有任何其他问题,请联系 Braintree支持