public ActionResult ReadyToCharge() { Ifly.Payments.PaymentOptions options = null; SubscriptionType subscriptionType = SubscriptionType.Basic; string stripeToken = string.Empty, errorCode = string.Empty; SubscriptionDuration duration = SubscriptionDuration.OneMonth; if (Enum.TryParse <SubscriptionType>(Request["SubscriptionType"], out subscriptionType) && !string.IsNullOrEmpty(stripeToken = Request["stripeToken"])) { Enum.TryParse <SubscriptionDuration>(Request["Duration"], out duration); options = new Ifly.Payments.PaymentOptions(subscriptionType, duration); try { Resolver.Resolve <Payments.IPaymentProcessor>().TryCreateCharge(Ifly.ApplicationContext.Current.User.Id, options, stripeToken, GetChargeDescription(options, null)); // Updating subscription type for all user presentations. UpdatePresentationSubscriptionType(Ifly.ApplicationContext.Current.User.Id, subscriptionType); } catch (Ifly.Payments.ChargeException ex) { errorCode = Enum.GetName(typeof(Ifly.Payments.ChargeException.ChargeFailureReason), ex.Reason); Logging.Logger.Current.Write(ex.DiagnosticsData.ToString(), Logging.MessageLevel.Error); MessageQueueManager.Current.GetQueue(MessageQueueType.Email).AddMessages(new Message[] { new Message() { Id = Guid.NewGuid().ToString(), Subject = string.Format("Charge failed ({0})", Guid.NewGuid()), Body = ex.DiagnosticsData.ToString() } }); } } return(Redirect(string.Concat("/account", !string.IsNullOrEmpty(errorCode) ? string.Format("?payment:error={0}", errorCode) : "?payment:success=1"))); }
/// <summary> /// Initializes a new instance of an object. /// </summary> /// <param name="subscription">Subscription type.</param> /// <param name="duration">Subscription duration.</param> public PaymentOptions(SubscriptionType subscription, SubscriptionDuration duration) { this.Subscription = subscription; this.Duration = duration; }