Esempio n. 1
0
        public string AgregarTarjetaAsync(int id, string tokenTarjeta, string sessionId)
        {
            using (var _dbContext = new MercampoEntities())
            {
                Startup.OpenDatabaseConnection(_dbContext);
                if (_dbContext.Database.Connection.State != ConnectionState.Open)
                {
                    return(new ResultadoAgregarTarjeta(false, "Error en el servidor, vuelva a intentarlo de nuevo en unos minutos").AsJson());
                }


                var usuario = _dbContext.Usuarios.Where(u => u.id == id).FirstOrDefault();

                if (usuario == null)
                {
                    _dbContext.Database.Connection.Close();
                    return(new ResultadoAgregarTarjeta(false, "Error, el id del usuario al que se le quiere agregar la tarjeta, no existe").AsJson());
                }

                Card request = new Card();
                request.TokenId         = tokenTarjeta;
                request.DeviceSessionId = sessionId;

                try
                {
                    request = Startup.OpenPayLib.CardService.Create(usuario.idConekta, request);
                }
                catch (OpenpayException e)
                {
                    _dbContext.Database.Connection.Close();
                    return(new ResultadoAgregarTarjeta(false, TarjetaResultadoHelpers.ObtenerMensajeError((OpenPayErrorCodes)e.ErrorCode)).AsJson());
                }

                string last4 = request.CardNumber.Substring(request.CardNumber.Length - 4, 4);

                _dbContext.Usuario_Tarjeta.Add(new Usuario_Tarjeta
                {
                    tipoTarjeta    = TarjetaResultadoHelpers.GetTipoTarjeta(request.Brand),
                    digitosTarjeta = last4,
                    tokenTarjeta   = request.Id,
                    idUsuario      = id,
                    activo         = true
                });
                _dbContext.SaveChanges();
                return(new ResultadoAgregarTarjeta(true, "La tarjeta se agregó correctamente.").AsJson());
            }
        }
Esempio n. 2
0
        public bool RealizarCargoTarjeta(int id, string tarjetaToken, string sessionId, CarritoDeCompra carrito, out string resultadoJson)
        {
            if (carrito == null || carrito.TotalCarrito <= 0.0)
            {
                resultadoJson = new ResultadoCargo(false, ResultadoCargoTarjeta.ErrorInterno, mensaje: "El carrito de compras esta vacio").AsJson();
                return(false);
            }

            HttpRequest request = HttpContext.Current.Request;
            var         usuario = getUsuarioPortalActual(request);

            if (usuario.Id != id)
            {
                resultadoJson = new ResultadoCargo(false, ResultadoCargoTarjeta.ErrorInterno, mensaje: "Error favor de hacer login").AsJson();
                return(false);
            }
            using (var _dbContext = new MercampoEntities())
            {
                Startup.OpenDatabaseConnection(_dbContext);
                if (_dbContext.Database.Connection.State != ConnectionState.Open)
                {
                    resultadoJson = new ResultadoCargo(false, ResultadoCargoTarjeta.ErrorInterno, mensaje: "Error en el servidor, vuelva a intentarlo de nuevo en unos minutos").AsJson();
                    return(false);
                }

                try
                {
                    Customer cliente = Startup.OpenPayLib.CustomerService.Get(usuario.IdConekta);
                    if (cliente == null)
                    {
                        resultadoJson = new ResultadoCargo(false, ResultadoCargoTarjeta.ErrorInterno, mensaje: "Error en el servidor, vuelva a intentarlo de nuevo en unos minutos").AsJson();
                        return(false);
                    }

                    ChargeRequest chargeRequest = new ChargeRequest();
                    chargeRequest.Method          = "card";
                    chargeRequest.SourceId        = tarjetaToken;
                    chargeRequest.Amount          = new decimal(carrito.TotalCarrito);
                    chargeRequest.Currency        = "MXN";
                    chargeRequest.Description     = "Servicio de anuncios Mercampo.mx";
                    chargeRequest.OrderId         = getToken();
                    chargeRequest.DeviceSessionId = sessionId;
                    chargeRequest.SendEmail       = true;

                    Charge         cargo     = Startup.OpenPayLib.ChargeService.Create(usuario.IdConekta, chargeRequest);
                    ResultadoCargo resultado = new ResultadoCargo(true, ResultadoCargoTarjeta.Aprobado, cargo.OrderId, cargo.Authorization, "El cargo ha sido exitoso", (double)cargo.Amount);
                    AgregarAnuncios(carrito, usuario.Id);
                    resultadoJson = resultado.AsJson();
                    return(true);
                }
                catch (OpenpayException e)
                {
                    ResultadoCargoTarjeta res = ResultadoCargoTarjeta.ErrorInterno;
                    if ((int)ResultadoCargoTarjeta.Rechazado == e.ErrorCode)
                    {
                        res = ResultadoCargoTarjeta.Rechazado;
                    }

                    resultadoJson = new ResultadoCargo(false, res, mensaje: TarjetaResultadoHelpers.ObtenerMensajeError((OpenPayErrorCodes)e.ErrorCode)).AsJson();
                    return(false);
                }
            }
        }