Example #1
0
        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);
        }
Example #2
0
        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));
        }