Clipper On Line • Ver Tópico - Livraria para registro imediato de boletos
Mudar para estilo Clássico
Aqui você poderá divulgar/oferecer Produtos, Serviços e Negócios.
ATENÇÃO - Este Fórum tem Regras Especiais
Tópico Trancado

Livraria para registro imediato de boletos

27 Set 2017 11:34

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:
        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:
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);
}
Tópico Trancado