コード例 #1
0
        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")));
        }
コード例 #2
0
 /// <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;
 }