/// <summary> /// Retrieves the StripeCustomer associated with the given IStripeUser instance /// </summary> /// <param name="user"></param> /// <returns></returns> public static StripeCustomer RetrieveCustomer(IStripeUser user) { var customerService = new StripeCustomerService(); StripeCustomer stripeCustomer = customerService.Get(user.PaymentSystemId); return(stripeCustomer); }
/// <summary> /// Creates a new customer record in Stripe for the given user /// NOTE: Save changes on the underlying context for the model after calling this method /// </summary> /// <param name="user"></param> public static void CreateCustomer(IStripeUser user, string paymentToken = null) { // Do not overwrite the user, ever if (user.HasPaymentInfo()) { return; } var newCustomer = new StripeCustomerCreateOptions(); newCustomer.Email = user.Email; if (paymentToken != null) { newCustomer.Card = new StripeCreditCardOptions() { TokenId = paymentToken } } ; var customerService = new StripeCustomerService(); StripeCustomer stripeCustomer = customerService.Create(newCustomer); // Set the accounting info user.PaymentSystemId = stripeCustomer.Id; System.Diagnostics.Trace.TraceInformation("Created customer in stripe: '{0}' with id '{1}", user.Email, user.PaymentSystemId); }
/// <summary> /// Creates or update a customer /// </summary> /// <param name="user"></param> /// <param name="paymentToken"></param> public static void CreateOrUpdateCustomer(IStripeUser user, string paymentToken = null) { if (user.HasPaymentInfo()) { UpdateCustomer(user, paymentToken); } else { CreateCustomer(user, paymentToken); } }
/// <summary> /// Changes the given subscription to use the new plan /// </summary> /// <param name="subscription"></param> /// <param name="newPlan"></param> public static void ChangeSubscriptionPlan(IStripeUser user, IStripeSubscription subscription, IStripeSubscriptionPlan newPlan) { StripeSubscriptionUpdateOptions options = new StripeSubscriptionUpdateOptions() { PlanId = newPlan.PaymentSystemId }; var subscriptionService = new StripeSubscriptionService(); subscriptionService.Update(user.PaymentSystemId, subscription.PaymentSystemId, options); System.Diagnostics.Trace.TraceInformation("Changed subscription for customer in stripe: '{0}' with new subscription id '{1}", user.Email, subscription.PaymentSystemId); }
/// <summary> /// Unsubscribes the given subscription /// NOTE: Save changes on the underlying context for the model after calling this method /// </summary> /// <param name="subscription"></param> public static void Unsubscribe(IStripeUser user, IStripeSubscription subscription) { if (string.IsNullOrEmpty(subscription.PaymentSystemId) || string.IsNullOrEmpty(user.PaymentSystemId)) { return; } var subscriptionService = new StripeSubscriptionService(); subscriptionService.Cancel(subscription.PaymentSystemId, user.PaymentSystemId); subscription.PaymentSystemId = null; System.Diagnostics.Trace.TraceInformation("Unsuscribed customer in stripe: '{0}' with new subscription id '{1}", user.Email, subscription.PaymentSystemId); }
/// <summary> /// Subscribes the given user to the given plan, using the payment information already in stripe for that user /// NOTE: Save changes on the underlying context for the model after calling this method /// </summary> /// <param name="subscription"></param> public static void Subscribe(IStripeUser user, IStripeSubscription subscription, IStripeSubscriptionPlan plan) { if (!string.IsNullOrEmpty(subscription.PaymentSystemId)) { return; } var subscriptionService = new StripeSubscriptionService(); StripeSubscription stripeSubscription = subscriptionService.Create(user.PaymentSystemId, plan.PaymentSystemId); subscription.PaymentSystemId = stripeSubscription.Id; System.Diagnostics.Trace.TraceInformation("Subscribed customer in stripe: '{0}' with new subscription id '{1}", user.Email, subscription.PaymentSystemId); }
/// <summary> /// Updates a customer record, using the given payment token /// NOTE: Save changes on the underlying context for the model after calling this method /// </summary> /// <param name="user"></param> /// <param name="paymentToken"></param> public static void UpdateCustomer(IStripeUser user, string paymentToken = null) { var customerUpdate = new StripeCustomerUpdateOptions() { Email = user.Email }; // Create a token for this payment token customerUpdate.Card = new StripeCreditCardOptions() { TokenId = paymentToken }; var customerService = new StripeCustomerService(); StripeCustomer stripeCustomer = customerService.Update(user.PaymentSystemId, customerUpdate); System.Diagnostics.Trace.TraceInformation("Updated customer in stripe: '{0}' with id '{1}", user.Email, user.PaymentSystemId); }
/// <summary> /// Creates a new customer record in Stripe for the given user /// NOTE: Save changes on the underlying context for the model after calling this method /// </summary> /// <param name="user"></param> public static void CreateCustomer(IStripeUser user, string paymentToken = null) { // Do not overwrite the user, ever if (user.HasPaymentInfo()) return; var newCustomer = new StripeCustomerCreateOptions(); newCustomer.Email = user.Email; if (paymentToken != null) newCustomer.Card = new StripeCreditCardOptions() { TokenId = paymentToken }; var customerService = new StripeCustomerService(); StripeCustomer stripeCustomer = customerService.Create(newCustomer); // Set the accounting info user.PaymentSystemId = stripeCustomer.Id; System.Diagnostics.Trace.TraceInformation("Created customer in stripe: '{0}' with id '{1}", user.Email, user.PaymentSystemId); }
/// <summary> /// Changes the given subscription to use the new plan /// </summary> /// <param name="subscription"></param> /// <param name="newPlan"></param> public static void ChangeSubscriptionPlan(IStripeUser user, IStripeSubscription subscription, IStripeSubscriptionPlan newPlan) { StripeSubscriptionUpdateOptions options = new StripeSubscriptionUpdateOptions() { PlanId = newPlan.PaymentSystemId }; var subscriptionService = new StripeSubscriptionService(); subscriptionService.Update(user.PaymentSystemId, subscription.PaymentSystemId, options); System.Diagnostics.Trace.TraceInformation("Changed subscription for customer in stripe: '{0}' with new subscription id '{1}", user.Email, subscription.PaymentSystemId); }
/// <summary> /// Unsubscribes the given subscription /// NOTE: Save changes on the underlying context for the model after calling this method /// </summary> /// <param name="subscription"></param> public static void Unsubscribe(IStripeUser user, IStripeSubscription subscription) { if (string.IsNullOrEmpty(subscription.PaymentSystemId) || string.IsNullOrEmpty(user.PaymentSystemId)) return; var subscriptionService = new StripeSubscriptionService(); subscriptionService.Cancel(subscription.PaymentSystemId, user.PaymentSystemId); subscription.PaymentSystemId = null; System.Diagnostics.Trace.TraceInformation("Unsuscribed customer in stripe: '{0}' with new subscription id '{1}", user.Email, subscription.PaymentSystemId); }
/// <summary> /// Subscribes the given user to the given plan, using the payment information already in stripe for that user /// NOTE: Save changes on the underlying context for the model after calling this method /// </summary> /// <param name="subscription"></param> public static void Subscribe(IStripeUser user, IStripeSubscription subscription, IStripeSubscriptionPlan plan) { if (!string.IsNullOrEmpty(subscription.PaymentSystemId)) return; var subscriptionService = new StripeSubscriptionService(); StripeSubscription stripeSubscription = subscriptionService.Create(user.PaymentSystemId, plan.PaymentSystemId); subscription.PaymentSystemId = stripeSubscription.Id; System.Diagnostics.Trace.TraceInformation("Subscribed customer in stripe: '{0}' with new subscription id '{1}", user.Email, subscription.PaymentSystemId); }
/// <summary> /// Creates or update a customer /// </summary> /// <param name="user"></param> /// <param name="paymentToken"></param> public static void CreateOrUpdateCustomer(IStripeUser user, string paymentToken = null) { if (user.HasPaymentInfo()) UpdateCustomer(user, paymentToken); else CreateCustomer(user, paymentToken); }
/// <summary> /// Updates a customer record, using the given payment token /// NOTE: Save changes on the underlying context for the model after calling this method /// </summary> /// <param name="user"></param> /// <param name="paymentToken"></param> public static void UpdateCustomer(IStripeUser user, string paymentToken = null) { var customerUpdate = new StripeCustomerUpdateOptions() { Email = user.Email }; // Create a token for this payment token customerUpdate.Card = new StripeCreditCardOptions() { TokenId = paymentToken }; var customerService = new StripeCustomerService(); StripeCustomer stripeCustomer = customerService.Update(user.PaymentSystemId, customerUpdate); System.Diagnostics.Trace.TraceInformation("Updated customer in stripe: '{0}' with id '{1}", user.Email, user.PaymentSystemId); }
/// <summary> /// Retrieves the StripeCustomer associated with the given IStripeUser instance /// </summary> /// <param name="user"></param> /// <returns></returns> public static StripeCustomer RetrieveCustomer(IStripeUser user) { var customerService = new StripeCustomerService(); StripeCustomer stripeCustomer = customerService.Get(user.PaymentSystemId); return stripeCustomer; }
/// <summary> /// Returns true if the given user has payment information attached /// Otherwise, returns false /// </summary> /// <param name="user"></param> /// <returns></returns> public static bool HasPaymentInfo(this IStripeUser user) { return(!string.IsNullOrEmpty(user.PaymentSystemId)); }