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 }); }
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)); }
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)); }
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; } }