条带:在订阅时设置连接帐户时出现问题

stripe: problems setting connected account on subscription

我在为 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 键以使用测试键,但我有同样的问题。

非常感谢, 阿德里安

在与 Stripe 支持人员交谈后,我似乎以错误的方式进行了操作。

为此,他们有不同的方式来称呼目的地费用(这里是 the link

基本上,不是使用 RequestOptions,而是在订阅中有一个名为 TransferData 的选项,您可以在其中放置连接的帐户 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 支持团队!