【问题标题】:stripe: problems setting connected account on subscription条纹:在订阅时设置连接帐户时出现问题
【发布时间】:2021-04-04 11:38:56
【问题描述】:

我在为 Stripe 订阅添加金额时遇到了一些问题。看看this documentation,我应该可以在创建订阅时添加一个连接的帐户,这样我就可以为订阅设置申请费,而无需事后对其进行任何修改。

我正在尝试在订阅创建时使用 RequestOptions 来添加连接的条带帐户,但似乎如果我使用它,它会重定向到真实帐户,并且找不到我正在使用的客户,使请求失败.

下面是整个流程的代码:

        attachPayMethodToCustomer(bookingDetails.getPaymentMethod(), user.getCustomerId());
        Price price = getPriceForItem(item, bookingDetails.isExclusive());

        SubscriptionCreateParams.Item item = SubscriptionCreateParams.Item.builder()
                .setQuantity(1L)
                .setPrice(price.getId())
                .build();

        BigDecimal bd = new BigDecimal(calculateSubscriptionFee(price.getUnitAmount() / 100, bookingDetails.isRecorded()), new MathContext(2, RoundingMode.HALF_UP));

        SubscriptionCreateParams.Builder params = SubscriptionCreateParams.builder()
                .setCustomer(user.getCustomerId())
                .setApplicationFeePercent(bd)
                .addItem(item);

        if (bookingDetails.hasExtras()) {
            Price recordPrice = getExtrasPrice(seller().getCurrency());
            SubscriptionCreateParams.Item extraItem = SubscriptionCreateParams.Item.builder()
                    .setQuantity(1L)
                    .setPrice(extraPrice.getId())
                    .build();

            params.addItem(extraItem);
        }

        RequestOptions ro = new RequestOptions.RequestOptionsBuilder()
                .setStripeAccount(seller.getStripeAccountId())
                .build();

        Subscription subscription = Subscription.create(params.build(), ro);

我在尝试创建订阅时收到此异常:

com.stripe.exception.InvalidRequestException:没有这样的客户:'cus_IaFZjrBAlBsXXX';代码:resource_missing; request-id: req_C67JN4tgneXXXX 但我可以在仪表板上看到客户。我还尝试覆盖条带 api 密钥以使用测试密钥,但我有同样的问题。

非常感谢, 阿德里安

【问题讨论】:

  • "No such..." 错误通常是由于 API 密钥不匹配(例如使用测试和实时密钥的混合)或尝试访问存在于不同帐户上的对象引起的(例如,尝试从您的平台帐户对已连接帐户上创建的对象执行操作)。在您的情况下,您应该检查客户是否存在于seller.getStripeAccountId() 中设置的帐户中。
  • 我一直在调试它,在我看来一切正常。事实上,我可以在开发人员仪表板上看到错误,我可以通过那里的请求数据上提供的链接找到给我错误的客户。也许我的帐户有问题,我发送了一个请求到条带支持,试图找出问题所在。我也会在这里发布他们的答案

标签: java stripe-payments subscription


【解决方案1】:

在与 Stripe 支持人员交谈后,看来我的做法是错误的。

为此,他们以不同的方式调用目的地费用(这里是the link

基本上,在订阅中有一个名为 TransferData 的选项,而不是使用 RequestOptions,您可以在其中放置 Connected 帐户 ID。这是他们网络上的示例

SubscriptionCreateParams params = SubscriptionCreateParams.builder()
  .setCustomer("cus_XXXXXXX")
  .addItem(SubscriptionCreateParams.Item.builder()
    .setPrice("price_XXXXX")
    .build())
  .setTransferData(
    SubscriptionCreateParams.TransferData.builder()
      .setDestination("{{CONNECTED_STRIPE_ACCOUNT_ID}}")
      .build())
  .addExpand("latest_invoice.payment_intent")
  .build();
Subscription subscription = Subscription.create(params);

非常感谢 Stripe 支持团队!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 2018-12-12
    • 2016-05-09
    • 2021-09-24
    • 2016-11-26
    • 2020-04-29
    • 1970-01-01
    相关资源
    最近更新 更多