public ActionResult Payment(PaymentInformationModel data)
        {
            if (CurrentUser.Payment != null)
            {
                return(RedirectToAction <UserController>(c => c.Index()));
            }
            if (ModelState.IsValid)
            {
                //var subscription = SubscriptionRequest.CreateMonthly(CurrentUser.Email, "Hatley",
                //    AuthorizeNetConfigurationSection.Price);
                //subscription.CardNumber = data.CartNumber;
                //subscription.CardCode = data.CardCode;
                //subscription.CardExpirationMonth = (int)data.ExpirationMonth;
                //subscription.CardExpirationYear = (int)data.ExpirationYear;
                //subscription.StartsOn = DateTime.UtcNow;
                //subscription.WithBillingAddress(new Address()
                //{
                //    First = data.FirstName,
                //    Last = data.LastName,
                //    Phone = CurrentUser.PhoneNumber
                //});

                //ISubscriptionRequest payment = null;
                CustomerInfo info = new CustomerInfo
                {
                    CardNumber = data.CartNumber,
                    Cvc        = data.CardCode,
                    Email      = CurrentUser.Email,
                    ExpMonth   = data.ExpirationMonth.ToString(),
                    ExpYear    = data.ExpirationYear.ToString(),
                    FullName   = CurrentUser.FullName
                };
                try
                {
                    payment.CreateSubscription(info, planId);
                    CurrentUser.Payment = new Payment
                    {
                        PaymentId      = payment.PaymentId,
                        PaymentDateUTC = DateTime.UtcNow,
                        CardNumber     = data.CartNumber.Substring(data.CartNumber.Length - 4)
                    };
                }
                catch (Exception e)
                {
                    logger.Error("Error while saving payment", e);
                    ModelState.AddModelError("", "Invalid payment information!");
                    return(View(data));
                }


                UnitOfWork.Commit();
                return(RedirectToAction <UserController>(c => c.Index()));
            }
            return(View(data));
        }