private Stripe.Subscription UpdateStripeSubscriptionPlan(StripeSubUpdatePlanRequest request) { StripeConfiguration.ApiKey = _appKeys.StripeApiKey; var service = new SubscriptionService(); Stripe.Subscription subscription = service.Get(request.SubscriptionId); var items = new List <SubscriptionItemOptions> { new SubscriptionItemOptions { Id = subscription.Items.Data[0].Id, Price = request.PriceId, } }; var options = new SubscriptionUpdateOptions { Items = items, }; options.AddExpand("latest_invoice.payment_intent"); subscription = service.Update(request.SubscriptionId, options); return(subscription); }
public ActionResult <ItemResponse <Stripe.Subscription> > UpdateSubscriptionPlan(StripeSubUpdatePlanRequest model) { int responseCode = 200; BaseResponse responseData = null; try { StripeConfiguration.ApiKey = _appKeys.StripeApiKey; // Update stripe subscription Newtonsoft.Json.Linq.JObject subscriptionRawJObject = UpdateStripeSubscriptionPlan(model).RawJObject; string subscriptionString = subscriptionRawJObject.ToString(); Stripe.Subscription stripeSubscription = JsonConvert.DeserializeObject <Stripe.Subscription>(subscriptionString); responseData = new ItemResponse <Stripe.Subscription>() { Item = stripeSubscription }; if (stripeSubscription == null) { responseCode = 404; responseData = new ErrorResponse("Subscription was not updated."); return(StatusCode(responseCode, responseData)); } ; // Update database subscription SubscriptionAddRequest request = new SubscriptionAddRequest(); request.SubscriptionId = stripeSubscription.Id; request.UserId = _authService.GetCurrentUserId(); request.CustomerId = stripeSubscription.CustomerId; request.IsSubscriptionActive = stripeSubscription.Status == "active"; request.DateEnded = stripeSubscription.EndedAt; _service.UpdateSubscription(request); } catch (Exception exception) { responseCode = 500; responseData = new ErrorResponse($"Generic Error: {exception.Message}"); base.Logger.LogError(exception.ToString()); } return(StatusCode(responseCode, responseData)); }