Esta ferramenta foi desenvolvida em C++ com interface em C, para que seja possÃvel acessar a DLL de qualquer linguagem, para que possa ser utilizada com qualquer linguagem de programação, que consiga acessar uma DLL, por tanto, pode ser utilizado em ambiente WEB com ASP.Net, php ( ha restrições da versão ), e em ambiente Desktop, com Harbour, Clipper, C/C++, C#, VB....
Atualmente a DLL possui a implementação concluÃda dos seguintes bancos:
[*] Banco do Bradesco
[*] Banco Itau
Bancos que estão em fase de testes:
[*] Banco Santander
[*] Banco do Brasil
Caso você possua interesse na DLL, entre em contato para conversarmos!
Contato: alexandre.b@iwts.com.br
Segue alguns exemplos de uso da DLL:
C#
static void FazRegistro(Banco banco)
{
// Cria o pagador
Pagador pagador = new Pagador()
{
TipoDoDocumento = TipoDocumento.CPF,
NumeroDoDocumento = "99999999999",
Nome = "Benjamin Bruno",
Endereco = new EnderecoDoPagador()
{
Logradouro = "Travessa Municipal",
Numero = "855",
Bairro = "Centro",
Municipio = "Pinhão",
CEP = "049517-970",
UF = "SE"
}
};
// Cria o titulo
Titulo titulo = new Titulo()
{
Especie = EspecieDoTitulo.DM,
Aceite = Aceite.NAO,
Valor = 100.00,
NumeroDoDocumento = "DOC C#",
NossoNumero = "88776655",
DataDeEmissao = new DateTime(2017, 8, 25),
DataDeVencimento = new DateTime(2017, 10, 30),
Juros = new CampoValorEData() { Valor = 0.4, Data = new DateTime(2017, 11, 1) },
Multa = new CampoValorEData() { Valor = 8.00, Data = new DateTime(2017,11, 5) },
Bonificacao = new CampoValorEData() { Valor = 2.00, Data = new DateTime(2017,9,28) },
Abatimento = 1.00
};
titulo.Descontos = new CampoValorEData[3];
titulo.Descontos[0] = new CampoValorEData(2.35, new DateTime(2017, 09, 29));
titulo.Descontos[1] = new CampoValorEData(1.35, new DateTime(2017, 09, 30));
titulo.Descontos[2] = new CampoValorEData(0.35, new DateTime(2017, 10, 01));
string licencaDaConta = banco == Banco.BRADESCO ? LicencaDaConta_Bradesco : LicencaDaConta_Itau;
try
{
using (RegistraBoleto registraBoleto = new RegistraBoleto(LicencaDeUso, licencaDaConta) { RegistraEmProducao = false })
{
registraBoleto.Pagador = pagador;
registraBoleto.Titulo = titulo;
if(banco == Banco.BRADESCO)
registraBoleto.FazRegistroBradesco("DIR CERTIFICADO", "SENHA CERTIFICADO");
else
registraBoleto.FazRegistroItau("ID CLIENTE", "CHAVE SECRETA", "CHAVE ITAU");
DetalhesRetornoRequest detalhesRetorno = registraBoleto.GetDetalhesRetornoRequest();
if (detalhesRetorno.TituloRegistrado)
{
Console.WriteLine("Linha digitavel.: {0}", detalhesRetorno.LinhaDigitavel);
Console.WriteLine("Codigo de barras: {0}", detalhesRetorno.CodigoDeBarras);
Console.WriteLine("Nosso numero....: {0}", detalhesRetorno.NossoNumero);
detalhesRetorno.DetalhesDoStatus.ForEach(x => Console.WriteLine("Detalhe do status codigo {0}: {1}", x.CodigoStatus, x.DescricaoStatus));
//registraBoleto.GeraImagemEmPng($"out_{banco.ToString()}.png");
// Gera a imagem do boleto, em memoria
Bitmap img = registraBoleto.GeraImagemDoBoleto();
// Salva a imagem do boleto
img.Save($"out_{banco.ToString()}.png", ImageFormat.Png);
}
else
detalhesRetorno.DetalhesDoStatus.ForEach(x => Console.WriteLine("Detalhe do status codigo {0}: {1}", x.CodigoStatus, x.DescricaoStatus));
}
}
catch (RegistraBoletoException regex)
{
Console.WriteLine("Codigo do erro: {0}\nDescricao do erro: {1}", regex.CodigoDeErro, regex.Message);
}
}
C
int fazRegistro()
{
RegistraBoleto* registraBoleto = iniciaRegistraBoleto(LIC_USO, LIC_CNT);
if (registraBoleto == NULL)
return -1;
else if (getTotalDeErros(registraBoleto) > 0)
mostraErro(registraBoleto);
Pagador* pagador = iniciaPagador(registraBoleto, 1, "99999999999");
setNomeDoPagador(pagador, "Benjamin Bruno");
setEnderecoDoPagador(pagador, "Travessa Municipal", "855", NULL, "Centro", "049517-970");
setMunicipioDoPagador(pagador, "Pinhao", "SE");
Titulo* titulo = iniciaTitulo(registraBoleto);
setEspecieDoDocumento(titulo, DM);
setValorDoTituloDouble(titulo, 100.00);
setNumeroDoDocumentoDoTitulo(titulo, "NUM DOC C");
setNossoNumeroDoTitulo(titulo, "07918618");
setDataDeEmissaoDoTitutlo(titulo, "22.08.2017");
setVencimentoDoTitulo(titulo, "30.10.2017");
setJurosValorDouble(titulo, 0.4, "01.11.2017");
setMultaValorString(titulo, "800", "05.11.2017");
setBonificacaoValorDouble(titulo, 2.00, "28.08.2017");
setValorAbatimentoDouble(titulo, 1.00);
adicionaDescontoValorDouble(titulo, 2.35, "28.09.2017");
adicionaDescontoValorString(titulo, "1.00", "29.09.2017");
adicionaDescontoValorString(titulo, "1.00", "1.10.2017");
#if BRADESCO
Boleto* boleto = iniciaRequestBradesco_certificadoArquivo(registraBoleto, PATH_CERTIFICADO, SENHA_CERTIFICADO);
#elif ITAU
Boleto* boleto = iniciaRequestItau(registraBoleto, CLIENT_ID, CLIENT_SECRET, ITAU_CHAVE);
#endif
setConteudoDoBoleto(boleto, titulo, pagador);
RetornoRequest* retornoRequest = NULL;
retornoRequest = fazRegistro(boleto, FALSE);
if (retornoRequest == NULL)
mostraErro(registraBoleto);
else
{
if (mostraDetalhesRegistro(retornoRequest) == 0)
{
geraImagemDoBoletoEmPng(boleto, "out.png");
}
}
disposePagador(pagador);
disposeTitulo(titulo);
disposeBoleto(boleto);
disposeRegistraBoleto(registraBoleto);
if(retornoRequest != NULL)
disposeRetornoRequest(retornoRequest);
}