コード例 #1
0
        public ActionResult CheckOut(CartCheckOut model)
        {
            if (!Utilities.IsValidCart())
            {
                return(RedirectToAction("Index", "home"));
            }

            ServiceResult result = _service.ProcessCart(model, SessionManager.CurrentCart, CurrentUser.UserId);

            if (result.Success)
            {
                var confirmationCode = SessionManager.CurrentCart.ResultingConfirmationCode;
                var cartFocusType    = SessionManager.CurrentCart.CheckOutFocus;
                var eventCity        = (string.IsNullOrEmpty(SessionManager.CurrentCart.EventCity)) ? "" : SessionManager.CurrentCart.EventCity;
                var summary          = _service.GenerateCartSummary(SessionManager.CurrentCart);
                TempData["cartSummary"] = summary;

                // ensure cart focus is correct
                ResetCartFocus();

                SessionManager.CurrentCart = null;
                return(RedirectToAction("ThankYou", new { id = cartFocusType, confirm = confirmationCode, city = eventCity }));
            }

            Utilities.AddModelStateErrors(ModelState, result.GetServiceErrors());
            model.ExpirationMonthList = DirtyGirlExtensions.ConvertToSelectList <Months>();
            model.ExpirationYearList  = Utilities.CreateNumericSelectList(DateTime.Now.Year, DateTime.Now.AddYears(20).Year);
            model.CartSummary         = _service.GenerateCartSummary(SessionManager.CurrentCart);

            return(View(model));
        }
コード例 #2
0
ファイル: CartService.cs プロジェクト: kevmoffo18/DirtyGirl
        private IGatewayResponse ChargeConsumer(CartCheckOut checkOutDetails, CartSummary cartSummary)
        {
            var paymentRequest = new AuthorizationRequest(checkOutDetails.CardNumber,
                                                          string.Format("{0}{1}", checkOutDetails.ExpirationMonth, checkOutDetails.ExpirationYear),
                                                          cartSummary.TotalCost,
                                                          "Dirty Girl Cart Purchase",
                                                          true);

            paymentRequest.FirstName = checkOutDetails.CardHolderFirstname;
            paymentRequest.LastName  = checkOutDetails.CardHolderLastname;
            paymentRequest.Zip       = checkOutDetails.CardHolderZipCode;
            paymentRequest.CardCode  = checkOutDetails.CCVNumber;

            var totalTax = 0.0M;

            foreach (var item in cartSummary.CartItems)
            {
                paymentRequest.AddLineItem(item.PurchaseItemId.ToString(), item.ItemName, item.DiscountDescription, 1, item.ItemTotal, item.Taxable);
                if (item.Taxable)
                {
                    totalTax += (item.StateTax + item.LocalTax);
                }
            }

            paymentRequest.AddTax(totalTax);

            var gateway = new Gateway(DirtyGirlServiceConfig.Settings.PaymentGatewayId, DirtyGirlServiceConfig.Settings.PaymentGatewayKey, true);

            gateway.TestMode = DirtyGirlServiceConfig.Settings.PaymentTestMode;

            return(gateway.Send(paymentRequest));
        }
コード例 #3
0
        public ActionResult CheckOut()
        {
            if (!Utilities.IsValidCart())
            {
                return(RedirectToAction("Index", "home"));
            }

            var vm = new CartCheckOut
            {
                ExpirationMonthList = DirtyGirlExtensions.ConvertToSelectList <Months>(),
                ExpirationYearList  = Utilities.CreateNumericSelectList(DateTime.Now.Year, DateTime.Now.AddYears(20).Year),
                CardHolderFirstname = CurrentUser.FirstName,
                CardHolderLastname  = CurrentUser.LastName,
                CardHolderZipCode   = CurrentUser.PostalCode,
                CartSummary         = _service.GenerateCartSummary(SessionManager.CurrentCart)
            };


            return(View(vm));
        }
コード例 #4
0
ファイル: CartService.cs プロジェクト: kevmoffo18/DirtyGirl
        public ServiceResult ProcessCart(CartCheckOut checkOutDetails, SessionCart tempCart, int userId)
        {
            ServiceResult result = new ServiceResult();

            if (checkOutDetails != null && checkOutDetails.CartSummary != null && checkOutDetails.CartSummary.TotalCost > 0)
            {
                DateTime expired = new DateTime();
                expired.AddYears(checkOutDetails.ExpirationYear);
                expired.AddMonths(checkOutDetails.ExpirationMonth);

                if (DateTime.Now.CompareTo(expired) < 0)
                {
                    result.AddServiceError("This credit card is expired");
                }

                Regex rg = new Regex(@"^[a-zA-Z].*$");
                if (string.IsNullOrWhiteSpace(checkOutDetails.CardHolderFirstname))
                {
                    result.AddServiceError("Cardholder first name is required.");
                }
                else if (!rg.IsMatch(checkOutDetails.CardHolderFirstname))
                {
                    result.AddServiceError("Cardholder first name is invalid.");
                }

                if (string.IsNullOrWhiteSpace(checkOutDetails.CardHolderLastname))
                {
                    result.AddServiceError("Cardholder last name is required.");
                }
                else if (!rg.IsMatch(checkOutDetails.CardHolderLastname))
                {
                    result.AddServiceError("Cardholder last name is invalid.");
                }
            }

            if (result.GetServiceErrors().Count > 0)
            {
                return(result);
            }
            try
            {
                CartSummary summary = GenerateCartSummary(tempCart);

                string   transactionId = string.Empty;
                CartType cartType;

                if (summary.TotalCost == 0)
                {
                    transactionId = GenerateCartCode();
                    cartType      = CartType.Free;
                }
                else
                {
                    IGatewayResponse payment;
                    payment = ChargeConsumer(checkOutDetails, summary);

                    if (payment.Approved)
                    {
                        transactionId = payment.TransactionID;
                        cartType      = CartType.Standard;
                    }
                    else
                    {
                        switch (int.Parse(payment.ResponseCode))
                        {
                        case 2:
                            result.AddServiceError("This Card has been declined.");
                            break;

                        case 3:
                            result.AddServiceError(payment.Message);
                            break;

                        default:
                            result.AddServiceError("Card Error");
                            break;
                        }
                        return(result);
                    }
                }

                if (!SaveCart(tempCart, summary, userId, transactionId, cartType))
                {
                    result.AddServiceError("An error occured saving the shopping cart");
                }
            }
            catch (Exception ex)
            {
                result.AddServiceError(Utilities.GetInnerMostException(ex));
            }

            return(result);
        }