【问题标题】:Application fees error in Stripe Terminal (Direct charge)Stripe Terminal 中的申请费错误(直接收费)
【发布时间】:2020-08-04 12:47:04
【问题描述】:

我想使用 Stripe 终端以直接收费概念收取申请费,但出现错误“只能在 PaymentIntent 尝试直接付款时应用 application_fee_amount(使用 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();
        }

    });
}

【问题讨论】:

    标签: stripe-payments


    【解决方案1】:

    所以它有点复杂,因为要使直接收费成功,PaymentIntent, Reader, Location, and Connection 必须存在于连接的帐户上。这意味着您必须在创建这些对象时传递the Stripe-Account header

    如果您使用直接收费,所有终端 API 对象都属于关联账户。

    以下是使用终端创建直接收取申请费的流程:

    1. 您的服务器在连接的帐户上创建 PaymentIntent(通过传递 Stripe-Account 标头)并设置申请费。
    2. (仅限 p400)您的服务器在连接的帐户上创建一个位置
    3. (仅限 p400)您的服务器将读取器注册到该位置(传递 Stripe-Account 标头)
    4. 您的服务器在连接的帐户上创建一个连接令牌

    请注意,第 2 步和第 3 步仅适用于 Verifone 阅读器——基于蓝牙的阅读器将在与 Stripe 终端 SDK 集成时注册自身以及您应用的当前位置。

    使用第 4 步中的 Connection 初始化终端后,您可以将第 1 步中的 PaymentIntent 传递给 Terminal.instance().collectPaymentMethod()、.processPayment()。由于 Connection 和 PaymentIntent 都附加到已连接的帐户,因此终端 SDK 将能够处理直接费用。

    目前在 Stripe 文档中似乎没有这样的示例,所以如果您遇到困难,我建议您在他们的 IRC 频道(freenode 上的#stripe)上询问或通过电子邮件发送 Stripe 支持。

    【讨论】:

    • 谢谢,我解决了这个问题。但出现新错误 No such payment_intent: 'pi_************************'。我从服务器获得了 client_secret,并在 retrievePaymentIntent 方法中传递了它,但出现错误
    • 如果您使用直接收费,则在检索或确认 PaymentIntent 时需要传递帐户 ID。目前尚不清楚您在哪个阶段看到此错误,但无论如何“No such : obj_XXXX”通常表明您正在使用另一个帐户上的对象,但没有传递 Stripe-Account 标头。跨度>
    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 2014-02-25
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多