Skip to content

Commit

Permalink
Alteração da Mecânica de Contrato
Browse files Browse the repository at this point in the history
  • Loading branch information
RafaelEstevamReis committed Dec 18, 2023
1 parent aee1008 commit f3288e6
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 18 deletions.
24 changes: 13 additions & 11 deletions Sicoob.Cobranca/SicoobCobranca.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,14 @@ public sealed class SicoobCobranca : Shared.Sicoob
// https://documenter.getpostman.com/view/20565799/Uzs6yNhe#6447c293-f67b-44ba-b7be-41f5c3de978d

private ClientInfo clientApi;
private int numeroContrato;
public Shared.Models.ConfiguracaoAPI ConfigApi { get; }
public string? PastaCopiaMovimentacoes { get; set; }

public SicoobCobranca(Shared.Models.ConfiguracaoAPI configApi, System.Security.Cryptography.X509Certificates.X509Certificate2? certificado = null)
public SicoobCobranca(Shared.Models.ConfiguracaoAPI configApi, int NumeroContrato, System.Security.Cryptography.X509Certificates.X509Certificate2? certificado = null)
: base(configApi, certificado)
{
numeroContrato = NumeroContrato;
ConfigApi = configApi;
clientApi = new ClientInfo(ConfigApi.UrlApi);
}
Expand All @@ -58,7 +60,7 @@ protected override void atualizaClients(TokenResponse token)
/// <param name="linhaDigitavel">Número da linha digitável do boleto com 47 posições. Caso seja informado, não é necessário informar o nosso número ou código de barras</param>
/// <param name="codigoBarras">Número de código de barras do boleto com 44 posições.Caso seja informado, não é necessário informar o nosso número ou linha digitável</param>
/// <returns>Boleto buscado</returns>
public async Task<ConsultaBoletoResponse?> ConsultarBoleto(int numeroContrato, int? nossoNumero = null, string? linhaDigitavel = null, string? codigoBarras = null)
public async Task<ConsultaBoletoResponse?> ConsultarBoleto(int? nossoNumero = null, string? linhaDigitavel = null, string? codigoBarras = null)
{
var consulta = new ConsultaBoletoRequest()
{
Expand All @@ -80,7 +82,7 @@ protected override void atualizaClients(TokenResponse token)
/// <param name="dataVencimentoInicio">Data de Vencimento Inicial</param>
/// <param name="dataVencimentoFim">Data de Vencimento Final</param>
/// <returns>Boletos do Pagador</returns>
public async Task<ConsultaBoletosPagadorResponse> ConsultarBoletosPagador(int numeroContrato, string numeroCpfCnpj, int? codigoSituacao = null, DateTime? dataVencimentoInicio = null, DateTime? dataVencimentoFim = null)
public async Task<ConsultaBoletosPagadorResponse> ConsultarBoletosPagador(string numeroCpfCnpj, int? codigoSituacao = null, DateTime? dataVencimentoInicio = null, DateTime? dataVencimentoFim = null)
{
var consulta = new ConsultaBoletosPagadorRequest()
{
Expand All @@ -92,7 +94,7 @@ public async Task<ConsultaBoletosPagadorResponse> ConsultarBoletosPagador(int nu
return await ExecutaChamadaAsync(() => clientApi.GetAsync<ConsultaBoletosPagadorResponse>("/cobranca-bancaria/v2/cobranca-bancaria/v2/boletos/pagadores/" + numeroCpfCnpj, consulta));
}

public async Task<ConsultaBoletoResponse?> ConsultarSegundaViaBoleto(int numeroContrato, int modalidade, int? nossoNumero = null, string? linhaDigitavel = null, string? codigoBarras = null, bool gerarPdf = false)
public async Task<ConsultaBoletoResponse?> ConsultarSegundaViaBoleto(int modalidade, int? nossoNumero = null, string? linhaDigitavel = null, string? codigoBarras = null, bool gerarPdf = false)
{
var consulta = new ConsultaBoletoRequest()
{
Expand All @@ -112,20 +114,20 @@ public async Task<ConsultaBoletosPagadorResponse> ConsultarBoletosPagador(int nu
}

/* Movimentação */
public async Task<RetornoSolicitacaoMovimentacoesCarteira> SolicitarMovimentacao(int numeroContrato, SolicitacaoMovimentacoesCarteira.Tipo tipoMovimento, DateTime data)
public async Task<RetornoSolicitacaoMovimentacoesCarteira> SolicitarMovimentacao(SolicitacaoMovimentacoesCarteira.Tipo tipoMovimento, DateTime data)
{
var di = data.Date;
var df = data.Date.AddDays(1).AddSeconds(-1);
return await SolicitarMovimentacao(numeroContrato, tipoMovimento, di, df);
return await SolicitarMovimentacao(tipoMovimento, di, df);
}
public async Task<RetornoSolicitacaoMovimentacoesCarteira> SolicitarMovimentacao(int numeroContrato, SolicitacaoMovimentacoesCarteira.Tipo tipoMovimento, DateTime dataInicial, DateTime dataFinal)
public async Task<RetornoSolicitacaoMovimentacoesCarteira> SolicitarMovimentacao(SolicitacaoMovimentacoesCarteira.Tipo tipoMovimento, DateTime dataInicial, DateTime dataFinal)
=> await SolicitarMovimentacao(new SolicitacaoMovimentacoesCarteira() { numeroContrato = numeroContrato, tipoMovimento = (int)tipoMovimento, dataInicial = dataInicial, dataFinal = dataFinal });
private async Task<RetornoSolicitacaoMovimentacoesCarteira> SolicitarMovimentacao(SolicitacaoMovimentacoesCarteira solicitacao)
{
var retorno = await ExecutaChamadaAsync(() => clientApi.PostAsync<ResponseMovimentacao<RetornoSolicitacaoMovimentacoesCarteira>>("/cobranca-bancaria/v2/boletos/solicitacoes/movimentacao", solicitacao));
return retorno.resultado;
}
public async Task<RetornoConsultaMovimentacoes?> ConsultarSituacaoSolicitacao(int numeroContrato, int codigoSolicitacao)
public async Task<RetornoConsultaMovimentacoes?> ConsultarSituacaoSolicitacao(int codigoSolicitacao)
{
var result = await clientApi.GetAsync<ResponseMovimentacao<RetornoConsultaMovimentacoes>>("/cobranca-bancaria/v2/boletos/solicitacoes/movimentacao", new { numeroContrato, codigoSolicitacao });

Expand All @@ -141,17 +143,17 @@ private async Task<RetornoSolicitacaoMovimentacoesCarteira> SolicitarMovimentaca
result.EnsureSuccessStatusCode(); // Erro comum
return null; // a linha de cima vai arremessar o erro padrão
}
internal async Task<RetornoArquivoMovimentacao> DownloadArquivoMovimentacao(int numeroContrato, int codigoSolicitacao, int idArquivo)
internal async Task<RetornoArquivoMovimentacao> DownloadArquivoMovimentacao(int codigoSolicitacao, int idArquivo)
{
var retorno = await ExecutaChamadaAsync(() => clientApi.GetAsync<ResponseMovimentacao<RetornoArquivoMovimentacao>>("/cobranca-bancaria/v2/boletos/movimentacao-download", new { numeroContrato, codigoSolicitacao, idArquivo }));
return retorno.resultado;
}
public async Task<MovimentacoesArquivos[]> BaixarMovimentacoes(int numeroContrato, int codigoSolicitacao, int[] arquivos)
public async Task<MovimentacoesArquivos[]> BaixarMovimentacoes(int codigoSolicitacao, int[] arquivos)
{
var lst = new List<MovimentacoesArquivos>();
foreach (var idArquivo in arquivos)
{
var retorno = await DownloadArquivoMovimentacao(numeroContrato, codigoSolicitacao, idArquivo);
var retorno = await DownloadArquivoMovimentacao(codigoSolicitacao, idArquivo);

var bytesZip = Convert.FromBase64String(retorno.arquivo);
salvarCopiaMovimentacao(bytesZip, retorno.nomeArquivo);
Expand Down
35 changes: 28 additions & 7 deletions Sicoob.Testes/TestesApiCobranca.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,38 @@ internal static async Task Run_Cobranca()
{
// carrega do disco
var cfg = JsonConvert.DeserializeObject<ConfiguracaoAPI>(File.ReadAllText("config_Cob.json")) ?? throw new Exception();
cfg.Scope.RemoverTodos();
cfg.Scope.Cobranca_Setar(true);
File.WriteAllText("config_Cob.json", JsonConvert.SerializeObject(cfg));
//cfg.Scope.RemoverTodos();
//cfg.Scope.Cobranca_Setar(true);
//File.WriteAllText("config_Cob.json", JsonConvert.SerializeObject(cfg));

var cobranca = new SicoobCobranca(cfg);
var cobranca = new SicoobCobranca(cfg, NumeroContrato: 000);
await cobranca.SetupAsync();

var boleto = await cobranca.ConsultarBoleto("", nossoNumero: 0);
var consulta = await cobranca.ConsultarBoletosPagador("", numeroCpfCnpj: "");
var segVia = await cobranca.ConsultarSegundaViaBoleto("",1, nossoNumero: 0, gerarPdf: true);
//var boleto = await cobranca.ConsultarBoleto(nossoNumero: 0);
//var consulta = await cobranca.ConsultarBoletosPagador(numeroCpfCnpj: "00000000000000");
//var segVia = await cobranca.ConsultarSegundaViaBoleto(1, nossoNumero: 0, gerarPdf: true);

var p1 = await cobranca.SolicitarMovimentacao(Cobranca.Models.SolicitacaoMovimentacoesCarteira.Tipo.Liquidacao, new DateTime(2023, 12, 14));
int codigo = p1.codigoSolicitacao;

Cobranca.Models.RetornoConsultaMovimentacoes? p2 = null;
while (p2 == null)
{
Console.WriteLine("Consultando ...");
p2 = await cobranca.ConsultarSituacaoSolicitacao(codigoSolicitacao: codigo);
await Task.Delay(1000);
}

int[] idsArquivos = p2.idArquivos;
var p3 = await cobranca.BaixarMovimentacoes(codigo, idsArquivos);
cfg = cfg;
cfg = cfg;
cfg = cfg;
cfg = cfg;
cfg = cfg;
cfg = cfg;
cfg = cfg;
cfg = cfg;
cfg = cfg;
}
}

0 comments on commit f3288e6

Please sign in to comment.