Warm tip: This article is reproduced from serverfault.com, please click

java-条带:在订阅上设置关联帐户时出现问题

(java - stripe: problems setting connected account on subscription)

发布于 2020-12-27 11:07:59

我在向Stripe的订阅添加金额费用时遇到一些问题。查看此文档,我应该能够在创建订阅时添加一个已关联的帐户,这样我就可以为订阅设置申请费,而无需随后对其进行任何修改。

我正在尝试在订阅创建中使用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,但我可以在 dashboard 上看到客户。我也尝试重写Stripe api密钥以使用测试之一,但是我也遇到了同样的问题。

非常感谢,Adrián

Questioner
Acampoh
Viewed
0
Acampoh 2020-12-29 22:22:02

与Stripe支持人员交谈后,似乎我做错了方法。

为此,他们采用了不同的方式来收取目的地费用(此处是链接

基本上,而不是使用RequestOptions,在订阅中有一个名为TransferData的选项,你可以在其中放置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);

非常感谢条纹支持团队!