Как сгенерировать токен с банковским счетом в полосе?

Я интегрировал полосу в свой проект Android. Теперь я генерирую токен с картой в полосе. Это работает нормально. Но я хочу создать токен с банковским счетом. Я искал в StackOverflow некоторые ссылки. Но это не сработало для меня. Есть ли способ создать токен полосы с банковским счетом в Android?

Следующий код, который я использовал. Но это не сработало.

        Stripe.apiKey = "sk_test_...";

        Map<String, Object> tokenParams = new HashMap<String, Object>();
        Map<String, Object> bank_accountParams = new HashMap<String, Object>();
        bank_accountParams.put("country", "US");
        bank_accountParams.put("currency", "usd");
        bank_accountParams.put("account_holder_name", "Jane Austen");
        bank_accountParams.put("account_holder_type", "individual");
        bank_accountParams.put("routing_number", "11000000");
        bank_accountParams.put("account_number", "000123456789");
        tokenParams.put("bank_account", bank_accountParams);

        try {
            Token s = Token.create(tokenParams);
            Log.d("Token",s.getId());
            tokens = s.getId();
        } catch (AuthenticationException e) {
            showAlertMessage("",e.getMessage());
        } catch (CardException e) {
            showAlertMessage("",e.getMessage());
        } catch (APIException e) {
            showAlertMessage("",e.getMessage());
        } catch (InvalidRequestException e) {
            showAlertMessage("", e.getMessage());
        } catch (APIConnectionException e) {
            showAlertMessage("",e.getMessage());
        }

person madhan kumar    schedule 14.11.2016    source источник


Ответы (3)


В соответствии с новыми документами вам нужно добавить следующую строку в сборку gradle:

compile 'com.stripe:stripe-android:4.0.1'

проверьте наличие последней версии по этой ссылке

Затем используйте следующий фрагмент кода:

Stripe stripe = new Stripe(this);
stripe.setDefaultPublishableKey("your_publishable_key");
BankAccount bankAccount = new BankAccount("accountNumber","countryCode","currency","routingNumber");
stripe.createBankAccountToken(bankAccount, new TokenCallback() {
    @Override
    public void onError(Exception error) {
        Log.e("Stripe Error",error.getMessage());
    }

    @Override
    public void onSuccess(com.stripe.android.model.Token token) {
        Log.e("Bank Token", token.getId());
    }
});

Это должно работать как шарм.

person Rahul Sharma    schedule 16.05.2017
comment
Я знаю, что это старый пост, но все же кто-нибудь знает, как получить поддерживаемую страну, валюту, номер маршрута из любого API или у полосы есть API для этого? - person shine_joseph; 07.01.2019

Я сделал ошибку в своем коде. То есть Token.create(tokenParams); нужно обрабатывать в AysncTask. Потому что он имеет дело с сетью. После прохождения их репозиторий git я узнал. Итак, я обработал эту часть создания токена в асинхронной задаче. Код, который я изменил, приведен ниже:

int SDK_INT = android.os.Build.VERSION.SDK_INT;
        final String[] tokens = {"new"};
        Stripe.apiKey = "sk_test_0wgmvQOVjIpspIgKsoW7wtTp";
        final Map<String, Object> tokenParams = new HashMap<String, Object>();
        Map<String, Object> bank_accountParams = new HashMap<String, Object>();
        bank_accountParams.put("country", "US");
        bank_accountParams.put("currency", "usd");
        bank_accountParams.put("account_holder_name", "Jayden Moore");
        bank_accountParams.put("account_holder_type", "individual");
        bank_accountParams.put("routing_number", "110000000");
        bank_accountParams.put("account_number", "000123456789");
        tokenParams.put("bank_account", bank_accountParams);
        final Token[] responseToken = {null};

        if (SDK_INT > 8)
        {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                    .permitAll().build();
            StrictMode.setThreadPolicy(policy);
            //your codes here
            com.stripe.Stripe.apiKey = "sk_test_0wgmvQOVjIpspIgKsoW7wtTp";
            new AsyncTask<Void, Void, Token>() {
                String errorMsg = null;

                @Override
                protected Token doInBackground(Void... params) {
                    try {
                        return Token.create(tokenParams);
                    } catch (AuthenticationException e) {
                        e.printStackTrace();
                        return null;
                    } catch (InvalidRequestException e) {
                        e.printStackTrace();
                        return null;
                    } catch (APIConnectionException e) {
                        e.printStackTrace();
                        return null;
                    } catch (CardException e) {
                        e.printStackTrace();
                        return null;
                    } catch (APIException e) {
                        e.printStackTrace();
                        return null;
                    }
                }

                protected void onPostExecute(Token result) {
                    if (errorMsg == null) {
//                      success
                    } else {
//                        handleError(errorMsg);
                    }
                }
            }.execute();

    }
person madhan kumar    schedule 15.11.2016

У меня была такая же проблема, и я исправил ее, изменив эту строку

compile 'com.stripe:stripe-android:+

в эту строку

compile 'com.stripe:stripe-android:1.1.1'

в моем файле app.gradle. Это может измениться для будущих выпусков.

person Pafoid    schedule 20.12.2016