private static void AddSubscriptionInputs(SubscriptionAddRequest request, SqlParameterCollection inputCollection) { inputCollection.AddWithValue("@UserId", request.UserId); inputCollection.AddWithValue("@SubscriptionId", request.SubscriptionId); inputCollection.AddWithValue("@CustomerId", request.CustomerId); inputCollection.AddWithValue("@IsSubscriptionActive", request.IsSubscriptionActive); if (request.DateEnded != null) { inputCollection.AddWithValue("@DateEnded", request.DateEnded); } }
public void UpdateSubscription(SubscriptionAddRequest request) { string procname = "[dbo].[StripeSubscriptions_UpdateV2]"; _data.ExecuteNonQuery(procname , delegate(SqlParameterCollection inputCollection) { AddSubscriptionInputs(request, inputCollection); }, null ); }
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)); }
public SubscriptionAddResult SubscriptionAdd(SubscriptionAddRequest request) { int userId; this.TryGetUserId(out userId); _userSubscriptionRepository.CreateAsync(new UserSubscription { UserId = userId, FriendUserId = request.UserId.Id }).Wait(); var subscriptions = GetUserSubscriptions(new[] { new UserId(userId) }); return(new SubscriptionAddResult { Result = new ServiceResult <List <UserSubscriptions> > { Data = subscriptions.ToList() } }); }
public ActionResult <SuccessResponse> CancelSubscription(string id) { int responseCode = 200; BaseResponse responseData = null; try { StripeConfiguration.ApiKey = _appKeys.StripeApiKey; Stripe.Subscription stripeSubscription = CancelStripeSubscription(id); if (stripeSubscription == null) { responseCode = 404; responseData = new ErrorResponse("Item was not found"); return(StatusCode(responseCode, responseData)); } SubscriptionAddRequest request = new SubscriptionAddRequest(); request.SubscriptionId = id; request.UserId = _authService.GetCurrentUserId(); request.CustomerId = stripeSubscription.CustomerId; request.IsSubscriptionActive = stripeSubscription.Status == "active"; request.DateEnded = stripeSubscription.EndedAt; _service.UpdateSubscription(request); responseData = new SuccessResponse(); } catch (Exception exception) { responseCode = 500; responseData = new ErrorResponse($"Generic Error: {exception.Message}"); base.Logger.LogError(exception.ToString()); } return(StatusCode(responseCode, responseData)); }
public int AddSubscription(SubscriptionAddRequest request) { int id = 0; string procName = "[dbo].[StripeSubscriptions_InsertV2]"; _data.ExecuteNonQuery( procName, delegate(SqlParameterCollection inputCollection) { AddSubscriptionInputs(request, inputCollection); SqlParameter outputId = new SqlParameter("@Id", SqlDbType.Int); outputId.Direction = ParameterDirection.Output; inputCollection.Add(outputId); }, delegate(SqlParameterCollection returnCollection) { object outputOfId = returnCollection["@Id"].Value; int.TryParse(outputOfId.ToString(), out id); } ); return(id); }
public ActionResult <ItemResponse <Stripe.Subscription> > UpdateSubscriptionPayment(StripeSubUpdatePaymentRequest model) { int responseCode = 200; BaseResponse responseData = null; try { StripeConfiguration.ApiKey = _appKeys.StripeApiKey; //Update Customer Billing Options Customer customer = UpdateStripeCustomer(model.CustomerId, model.BillingDetails); if (customer == null) { responseCode = 404; responseData = new ErrorResponse("Customer information was not updated."); return(StatusCode(responseCode, responseData)); } // Attach payment method to customer PaymentMethod paymentMethod = AttachStripePaymentMethod(model.CustomerId, model.PaymentMethodId); if (paymentMethod == null) { responseCode = 404; responseData = new ErrorResponse("Payment method was not attached."); return(StatusCode(responseCode, responseData)); } ; // Update stripe subscription Newtonsoft.Json.Linq.JObject subscriptionRawJObject = UpdateStripeSubscriptionPayment(model).RawJObject; string subscriptionString = subscriptionRawJObject.ToString(); Stripe.Subscription stripeSubscription = JsonConvert.DeserializeObject <Stripe.Subscription>(subscriptionString); if (stripeSubscription == null) { responseCode = 404; responseData = new ErrorResponse("Subscription was not updated."); return(StatusCode(responseCode, responseData)); } else { responseData = new ItemResponse <Stripe.Subscription>() { Item = stripeSubscription } }; // 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)); }
public ActionResult <ItemResponse <Stripe.Subscription> > CreateSubscription(StripeSubAddRequest model) { int responseCode = 200; BaseResponse responseData = null; try { /* add step to check if user is subscribed? */ int userId = _authService.GetCurrentUserId(); StripeConfiguration.ApiKey = _appKeys.StripeApiKey; Sabio.Models.Domain.Stripe.Subscription existingSubscription = _service.GetSubscriptionByUserId(userId); if (existingSubscription != null) { responseCode = 404; responseData = new ErrorResponse("Subscription already exists."); return(StatusCode(responseCode, responseData)); } Customer customer = UpdateStripeCustomer(model.CustomerId, model.BillingDetails); if (customer == null) { responseCode = 404; responseData = new ErrorResponse("Customer information was not updated."); return(StatusCode(responseCode, responseData)); } // Attach payment method to customer PaymentMethod paymentMethod = AttachStripePaymentMethod(model.CustomerId, model.PaymentMethodId); if (paymentMethod == null) { responseCode = 404; responseData = new ErrorResponse("Payment method was not attached."); return(StatusCode(responseCode, responseData)); } ; // Create stripe subscription Newtonsoft.Json.Linq.JObject subscriptionRawJObject = CreateStripeSubscription(model).RawJObject; string subscriptionString = subscriptionRawJObject.ToString(); Stripe.Subscription stripeSubscription = JsonConvert.DeserializeObject <Stripe.Subscription>(subscriptionString); if (stripeSubscription == null) { responseCode = 404; responseData = new ErrorResponse("Subscription was not created."); return(StatusCode(responseCode, responseData)); } else { responseData = new ItemResponse <Stripe.Subscription>() { Item = stripeSubscription } }; // Create database subscription SubscriptionAddRequest request = new SubscriptionAddRequest(); request.SubscriptionId = stripeSubscription.Id; request.UserId = _authService.GetCurrentUserId(); request.CustomerId = stripeSubscription.CustomerId; if (stripeSubscription.Status == "active") { request.IsSubscriptionActive = true; } else { request.IsSubscriptionActive = false; } request.DateEnded = stripeSubscription.EndedAt; int id = _service.AddSubscription(request); if (id == 0) { responseCode = 404; responseData = new ErrorResponse("Subscription was not saved."); return(StatusCode(responseCode, responseData)); } ; } catch (StripeException e) { switch (e.StripeError.Type) { case "card_error": responseCode = (int)e.HttpStatusCode; responseData = new ErrorResponse(e.StripeError.Message); base.Logger.LogError(e.ToString()); break; case "api_connection_error": break; case "api_error": break; case "authentication_error": break; case "invalid_request_error": break; case "rate_limit_error": break; case "validation_error": break; default: // Unknown Error Type break; } } catch (Exception exception) { responseCode = 500; responseData = new ErrorResponse($"Generic Error: {exception.Message}"); base.Logger.LogError(exception.ToString()); } return(StatusCode(responseCode, responseData)); }