public ActionResult <RetrieveSubscriptionInformationResponse> RetrieveSubscriptionInformation([FromBody] RetrieveSubscriptionInformationRequest req) { if (!ModelState.IsValid) { return(this.FailWithMessage("invalid params")); } var options = new SubscriptionGetOptions(); options.AddExpand("latest_invoice"); options.AddExpand("customer.invoice_settings.default_payment_method"); options.AddExpand("items.data.price.product"); var service = new SubscriptionService(); Subscription subscription; try { subscription = service.Get(req.Subscription, options); } catch (StripeException e) { return(this.FailWithMessage($"Failed to retrieve subscription with ID ({req.Subscription}): {e}")); } var invoiceOptions = new UpcomingInvoiceOptions { Subscription = req.Subscription, }; var invoiceService = new InvoiceService(); Invoice upcomingInvoice; try { upcomingInvoice = invoiceService.Upcoming(invoiceOptions); } catch (StripeException e) { return(this.FailWithMessage($"Failed to retrieve upcoming invoice: {e}")); } var item = subscription.Items.Data[0]; return(new RetrieveSubscriptionInformationResponse { Card = subscription.Customer.InvoiceSettings.DefaultPaymentMethod.Card, ProductDescription = item.Price.Product.Name, CurrentPrice = item.Price.Id, CurrentQuantity = item.Quantity, LatestInvoice = subscription.LatestInvoice, UpcomingInvoice = upcomingInvoice, }); }
private Stripe.Subscription GetStripeSubscription(string subscriptionId) { StripeConfiguration.ApiKey = _appKeys.StripeApiKey; var service = new SubscriptionService(); var options = new SubscriptionGetOptions(); options.AddExpand("default_payment_method"); var subscription = service.Get(subscriptionId, options); return(subscription); }