Как вы просматриваете прорацию с помощью Stripe.NET? - PullRequest
1 голос
/ 18 апреля 2019

Я следую примеру, приведенному в документации Stripe на Предварительный просмотр Proration , используя библиотеку Stripe.NET, чтобы попытаться найти сумму, которая будет взиматься при переходе клиента с плана А на план Б.

Однако, когда я использую пример кода в документации, я получаю сообщение об ошибке:

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 Ответ

1 голос
/ 18 апреля 2019

Оказывается, 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);
...