public ActionResult Index(int id)
        {
            var cart     = _databaseConnection.Get(id);
            var checkout = _apiCaller.GetCheckout(cart.CheckoutId);

            var viewModel = new CheckoutViewModel()
            {
                ShoppingCart    = cart,
                CheckoutSnippet = checkout.Snippet,
                ColorScheme     = checkout.Gui.ColorScheme
            };

            return(View(viewModel));
        }
        public void Index(int id)
        {
            var cart     = _databaseConnection.Get(id);
            var checkout = _apiCaller.GetCheckout(cart.CheckoutId);

            switch (checkout.Status)
            {
            case CheckoutStatus.Created:
            case CheckoutStatus.ReadyToPay:
            case CheckoutStatus.ProcessingPayment:
                cart.Status = CartStatus.Created;
                break;

            case CheckoutStatus.ReadyToShip:
                cart.Status = CartStatus.Paid;
                break;

            case CheckoutStatus.Shipped:
            case CheckoutStatus.PaidToAccount:
                cart.Status = CartStatus.Shipped;
                break;

            case CheckoutStatus.Canceled:
            case CheckoutStatus.Expired:
                cart.Status = CartStatus.Shipped;
                break;
            }

            _databaseConnection.Save(cart);
        }
        public ActionResult Index(int id)
        {
            var cart           = _databaseConnection.Get(id);
            var checkoutId     = cart.CheckoutId;
            var paysonCheckout = _apiCaller.GetCheckout(checkoutId);

            var model = new ConfirmationViewModel {
                ShoppingCart = cart, ConfirmationSnippet = paysonCheckout.Snippet
            };

            return(View(model));
        }
Exemple #4
0
        public ActionResult GoToCheckout(ShopViewModel model)
        {
            try
            {
                var apiCaller = new ApiCaller(model.MerchantId, model.ApiKey, true);
                apiCaller.SetApiUrl(ConfigurationManager.AppSettings["PaysonRestUrl"]);


                //Send the newly checkout data to Payson
                var location = apiCaller.NewCheckout(model);

                //Get a new checkout data object which is populated with aditional information
                var checkout = apiCaller.GetCheckout(location);

                //Update the cart with items and checkout reference.
                var cart = UpdateShoppingCart(model.ShoppingCart, checkout);

                return(RedirectToAction("Index", "Checkout", new RouteValueDictionary()
                {
                    { "id", cart.Id }
                }));
            }
            catch (WebException e)
            {
                var response = (HttpWebResponse)e.Response;

                string responseBody;

                using (var responseStream = response.GetResponseStream())
                {
                    if (responseStream == null)
                    {
                        throw new NullReferenceException("No response stream found.");
                    }

                    using (var reader = new StreamReader(responseStream))
                    {
                        responseBody = reader.ReadToEnd();
                    }
                }

                return(View("Response", null, responseBody));
            }
        }