Ошибка платы за приложение в Stripe Terminal (Прямая оплата) - PullRequest
0 голосов
/ 04 августа 2020

Я хочу собирать плату за приложение в концепции прямого начисления с помощью Stripe Terminal, но получаю сообщение об ошибке: «Можно применить application_fee_amount только тогда, когда PaymentIntent пытается осуществить прямой платеж (с использованием ключа OAuth или заголовка Stripe-Account)». когда я использую целевую зарядку, он работает нормально, но я хочу использовать прямую зарядку. приведенный ниже код предназначен для кода пункта назначения. Пожалуйста, помогите мне получить прямую оплату за регистрацию.

public void paymentIntent() {
    PaymentIntentParameters params = new PaymentIntentParameters.Builder()
            .setAmount(usdamount)
            .setCurrency("usd")
            .setApplicationFeeAmount(usdapplicationfee)
            .setDescription("Order#" + orderref)
            .setMetadata(initialMetadata)
            .setOnBehalfOf(accountid)
            .setTransferDataDestination(accountid)
            .build();
    Terminal.getInstance().createPaymentIntent(params, new PaymentIntentCallback() {
        @Override
        public void onSuccess(PaymentIntent paymentIntent) {
            collecetpayment(paymentIntent);
        }

        @Override
        public void onFailure(TerminalException exception) {
            accounterror(exception.getErrorMessage(), exception.getMessage());
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            finish();
        }

    });
}

1 Ответ

0 голосов
/ 04 августа 2020

Это немного сложно, потому что для успешной прямой оплаты в подключенной учетной записи должны существовать PaymentIntent, Reader, Location и Connection . Это означает, что при создании этих объектов вы должны передать заголовок Stripe-Account .

Если вы используете прямые начисления, все объекты API терминала принадлежат подключенным учетным записям.

Вот последовательность действий для создания прямого списания с оплатой за приложение с помощью Терминала:

  1. Ваш сервер создает PaymentIntent для подключенной учетной записи (передавая заголовок Stripe-Account) и устанавливает приложение плату.
  2. (только p400) Ваш сервер создает Location для подключенной учетной записи
  3. (только p400) Ваш сервер регистрирует Reader в этом Location (передавая заголовок Stripe-Account)
  4. Ваш сервер создает маркер подключения для подключенной учетной записи

Обратите внимание, что шаги 2 и 3 применимы только к считывателю Verifone - считыватель на основе Bluetooth зарегистрирует себя и текущее местоположение вашего приложения при интеграции с помощью Stripe Terminal SDK.

После инициализации Терминала подключением из шага 4 вы можете передать P aymentIntent от Step1 до Terminal.instance (). collectPaymentMethod (), .processPayment (). Поскольку Connection и PaymentIntent привязаны к подключенной учетной записи, Terminal SDK сможет обрабатывать прямые платежи.

В настоящее время в документации Stripe нет примера, Так что, если вы застряли, я бы рекомендовал спросить на их канале IR C (#stripe on freenode) или написать в службу поддержки Stripe.

...