Página 1 de 1

Livraria para registro imediato de boletos

Enviado: 27 Set 2017 11:34
por bencz
Com o fim do boleto sem registro, foi gerado um grande problema para os e-commerces e sistemas que emitem boletos de forma pontual para os clientes, pensando neste problema, foi desenvolvido uma ferramenta para atender essa demanda, que serve para realizar o registro do boleto de forma instantânea junto ao banco, esta ferramenta se comunica DIRETAMENTE com o banco, por tanto, não ha comunicação com uma empresa terceira para depois de comunicar com o banco, mantendo toda a privacidade dos dados da cobrança da sua empresa.
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#

Código: Selecionar todos

        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

Código: Selecionar todos

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