Api em Java para Acessar o Banco Inter
A Api V1 já está em produção e funciona todos os metódos.
A Api V2 está quase toda feita, mas o limite de requisições pelo Banco Inter no momento é somente 10 por minuto, o que inviabiliza o uso para emissão de muitos boletos.
Em produção iremos continuar a usar a V1 e usaremos os WebHooks da V2, até a solução do limite de requisições da V2.
Inicialmente baixe o certificado para a aplicação no site do banco inter.
Precisamos converter os arquivos CRT e KEY baixados do banco em .p12
Para isso execute o comando:
openssl pkcs12 -export -out terna-interV1.p12 -inkey NOME_DO_KEY_BAIXADO_DO_BANCO.key -in NOME_DO_CRT_BAIXADO_DO_BANCO.crt -name "NOME_ARQUIVO_SAIDA"
Os boletos baixados podem ser armazenados em um diretório. Fazendo assim um cache e evitando baixar novamente o mesmo boleto.
O codigo abaixo deve ser executado apenas uma vez, antes da primeira chamada, normalmente colocado no main.
Storage.get().setRootPath(new File("/Diretorio_de_boletos"));
InputStream isP12 = Teste.class.getResourceAsStream("/terna-inter.p12");
String senha = "SENHA_UTILIZADA NO OPENSSL";
InterV1 interV1 = new InterV1(NUMERO_DA_CONTA, isP12, senha);
Pagador pagador = Pagador.builder().nome("Lucas Vilela de Souza Gonçalves")
.endereco("Rua das cove")
.numero("x")
.bairro("Santo Agostinho")
.cidade("Belo Horizonte")
.cep("30180122")
.email(EMNAIL)
.uf("MG")
.cnpjCpf(CPF_OU_CNPJ).build();
LocalDate dataVencimento = LocalDate.now().plusDays(1);
LocalDate outroDia = dataVencimento.plusDays(3);
Multa multa = Multa.builder()
.codigoMulta(CodigoMulta.PERCENTUAL)
.taxa(BigDecimal.valueOf(2.0))
.data(outroDia)
.build();
Mora mora = Mora.builder()
.codigoMora(CodigoMora.TAXAMENSAL)
.taxa(BigDecimal.valueOf(1.0))
.data(outroDia)
.build();
Emissao emissao = Emissao.builder()
.dataEmissao(LocalDate.now())
.seuNumero("TESTE")
.cnpjCPFBeneficiario(CNPJ_DA_EMPRESA)
.valorNominal(BigDecimal.TEN)
.dataVencimento(dataVencimento)
.multa(multa)
.mora(mora)
.numDiasAgenda(NumDiasAgenda.TRINTA)
.pagador(pagador).build();
EmissaoResponse emissaoResponse1 = interV1.emitirBoleto(emissao)
interV1.download( nossoNumero, false)
interV1.baixar(nossoNumero, CodigoBaixa.ACERTOS)
List<Content> consultar = interV1.consultar(null, null, LocalDate.of(2000, 01, 01), LocalDate.now(), null, null);