Ejemplo n.º 1
0
        private ResponseModelView CompraAVista(ref InicializacaoModelView inicializacao, ref PedidoCompraModelView pedido)
        {
            var CodResp            = string.Empty;
            var NSU_Rede           = string.Empty;
            var StrResp            = string.Empty;
            var DadosMensagem      = string.Empty;
            var cartaoCVVEncrypted = "";



            var workKeyData = Helpers.CryptoApiInfox.DecryptApi(inicializacao.WorkKey, MasterKey);
            var chaveAcessoChamadaConcatenada = Helpers.CryptoApiInfox.EncryptApi($"{pedido.Cliente.Id}{NSURequest}{Helpers.CryptoApiInfox.DecryptApi(inicializacao.ChaveAcessoTx, workKeyData)}", workKeyData);

            var CPFEncrypted            = Helpers.CryptoApiInfox.EncryptApi(pedido.Cliente.Pessoa.Cpf, workKeyData);
            var DataNascimentoEncrypted = Helpers.CryptoApiInfox.EncryptApi(pedido.Cliente.Pessoa.DataNascimento.ToShortDateString(), workKeyData);
            var cartaoNumeroEncrypted   = Helpers.CryptoApiInfox.EncryptApi(pedido.Cliente.Cartao.Numero, workKeyData);
            var cartaoSenhaEncrypted    = Helpers.CryptoApiInfox.EncryptApi(pedido.Cliente.Cartao.Senha, workKeyData);

            if (pedido.Cliente.Cartao.Cvv != null)
            {
                cartaoCVVEncrypted = Helpers.CryptoApiInfox.EncryptApi(pedido.Cliente.Cartao.Cvv, workKeyData);
            }

            var cartaoNomeImpressoEncrypted = Helpers.CryptoApiInfox.EncryptApi(pedido.Cliente.Cartao.NomeImpresso, workKeyData);

            var dados = _service.CompraVista(chaveAcessoChamadaConcatenada,
                                             pedido.CodEstabelecimento,
                                             ConfigurationManager.AppSettings["TIPO_CAPTURA"].ToString(),
                                             null,
                                             cartaoNumeroEncrypted,
                                             pedido.ValorPedido,
                                             NSURequest,
                                             null,
                                             cartaoSenhaEncrypted,
                                             cartaoCVVEncrypted,
                                             CPFEncrypted,
                                             DataNascimentoEncrypted,
                                             cartaoNomeImpressoEncrypted,
                                             ref CodResp,
                                             ref NSU_Rede,
                                             ref DadosMensagem,
                                             ref StrResp);

            return(new ResponseModelView
            {
                Return = dados,
                CodResp = CodResp,
                NSU_Rede = NSU_Rede,
                NSU_RedeRX = NSU_Rede,
                StrResp = StrResp,
                DadosMensagem = DadosMensagem
            });
        }
Ejemplo n.º 2
0
        public virtual ResponseModelView DesfazCompraAVista([FromBody] PedidoCompraModelView pedido)
        {
            var inicializacao = new InicializacaoModelView
            {
                CodCliente = pedido.Cliente.Id,
                NSU        = ConfigurationManager.AppSettings["NSU"].ToString()
            };

            InicializacaoApiInfox(ref inicializacao);

            return(DesfazCompraAVista(ref inicializacao, ref pedido));
        }
Ejemplo n.º 3
0
        protected void InicializacaoApiInfox(ref InicializacaoModelView inicializacao)
        {
            try
            {
                var CodResp       = string.Empty;
                var NSU_Rede      = string.Empty;
                var WorkKey       = string.Empty;
                var ChaveAcessoTx = string.Empty;
                var DadosMensagem = string.Empty;
                var StrResp       = string.Empty;

                var CodClienteNSU = $"{inicializacao.CodCliente}{inicializacao.NSU}";
                var chaveAcesso   = $"{CodClienteNSU.Length.ToString("D4")}{CodClienteNSU}00000";
                inicializacao.ChaveAcesso = inicializacao.ChaveAcessoTx = Helpers.CryptoApiInfox.Encrypt(chaveAcesso, MasterKey);

                var dadosInicializacao = _service.Inicializacao(inicializacao.CodCliente,
                                                                inicializacao.ChaveAcesso.Replace("-", ""),
                                                                null,
                                                                ConfigurationManager.AppSettings["TIPO_CAPTURA"].ToString(),
                                                                null,
                                                                inicializacao.NSU,
                                                                null,
                                                                ref CodResp,
                                                                ref NSU_Rede,
                                                                ref WorkKey,
                                                                ref ChaveAcessoTx,
                                                                ref DadosMensagem,
                                                                ref StrResp);

                inicializacao.CodResp       = CodResp;
                inicializacao.NSU_Rede      = NSU_Rede;
                inicializacao.WorkKey       = WorkKey;
                inicializacao.ChaveAcessoTx = ChaveAcessoTx;
                inicializacao.DadosMensagem = DadosMensagem;
                inicializacao.StrResp       = StrResp;

                if (dadosInicializacao > 0)
                {
                    throw new BusinessRuleException($"Retorno da Chamada Inicial: {StrResp}");
                }
            }
            catch (BusinessRuleException br)
            {
                throw new BusinessRuleException($"Ocorreu um erro - [{br.Message}].");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public virtual ExtratoModelView Extrato(string idCliente, string cardNumber, string cardPass, string codEstabelecimento)
        {
            var cliente = new ClienteModelView
            {
                Id     = idCliente,
                Cartao = new CartaoModelView
                {
                    Numero = cardNumber,
                    Senha  = cardPass
                }
            };

            var inicializacao = new InicializacaoModelView
            {
                CodCliente = cliente.Id,
                NSU        = ConfigurationManager.AppSettings["NSU"].ToString()
            };

            InicializacaoApiInfox(ref inicializacao);

            return(Extrato(ref inicializacao, cliente, codEstabelecimento));
        }
Ejemplo n.º 5
0
        private ResponseModelView DesfazCompraAVista(ref InicializacaoModelView inicializacao, ref PedidoCompraModelView pedido)
        {
            var CodResp       = string.Empty;
            var NSU_Rede      = string.Empty;
            var NSU_RedeRX    = string.Empty;
            var StrResp       = string.Empty;
            var DadosMensagem = string.Empty;

            var workKeyData = Helpers.CryptoApiInfox.DecryptApi(inicializacao.WorkKey, MasterKey);
            var chaveAcessoChamadaConcatenada = Helpers.CryptoApiInfox.EncryptApi($"{pedido.Cliente.Id}{NSURequest}{Helpers.CryptoApiInfox.DecryptApi(inicializacao.ChaveAcessoTx, workKeyData)}", workKeyData);

            var cartaoNumeroEncrypted = Helpers.CryptoApiInfox.EncryptApi(pedido.Cliente.Cartao.Numero, workKeyData);

            NSU_RedeRX = pedido.NSU_RedeRX;

            var dados = _service.DesfazCompraVista(chaveAcessoChamadaConcatenada,
                                                   pedido.CodEstabelecimento,
                                                   ConfigurationManager.AppSettings["TIPO_CAPTURA"].ToString(),
                                                   null,
                                                   cartaoNumeroEncrypted,
                                                   NSURequest,
                                                   NSU_RedeRX,
                                                   ref CodResp,
                                                   ref NSU_Rede,
                                                   ref DadosMensagem,
                                                   ref StrResp);

            return(new ResponseModelView
            {
                Return = dados,
                CodResp = CodResp,
                NSU_Rede = NSU_Rede,
                NSU_RedeRX = NSU_RedeRX,
                StrResp = StrResp,
                DadosMensagem = DadosMensagem
            });
        }
        public virtual CartaoModelView Saldo(string idCliente, string cardNumber, string cardPass)
        {
            var cliente = new ClienteModelView
            {
                Id     = idCliente,
                Cartao = new CartaoModelView
                {
                    Numero = cardNumber,
                    Senha  = cardPass
                }
            };

            var inicializacao = new InicializacaoModelView
            {
                CodCliente = cliente.Id,
                NSU        = ConfigurationManager.AppSettings["NSU"].ToString()
            };

            InicializacaoApiInfox(ref inicializacao);

            Saldo(ref inicializacao, ref cliente);

            return(cliente.Cartao);
        }
        private void Saldo(ref InicializacaoModelView inicializacao, ref ClienteModelView cliente)
        {
            try
            {
                var CodResp         = string.Empty;
                var NSU_Rede        = string.Empty;
                var StrResp         = string.Empty;
                var SaldoDisponivel = string.Empty;
                var LimiteCredito   = string.Empty;
                var DiaVencimento   = string.Empty;

                var workKeyData = Helpers.CryptoApiInfox.DecryptApi(inicializacao.WorkKey, MasterKey);
                var chaveAcessoChamadaConcatenada = Helpers.CryptoApiInfox.EncryptApi($"{cliente.Id}{NSURequest}{Helpers.CryptoApiInfox.DecryptApi(inicializacao.ChaveAcessoTx, workKeyData)}", workKeyData);

                var cartaoNumeroEncrypted = Helpers.CryptoApiInfox.EncryptApi(cliente.Cartao.Numero, workKeyData);
                var cartaoSenhaEncrypted  = Helpers.CryptoApiInfox.EncryptApi(cliente.Cartao.Senha, workKeyData);

                var dados = _service.ConsultaSaldo(chaveAcessoChamadaConcatenada,
                                                   null,
                                                   ConfigurationManager.AppSettings["TIPO_CAPTURA"].ToString(),
                                                   null,
                                                   cartaoNumeroEncrypted,
                                                   NSURequest,
                                                   null,
                                                   cartaoSenhaEncrypted,
                                                   ref CodResp,
                                                   ref NSU_Rede,
                                                   ref SaldoDisponivel,
                                                   ref StrResp);

                cliente.Cartao.Numero = $"{cliente.Cartao.Numero.Substring(0, 4)} XXXX XXXX {cliente.Cartao.Numero.Substring(cliente.Cartao.Numero.Length -4 , 4)}";
                cliente.Cartao.Senha  = null;

                if (dados > 0)
                {
                    cliente.Cartao.Return          = dados;
                    cliente.Cartao.CodResp         = dados.ToString();
                    cliente.Cartao.StrResp         = $"Retorno da Chamada de Saldo: {StrResp}";
                    cliente.Cartao.SaldoDisponivel = string.Empty;
                    cliente.Cartao.LimiteCredito   = string.Empty;
                    cliente.Cartao.DiaVencimento   = string.Empty;
                    return;
                }

                var frases = StrResp.Replace("@@", "@").Split('@').ToList();
                LimiteCredito = frases?.FirstOrDefault(x => x.Contains("LIMITE"))?.Split(':')?.Last()?.Trim() ?? string.Empty;
                DiaVencimento = frases?.FirstOrDefault(x => x.Contains("VENCIMENTO"))?.Split(':')?.Last()?.Trim() ?? string.Empty;

                cliente.Cartao.Return          = dados;
                cliente.Cartao.CodResp         = CodResp;
                cliente.Cartao.NSU_Rede        = NSU_Rede;
                cliente.Cartao.StrResp         = StrResp;
                cliente.Cartao.SaldoDisponivel = SaldoDisponivel.Length <= 1 ? SaldoDisponivel : $"{SaldoDisponivel.Substring(0, SaldoDisponivel.Length - 2).Replace(",", "")},{SaldoDisponivel.Substring(SaldoDisponivel.Length - 2)}";
                cliente.Cartao.LimiteCredito   = LimiteCredito;
                cliente.Cartao.DiaVencimento   = DiaVencimento;
            }
            catch (BusinessRuleException br)
            {
                throw br;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private ExtratoModelView Extrato(ref InicializacaoModelView inicializacao, ClienteModelView cliente, string codEstabelecimento)
        {
            try
            {
                var CodResp         = string.Empty;
                var NSU_Rede        = string.Empty;
                var StrResp         = string.Empty;
                var SaldoDisponivel = string.Empty;
                var LimiteCredito   = string.Empty;
                var DiaVencimento   = string.Empty;
                var DataHoraExtrato = string.Empty;

                var workKeyData = Helpers.CryptoApiInfox.DecryptApi(inicializacao.WorkKey, MasterKey);
                var chaveAcessoChamadaConcatenada = Helpers.CryptoApiInfox.EncryptApi($"{cliente.Id}{NSURequest}{Helpers.CryptoApiInfox.DecryptApi(inicializacao.ChaveAcessoTx, workKeyData)}", workKeyData);

                var cartaoNumeroEncrypted = Helpers.CryptoApiInfox.EncryptApi(cliente.Cartao.Numero, workKeyData);
                var cartaoSenhaEncrypted  = Helpers.CryptoApiInfox.EncryptApi(cliente.Cartao.Senha, workKeyData);

                var dados = _service.ConsultaExtrato(chaveAcessoChamadaConcatenada,
                                                     codEstabelecimento,
                                                     ConfigurationManager.AppSettings["TIPO_CAPTURA"].ToString(),
                                                     null,
                                                     cartaoNumeroEncrypted,
                                                     NSURequest,
                                                     null,
                                                     cartaoSenhaEncrypted,
                                                     ref CodResp,
                                                     ref NSU_Rede,
                                                     ref SaldoDisponivel,
                                                     ref StrResp);

                cliente.Cartao.Numero = $"{cliente.Cartao.Numero.Substring(0, 4)} XXXX XXXX {cliente.Cartao.Numero.Substring(cliente.Cartao.Numero.Length - 4, 4)}";
                cliente.Cartao.Senha  = null;

                if (dados > 0)
                {
                    return new ExtratoModelView
                           {
                               Return  = dados,
                               CodResp = dados.ToString(),
                               StrResp = $"Retorno da Chamada de Extrato: {StrResp}",
                               Cartao  = cliente.Cartao
                           }
                }
                ;

                var frases = StrResp.Replace("@@", "@").Split('@').ToList();
                LimiteCredito   = frases?.FirstOrDefault(x => x.Contains("LIMITE"))?.Split(':')?.Last()?.Trim() ?? string.Empty;
                DiaVencimento   = frases?.FirstOrDefault(x => x.Contains("VENCIMENTO"))?.Split(':')?.Last()?.Trim() ?? string.Empty;
                SaldoDisponivel = frases?.FirstOrDefault(x => x.Contains("SALDO DISPONIVEL"))?.Split(':')?.Last()?.Trim() ?? string.Empty;

                var resultado       = TipoCartaoEnum.Cartao;
                var listaTipoCartao = Enum.GetValues(typeof(TipoCartaoEnum)).Cast <TipoCartaoEnum>().Select(e => new KeyValuePair <TipoCartaoEnum, string>(e, e.ToDescription())).ToList();
                if (frases?.Count > 2)
                {
                    resultado = listaTipoCartao?.FirstOrDefault(x => x.Key.ToString() == frases[1].Trim().ToUpper() || x.Value.ToUpper() == frases[1].Trim().ToUpper()).Key ?? TipoCartaoEnum.Cartao;
                }
                cliente.Cartao.TipoCartao = new Entidade.TipoCartao
                {
                    Id           = (int)resultado,
                    DataInsercao = DateTime.Now,
                    Descricao    = resultado.ToDescription()
                };
                cliente.Cartao.SaldoDisponivel = SaldoDisponivel.Length <= 1 ? SaldoDisponivel : $"{SaldoDisponivel.Substring(0, SaldoDisponivel.Length - 2).Replace(",", "")},{SaldoDisponivel.Substring(SaldoDisponivel.Length - 2)}";
                DataHoraExtrato = frases?.FirstOrDefault(x => x.Contains("DATA/HORA")) != null && frases?.FirstOrDefault(x => x.Contains("DATA/HORA")).Length > 10 ? frases?.FirstOrDefault(x => x.Contains("DATA/HORA"))?.Substring(10)?.Trim()?.Replace("/", "-") ?? string.Empty : string.Empty;

                var extrato = new ExtratoModelView
                {
                    Return          = dados,
                    CodResp         = CodResp,
                    NSU_Rede        = NSU_Rede,
                    StrResp         = StrResp,
                    Cabecalho       = frases?.FirstOrDefault()?.Trim(),
                    DataHoraExtrato = DataHoraExtrato != null?Convert.ToDateTime(DataHoraExtrato) : DateTime.Now,
                                          SaldoDisponivel = SaldoDisponivel.Length <= 1 ? SaldoDisponivel : $"{SaldoDisponivel.Substring(0, SaldoDisponivel.Length - 2).Replace(",", "")},{SaldoDisponivel.Substring(SaldoDisponivel.Length - 2)}",
                                          LimiteCredito   = LimiteCredito,
                                          DiaVencimento   = DiaVencimento,
                                          Cartao          = cliente.Cartao,
                                          Itens           = new List <ExtratoItemModelView>()
                };

                var mesAno = new List <string>();
                foreach (var linha in frases)
                {
                    if (linha.Contains("MES/ANO"))
                    {
                        var splitMesAno = linha.Substring(linha.LastIndexOf(':') + 1).Split('/');
                        mesAno.Add($"DAY-{splitMesAno.First().Trim()}-20{splitMesAno.Last().Trim()}");
                        continue;
                    }

                    var dia = 1;
                    if (linha.Length > 2 && int.TryParse(linha.Substring(0, 3), out dia))
                    {
                        extrato.Itens.Add(new ExtratoItemModelView
                        {
                            Data      = DateTime.Parse($"{mesAno.Last().Replace("DAY", dia.ToString())}"),
                            Descricao = linha.Substring(linha.IndexOf(' '), linha.LastIndexOf(' ') - 1).Trim(),
                            Valor     = Convert.ToDecimal(linha.Substring(linha.LastIndexOf(' ') + 1).Trim())
                        });
                    }
                }
                extrato.TotalValorItens = extrato.Itens?.Sum(x => x.Valor).ToString("N2") ?? "0,00";

                return(extrato);
            }
            catch (BusinessRuleException br)
            {
                throw br;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }