Esempio n. 1
0
        // GET: Cart
        public ActionResult Index(string message)
        {
            var cart = (CartViewModel)Session["Cart"];
            //if (cart == null) return RedirectToAction("Index");

            var model = new PaymentCartViewModel
            {
                Cart         = cart,
                ErrorMessage = message
            };

            return(View("Cart", model));
        }
Esempio n. 2
0
        public ActionResult Index(PaymentCartViewModel model)
        {
            var cart = (CartViewModel)Session["Cart"];

            //if (cart == null) return RedirectToAction("Index");
            model.Cart = cart;

            if (ModelState.IsValid)
            {
                var userId = User.Identity.GetUserId();
                var user   = UserManager.FindById(userId);

                var order = new Order
                {
                    UserId   = user.Id,
                    Projects = model.Cart.Items.Select(x => x.Project).ToList()
                };
                _db.Orders.Add(order);
                _db.SaveChanges();

                var orderCrypto = new OrderStrCrypto
                {
                    OrderId = order.Id,
                    UserId  = user.Id
                };
                var orderId                   = orderCrypto.Encrypt();
                var paymentFailureUrl         = string.Format("{0}://{1}/PaymentGateway/PaymentFailure?orderId={2}", Request.Url.Scheme, Request.Url.Authority, orderId);
                var expressCheckoutSuccessUrl = string.Format("{0}://{1}/PaymentGateway/ExpressCheckoutSuccess?orderId={2}", Request.Url.Scheme, Request.Url.Authority, orderId);
                var result = PayPalService.Pay(user.Email, model.Cart, expressCheckoutSuccessUrl, paymentFailureUrl);
                if (result.Success)
                {
                    return(Redirect(result.RedirectUrl));
                }
                else
                {
                    model.ErrorMessage = result.ErrorMessage;
                }
            }
            return(View("Cart", model));
        }