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

时间:2019-04-17 22:50:00

标签: c# stripe-payments

我正在按照Previewing Proration上Stripe文档中提供的示例使用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 You cannot update a subscription item without a subscription.

1 个答案:

答案 0 :(得分:1)

如果您不先呼叫options.SubscriptionId,则拒绝service.Get是此操作的必填字段。

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

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);