public ActionResult DoCheckout()
        {
            decimal _saldo = 0;
            var     saldo  = Request["saldo"];

            Decimal.TryParse(saldo, out _saldo);


            var pf = new PreferencesMP
            {
                items = new List <Items>()
                {
                    new Items()
                    {
                        currency_id = "ARS",
                        unit_price  = _saldo,
                        quantity    = 1,
                        title       = "Pago de comisión por servicios de ServiEnCasa"
                    }
                }
            };
            MP mp = new MP(ConfigurationManager.AppSettings["MPClientID"], ConfigurationManager.AppSettings["MPSecret"]);

            mp.sandboxMode(bool.Parse(ConfigurationManager.AppSettings["MPSandbox"]));
            var data = new
            {
                items     = pf.items.Select(i => new { title = i.title, quantity = i.quantity, currency_id = i.currency_id, unit_price = i.unit_price }).ToArray(),
                back_urls = new
                {
                    success = Request.Url.DnsSafeHost + ":1230" + Url.RouteUrl("CheckoutStatus"),
                    failure = Request.Url.DnsSafeHost + ":1230" + Url.RouteUrl("CheckoutStatus"),
                    pending = Request.Url.DnsSafeHost + ":1230" + Url.RouteUrl("CheckoutStatus")
                }
            };
            Hashtable preference = mp.createPreference(JsonConvert.SerializeObject(data));

            string MPRefID = (string)((Hashtable)preference["response"])["id"];

            var _pago = new Pagos();

            _pago.Estado  = "Pemdiente";
            _pago.Importe = _saldo;
            _pago.MPRefID = MPRefID;

            db.Pagos.Add(_pago);

            db.SaveChanges();

            return(Json(new { url = (string)((Hashtable)preference["response"])[ConfigurationManager.AppSettings["MPUrl"]] }));
        }
        public ActionResult DoCheckout(string data)
        {
            var turno = db.HorariosDisponibles.Where(x => x.Id == data).FirstOrDefault();

            var pf = new PreferencesMP()
            {
                items = new List <Items>()
                {
                    new Items()
                    {
                        currency_id = "ARS",
                        unit_price  = turno.Precio,
                        quantity    = 1,
                        title       = "Turno Consultorio Virtual " + turno.Dia.ToString()
                    },
                },
            };
            MP mp = new MP(ConfigurationManager.AppSettings["MPClientID"], ConfigurationManager.AppSettings["MPSecret"]);

            mp.sandboxMode(bool.Parse(ConfigurationManager.AppSettings["MPSandbox"]));
            var datos = new
            {
                items     = pf.items.Select(i => new { title = i.title, quantity = i.quantity, currency_id = i.currency_id, unit_price = i.unit_price }).ToArray(),
                back_urls = new
                {
                    success = "http://" + Request.Url.Authority + Url.RouteUrl("CheckoutStatus"),
                    failure = "http://" + Request.Url.Authority + Url.RouteUrl("CheckoutStatus"),
                    pending = "http://" + Request.Url.Authority + Url.RouteUrl("CheckoutStatus")
                }
            };
            Hashtable preference = mp.createPreference(JsonConvert.SerializeObject(datos));


            string mprefid = (string)((Hashtable)preference["response"])["id"];

            var usuario = User.Identity.GetUserId();

            db.Configuration.LazyLoadingEnabled   = false;
            db.Configuration.ProxyCreationEnabled = false;

            OrdenTurno orden = new OrdenTurno()
            {
                ordenitems = new List <OrdenItem>()
                {
                    new OrdenItem()
                    {
                        currency_id         = "ARS",
                        unit_price          = turno.Precio,
                        quantity            = 1,
                        title               = "Turno Consultorio Virtual " + turno.Dia.ToString(),
                        EsValido            = false,
                        IdHorarioDisponible = turno.Id
                    },
                },
                FechaCreacion  = DateTime.Now,
                MPCollectionID = "",
                Status         = "",
                SessionId      = usuario,
                MPRefID        = mprefid
            };

            db.OrdenTurnos.Add(orden);
            db.SaveChanges();
            //string MPRefID = (string)((Hashtable)preference["response"])["id"];

            return(Json(new { url = (string)((Hashtable)preference["response"])[ConfigurationManager.AppSettings["MPUrl"]] }));
        }