使用Stripe.NET如何预览比例分配?

3

我按照Stripe文档中预览Proation的示例,使用Stripe.NET库,尝试查找客户从A计划升级到B计划时将被收取的金额。

然而,当我使用文档中的代码示例时,我遇到了一个错误:

UpcomingInvoiceOptions options = new UpcomingInvoiceOptions()
{
    CustomerId = "cus_XXXXXXXXXXXXX",
    SubscriptionProrationDate = DateTime.UtcNow,
    SubscriptionItems = new List<InvoiceSubscriptionItemOptions>()
    {
        new InvoiceSubscriptionItemOptions()
        {
            Id = "si_XXXXXXXXXXXXXX", // Current Sub Item
            PlanId = "plan_XXXXXXXXXXXX" // New plan
        }
    }
};
InvoiceService service = new InvoiceService();
var result = service.Upcoming(options);

最后一行抛出了一个 Stripe.StripeException 异常: 无法在没有订阅的情况下更新订阅项目。
1个回答

2
原来如果您没有先调用`service.Get`,那么此操作需要填写`options.SubscriptionId`字段。以下代码可产生正确的结果:
```html

看起来如果你不先调用service.Get,对于此操作options.SubscriptionId是一个必填项。

下面的代码可以产生正确的结果:

```
UpcomingInvoiceOptions options = new UpcomingInvoiceOptions()
{
    CustomerId = "cus_XXXXXXXXXXXXX",
    SubscriptionId = "sub_XXXXXXXXXXXX",
    SubscriptionProrationDate = DateTime.UtcNow,
    SubscriptionItems = new List<InvoiceSubscriptionItemOptions>()
    {
        new InvoiceSubscriptionItemOptions()
        {
            Id = "si_XXXXXXXXXXXXXX", // Current Sub Item
            PlanId = "plan_XXXXXXXXXXXX" // New plan
        }
    }
};
InvoiceService service = new InvoiceService();
var result = service.Upcoming(options);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接