Open bianchini007 opened 3 years ago
Você pode implementa-lo pra gente :)
Estou tentando implementar o Bradesco, mas preciso de ajuda no de-para de boleto.cs para o json que existe na documentação em http://www.crosp.org.br/uploads/editais_alterados/8a0a9a2f92b3ed4e971e0b57d744b4b9.pdf
@Schinwinkwinsky O BoletoNet nao trabalha com API hoje.
Mas poderia? Teria algum problema implementar isso? Desculpe, não sou um programador tão experiente, mas vi nesse projeto uma forma de resolver um problema que temos hoje na empresa. Gostaria de ajudar como posso. Nunca participei antes de um projeto aberto.
@Schinwinkwinsky Para implementar teria que criar uma nova estrutura dentro do boleto. O ideal seria criar uma nvoa estrutura dentro do projeto.
Você diz criar um novo projeto na solução assim como fizeram para o Pdf? Eu vi que o arquivo IBanco tem uma interface para registro online.
E no Itaú já até tentaram começar uma implementação dessa.
@Schinwinkwinsky Nao, exatamente isto que vc mandou. É que a logica para enviar boleto pela API é totalmente diferente da remessa/retorno.
boa noite senhores, criei um fork do projeto para tentar implementar o registro online para o banco sicredi. Atualmente possuo essa implementação rodando em produção mas em um projeto delphi. A api do sicredi tem uma ChaveMaster que é unica e vinculada à conta. Utiliza-se a chave master para criar a chave de transação, que é um token temporário, este token permite o acesso aos metodos para o registro do boleto.
Notei que a interface IBancoOnlineRest tem os metodos GerarToken e RegistrarBoleto. Na implementação para o sicredi eu vou implementar o método GerarToken para gerar a chave de transação do sicredi.
A duvida está em seguir a correta arquitetura de código do projeto e escolher o melhor local para criar a propriedade "ChaveMaster"... poderia colocar na interface IBanco?
Lembrando que o termo ChaveMaster é utilizado pelo sicredi, porem outros bancos podem utilizar outra terminologia, neste caso, talvez fosse interessante padronizar esse nome, como por exemplo ApiKey ou ChaveApi.
Gostaria do apoio dos senhores nesta empreitada.
Obrigado
Penso também ser interessante trabalhar com métodos assíncronos para as requisições de api,
Neste caso, a exemplo do método GerarToken da interface IBancoOnlineRest, seria interessante mudar a declaracao para
Task
@marcianobandeira Podemos trabalhar assincrono sem problemas. Mas o conteudo do método tambem precisa ter as chamadas como assincronas.
@marcianobandeira Quanto ao apoio, conte comigo!
obrigado pelo retorno @carloscds, vou fazer a implementação aqui de uma forma que tente seguir ao maximo a arquitetura, assim que estiver funcionando eu envio o pull request para analise dos senhores.
Prezados, criei o pull request, é a primeira vez que faço isso, entao ainda estou aprendendo a operar o git, rs.
Infelizmente o pessoal do sicredi me retornou que nao tem ambiente de testes, entao, realizei os testes em producao mesmo com os dados aqui da empresa.
O codigo abaixo funcionou pra min em producao (alterei os dados para postar).
Acho que o ideal seria avaliar a api de outros bancos para padronizar a arquitetura.
var conta = new ContaBancaria();
conta.Agencia = "9999";
conta.DigitoAgencia = "99";
conta.Conta = "9999";
conta.DigitoConta = "9";
conta.TipoCarteiraPadrao = TipoCarteira.CarteiraCobrancaSimples;
conta.TipoFormaCadastramento = TipoFormaCadastramento.ComRegistro;
conta.TipoImpressaoBoleto = TipoImpressaoBoleto.Empresa;
conta.CarteiraPadrao = "1";
conta.VariacaoCarteiraPadrao = "A";
conta.OperacaoConta = "99";
var beneficiario = new Beneficiario();
beneficiario.CPFCNPJ = "99999999999999";
beneficiario.Codigo = "99999";
beneficiario.ContaBancaria = conta;
beneficiario.Nome = "XXXXXXX";
beneficiario.Endereco.Bairro = "ZZZZZZ";
beneficiario.Endereco.CEP = "99999999";
beneficiario.Endereco.Cidade = "XXX";
beneficiario.Endereco.LogradouroComplemento = "XXX";
beneficiario.Endereco.LogradouroEndereco = "XXX";
beneficiario.Endereco.LogradouroNumero = "XXX";
beneficiario.Endereco.UF = "XX";
beneficiario.ContaBancaria = conta;
var banco = Banco.Instancia(Bancos.Sicredi);
banco.Beneficiario = beneficiario;
var bol = new Boleto(banco);
bol.DataVencimento = new DateTime(2021, 12, 31);
bol.DataEmissao = DateTime.Today;
bol.ValorTitulo = 1;
bol.EspecieDocumento = TipoEspecieDocumento.DMI;
bol.NumeroDocumento = "1234";
bol.NossoNumero = "1";
bol.DataDesconto = bol.DataVencimento;
bol.ValorDesconto = 0.10M;
bol.Pagador.CPFCNPJ = "99999999999";
bol.Pagador.Nome = "XXXXXXX";
bol.Pagador.Telefone = "999999999";
bol.Pagador.Endereco.Bairro = "XXXX";
bol.Pagador.Endereco.CEP = "99999999";
bol.Pagador.Endereco.Cidade = "XXXXX";
bol.Pagador.Endereco.UF = "XX";
bol.Pagador.Endereco.LogradouroEndereco = "XXX";
bol.Pagador.Endereco.LogradouroNumero = "XX";
bol.ValidarDados();
bol.NossoNumero.ToString();
var sicredi = (IBancoOnlineRest)banco;
sicredi.ChaveApi = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
await sicredi.GerarToken();
Console.WriteLine(sicredi.Token);
await sicredi.RegistrarBoleto(bol);
await sicredi.ConsultarStatus(bol);
@marcianobandeira Excelente, obrigado pela contribuição.
vou implementar a do banco do brasil logo mais
Atualmente os bancos estão disponibilizando o registro online de boletos, existe alguma previsão para implementar aqui neste projeto?