Ejemplo n.º 1
0
 private void InsertPurchaseOptions(Models.Entities.Order order)
 {
     foreach (var cartItem in _cartService.GetCartItems())
     {
         var option = _context.PurchaseOptions.Find(cartItem.PurchaseOptionId);
         if (option != null)
         {
             order.Items.Add(option);
         }
     }
 }
Ejemplo n.º 2
0
        public async Task <ActionResult> Pay()
        {
            var apiContext = _paypalService.GetApiContext();

            if (_cartService.GetCartSize() == 0)
            {
                return(RedirectToAction("Index"));                                 //Dont process if cart is empty
            }
            var order = new Models.Entities.Order();

            var paymentParams = new PaypalPaymentParams
            {
                Context       = apiContext,
                Currency      = PaypalPaymentParams.PaymentCurrency.EUR,
                Items         = _cartService.GetCartItems(),
                OrderId       = order.Id,
                RedirectUrl   = GetReturnUrl(order.Id.ToString()),
                Shipping      = 1,
                TaxPercentage = 0.2m
            };
            var payment = _paypalService.CreatePayment(paymentParams);

            var user = await _context.Users.Where(u => u.Email.Equals(User.Identity.Name)).FirstAsync();

            order.PaymentId = payment.id;
            order.Total     = paymentParams.Total;
            order.SubTotal  = paymentParams.SubTotal;
            order.Tax       = paymentParams.Tax;
            order.Currency  = paymentParams.Currency;
            order.Shipping  = paymentParams.Shipping;
            InsertPurchaseOptions(order);
            user.Orders.Add(order);
            try
            {
                var redirectUrl = GetPayPalRedirectUrl(payment);
                _context.SaveChanges();
                _cartService.ClearCart();
                return(Redirect(redirectUrl));
            }
            catch (Exception ex)
            {
                while (ModelState.GetEnumerator().MoveNext())
                {
                    Debug.WriteLine(ModelState.GetEnumerator().Current.Value.Errors.First());
                }
                Debug.Write(ex.Message);
                throw ex;
            }
        }