Как получить PaymentMethodNonce и deviceData на Braintree Android PayPal Vault Payment - PullRequest
0 голосов
/ 09 июля 2020
• 1000 . Я не могу взимать плату с клиента без paymentMethodNonce, пожалуйста, кто-нибудь может мне помочь.
mBraintreeFragment = BraintreeFragment.newInstance(this,"TOKEN_FROM_SERVER");
PayPalRequest request = new PayPalRequest().localeCode("US").billingAgreementDescription("Your agreement description");
            PayPal.requestBillingAgreement(mBraintreeFragment, request);
            mBraintreeFragment.addListener(createdListener);
            mBraintreeFragment.addListener(cancelListener);
            mBraintreeFragment.addListener(errorListener);
            DataCollector.collectDeviceData(mBraintreeFragment, new BraintreeResponseListener<String>() {
                @Override
                public void onResponse(String deviceData) {
                    Log.e("PayPal", deviceData);
                    try {
                        JSONObject json = new JSONObject(deviceData);
                        deviceDataInfo = json.getString("correlation_id");
                        Log.e("PayPal", deviceDataInfo);


                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
    }

});

Мои слушатели

PaymentMethodNonceCreatedListener createdListener = new PaymentMethodNonceCreatedListener() {
        @Override
        public void onPaymentMethodNonceCreated(PaymentMethodNonce paymentMethodNonce) {
            String nonce = paymentMethodNonce.getNonce();
            Log.d("PayPal", "nonce id  " + nonce);
        }
};

 BraintreeCancelListener cancelListener = new BraintreeCancelListener() {
        @Override
        public void onCancel(int requestCode) {
            Log.d("CreditCard", "Braintree Error Code  " + requestCode);
        }
    };

    BraintreeErrorListener errorListener = new BraintreeErrorListener() {
        @Override
        public void onError(Exception error) {
            if (error instanceof ErrorWithResponse) {
                ErrorWithResponse errorWithResponse = (ErrorWithResponse) error;
                BraintreeError cardErrors = errorWithResponse.errorFor("creditCard");
                if (cardErrors != null) {
                    List<BraintreeError> errors = cardErrors.getFieldErrors();
                    String err = Objects.requireNonNull(errors.get(0).getMessage());
                    Log.d("CreditCard", errors.toString());
                }
            }
        }
    };

1 Ответ

0 голосов
/ 09 июля 2020

Вместо того, чтобы вручную добавлять ваших слушателей к этому запросу, лучше просто реализовать интерфейс из braintree.

Например, если вы хотите использовать onPaymentMethodNonceCreated (), просто добавьте «реализует PaymentMethodNonceCreatedListener» после вашего класса name.

public class "YourClass" implements PaymentMethodNonceCreatedListener {
//...
}

И затем переопределите метод, который теперь предупреждает Android Studio:

@Override
    public void onPaymentMethodNonceCreated(PaymentMethodNonce paymentMethodNonce) {
        String nonce = paymentMethodNonce.getNonce();
        //...
    }

Таким образом, вы можете go для всех ваших слушателей! Удачи!

...