none
Boleto Itau Asp.net RRS feed

  • Pergunta

  • Boa tarde galera,

    Estou precisando de uma ajuda, não sei o pq,mas não estou conseguindo ler o código de barras, já baixei dos leitores diferentes para meu celular, não sei onde que estou errando. 

    Alguém já passou por isso ?

    tenho o código se precisar eu posto, help me !

    terça-feira, 13 de janeiro de 2015 15:31

Respostas

  • Humm... vejamos por onde começamos...

    No manual do banco é explicado detalhado isto, vou tentar fazer um resumo.

    Temos 2 informações. A linha digitável e o código de barras. A linha digitável é aquele que tem o nrs assinalados na tua imagem.

    Primeiro temos que fazer o código de barras. A partir dele, geramos a linha digitável.

    Para o Itau o cod de barra é compostos por

    Cod do banco (341) +Código da moeda (9) + fator de vencimento + valor do titulo + Nosso numero + Agencia + Conta de cobrança + Digito da Agencia e conta + "000"

    A parir deste numero temos que calcular o digito verificado do codigo de barras ( o DAC) e "encaixar " na quarta posição, logo depois do nove. 

    Para calcular o digito deve ser usar o modulo 10 (vide manual)

    o Fator de vencimento é a diferença em dias da data de vencimento do titulo para a data de 07/10/1997

    O valor do titulo, basta multiplicar por 100 (retira a virgula) e transformar numa string com 10 digitos

    Assim tu terás o código de barras.

    • Marcado como Resposta Jeff Valentim quarta-feira, 14 de janeiro de 2015 18:09
    quarta-feira, 14 de janeiro de 2015 17:46

Todas as Respostas

  • Qual dll você está utilizando? Boleto.Net?

    Atenciosamente, Marcio Nogueira Cardoso Pinto.

    terça-feira, 13 de janeiro de 2015 17:09
  • Boa tarde Jeff.

    Pode ter vários motivos.

    Qual é a informação que esta gerando nas barras?

    Que é o tipo de código que está gerando ( 2 de 5, code 128)?

    Qual é o tamanho que está sendo impresso?

    terça-feira, 13 de janeiro de 2015 17:50
  • Não estou usando dll Marcio_Nogueira.

    quarta-feira, 14 de janeiro de 2015 13:54
  • Leandro estou lendo o manual do itau e estou vendo o tamanho que tem que ser, vou ajustar isso.

    estou com muita duvida sobre o DAC  no final de um campo mostra um DAC na linha digitável, nao entendi como funciona. 

    quarta-feira, 14 de janeiro de 2015 13:57
  • Leandro.

    Que é o tipo de código que está gerando ( 2 de 5, code 128)?

    Isso aí eu realmente não sei, até pq boleto é um coisa nova pra mim, sei que tem que ser de 2  de 5.

    quer que eu post o código que é gerado o código de barras ?

    Me ajuda com isso aí :s


    quarta-feira, 14 de janeiro de 2015 14:24
  • Jeff.

    Eu uso uma dll para gerar o codigo de barras. Somente monto o nr usado no codigo de barras conforme o manual de cada banco e depois gero.

    Veja o link que tem a explicação e modelos de como usar a dll.

    http://www.codeproject.com/Articles/20823/Barcode-Image-Generation-Library

    Duvidas, posta aí!.


    quarta-feira, 14 de janeiro de 2015 16:09
  • O grande problema de usar esse dll, vou ter que mudar muita coisas e já tem  muita coisa.

    Estou errando em alguma coisa que não está certo, hehehe, o código de barra é gerado, porém o leitor nao reconhece.  

    Posso postar pra vc baixar e verificar, logico se estiver afim, talvez sirva até pra vc tbm.

    quarta-feira, 14 de janeiro de 2015 16:53
  •   private string CodigoBarras25I(string Valor)

    { int f, f1, f2, i;
                string s;
                string texto;
                int fino = 1;
                int largo = 4;
                int altura = 50;
                string[] BarCodes = new string[100];
                StringBuilder Codbarras = new System.Text.StringBuilder();

                BarCodes[0] = "00110";
                BarCodes[1] = "10001";
                BarCodes[2] = "01001";
                BarCodes[3] = "11000";
                BarCodes[4] = "00101";
                BarCodes[5] = "10100";
                BarCodes[6] = "01100";
                BarCodes[7] = "00011";
                BarCodes[8] = "10010";
                BarCodes[9] = "01010";
                for (f1 = 9; f1 >= 0; f1--)
                    for (f2 = 9; f2 >= 0; f2--)
                    {
                        f = f1 * 10 + f2;
                        texto = "";
                        for (i = 0; i <= 4; i++)
                            texto += BarCodes[f1].Substring(i, 1) + BarCodes[f2].Substring(i, 1);
                        BarCodes[f] = texto;
                    }

                texto = Valor;
                if ((texto.Length % 2) != 0)
                    texto = "0" + texto;

                //draw da guarda inicial
                Codbarras.Append("<img src=\"" + _ImagesFolder + "/p.gif\" width=\"" + fino.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
                Codbarras.Append("<img src=\"" + _ImagesFolder + "/b.gif\" width=\"" + fino.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
                Codbarras.Append("<img src=\"" + _ImagesFolder + "/p.gif\" width=\"" + fino.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
                Codbarras.Append("<img src=\"" + _ImagesFolder + "/b.gif\" width=\"" + fino.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");

                // Draw dos dados
                while (texto.Length > 0)
                {
                    i = Convert.ToInt32(texto.Substring(0, 2));
                    texto = texto.Remove(0, 2);

                    s = BarCodes[i];

                    for (i = 0; i <= 9; i += 2)
                    {
                        if (s[i] == '0') f1 = fino;
                        else f1 = largo;

                        Codbarras.Append("<img src=\"" + _ImagesFolder + "/p.gif\" width=\"" + f1.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");

                        if (s[i + 1] == '0') f2 = fino;
                        else f2 = largo;

                        Codbarras.Append("<img src=\"" + _ImagesFolder + "/b.gif\" width=\"" + f2.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
                    }
                }

                // draw da guarda final
                Codbarras.Append("<img src=\"" + _ImagesFolder + "/p.gif\" width=\"" + largo.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
                Codbarras.Append("<img src=\"" + _ImagesFolder + "/b.gif\" width=\"" + fino.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");
                Codbarras.Append("<img src=\"" + _ImagesFolder + "/p.gif\" width=\"" + fino.ToString() + "\" height=\"" + altura.ToString() + "\" border=0>");

                return Codbarras.ToString();
            }

    quarta-feira, 14 de janeiro de 2015 16:58
  • outra duvida!

    DAC ?

    Fator vencimento ?

    Valor Titulo ?

    Como isso é gerado ???

    quarta-feira, 14 de janeiro de 2015 17:19
  • Jeff, não terei tempo agora de verificar detalhado o teu código. 

    Quando ao uso da dll, que te tu tenha idéia, basta adicionar a referencia do arquivo dll,  fazer a importação do namespace  "BarcodeLib" (Imports BarcodeLib) e trocar todo teu sub por isto:


    Private Sub GeraCodigoBarra(ByVal pmCodigoDeBarra As String)
            Dim codigobarras As New BarcodeLib.Barcode()
            codigobarras.Encode(TYPE.Interleaved2of5, pmCodigoDeBarra, 1030, 400)
            codigobarras.SaveImage("C:\CBarraBloqueto.jpg", SaveTypes.JPG)
     End Sub

    Ao meu ver, tu tens que mudar pouquíssima coisa para usar a dll.

    quarta-feira, 14 de janeiro de 2015 17:35
  • vou fazer isso agora, acabei de acertar o que estava falando na linha digitável.

    depois de testar eu respondo aqui, obrigado pela ajuda.


    • Editado Jeff Valentim quarta-feira, 14 de janeiro de 2015 17:44
    quarta-feira, 14 de janeiro de 2015 17:43
  • Humm... vejamos por onde começamos...

    No manual do banco é explicado detalhado isto, vou tentar fazer um resumo.

    Temos 2 informações. A linha digitável e o código de barras. A linha digitável é aquele que tem o nrs assinalados na tua imagem.

    Primeiro temos que fazer o código de barras. A partir dele, geramos a linha digitável.

    Para o Itau o cod de barra é compostos por

    Cod do banco (341) +Código da moeda (9) + fator de vencimento + valor do titulo + Nosso numero + Agencia + Conta de cobrança + Digito da Agencia e conta + "000"

    A parir deste numero temos que calcular o digito verificado do codigo de barras ( o DAC) e "encaixar " na quarta posição, logo depois do nove. 

    Para calcular o digito deve ser usar o modulo 10 (vide manual)

    o Fator de vencimento é a diferença em dias da data de vencimento do titulo para a data de 07/10/1997

    O valor do titulo, basta multiplicar por 100 (retira a virgula) e transformar numa string com 10 digitos

    Assim tu terás o código de barras.

    • Marcado como Resposta Jeff Valentim quarta-feira, 14 de janeiro de 2015 18:09
    quarta-feira, 14 de janeiro de 2015 17:46
  • última pergunta. rsrsrs

    isso aí que gera meu código de barras, pois meu leitor nao reconhece.

    só falta isso o0

        string sCampo1, sCampo2, sCampo3;
                string sCampoLivre, sValor, sbarra;

                sValor = Convert.ToInt32(_Valor * 100).ToString();

                //**************************************************************************************
                //Código de Barras
                //**************************************************************************************
                lNossoNumero = _Contrato.ToString("000000") + _Sequencial.ToString().PadLeft(5, '0');
                lNossoNumero += Mod_dig11(lNossoNumero);

                sValor = sValor.PadLeft(10, '0');
                sValor = FatorVencimento(_DtVencimento) + sValor;

                sCampoLivre = Left(_CedenteAgencia, 4).PadLeft(4, '0') + _Carteira.ToString("00").PadLeft(2, '0') +
                    Left(lNossoNumero, 11).PadLeft(11, '0') + Left(_CedenteConta, 7).PadLeft(7, '0') +
                    "0";
                sbarra = BancoCodigoFormatado() + "9" + sValor + sCampoLivre;
                lCodigoBarras = BancoCodigoFormatado() + "9" + Mod_dig11(sbarra) + sValor + sCampoLivre;

     protected string Mod_dig11(string cVariavel)
            {
                string lRetorno = "0";
                int nSoma = 0, nMult = 2, nIndice;

                for (nIndice = cVariavel.Length - 1; nIndice >= 0; nIndice--)
                {
                    nSoma += (Convert.ToByte(cVariavel[nIndice]) - 48) * nMult;
                    if (nMult == 9) nMult = 2;
                    else nMult++;
                }

                nSoma = nSoma * 10;
                nSoma = nSoma % 11;
                if ((nSoma > 9) || (nSoma < 2)) lRetorno = "1";
                else lRetorno = nSoma.ToString();

                return lRetorno;
            }

       public string BancoCodigoFormatado()
            {
                return _BancoCodigo.ToString("000");
            }

    quarta-feira, 14 de janeiro de 2015 18:09
  • Assim informado pelo manual do itau. 

    diz que no código de  barras só vai ter um DAC.

    quarta-feira, 14 de janeiro de 2015 18:18
  • Jeff. 

    Acho que o campo livre é o problema.

    Tu tens 

      sCampoLivre = Left(_CedenteAgencia, 4).PadLeft(4, '0') + _Carteira.ToString("00").PadLeft(2, '0') +
                    Left(lNossoNumero, 11).PadLeft(11, '0') + Left(_CedenteConta, 7).PadLeft(7, '0') +
                    "0";

    Para mim é:

    Nosso numero com 11 digitos + Agencia de cobranca com 4 digitos + Conta de cobranca com 5 digitos + digitos da agencia e com com 1 digito + "000".

    No manual do banco, tem um exemplo sugiro usar os mesmos dados (valor do titulo, nr da conta e data de vencimento) para ver ser o teu programa calcula igual.


    quarta-feira, 14 de janeiro de 2015 19:07
  • Leandro postei o codigo errado.

    É esse que oq estou usando, te passei de um outro banco.

    string sCampo1, sCampo2, sCampo3, sCampo4, sCampo5;
                string sCampoLivre, sValor, sbarra;

                sValor = Convert.ToInt32(_Valor * 100).ToString();

                //**************************************************************************************
                //Código de Barras
                //**************************************************************************************
                sValor = FatorVencimento(_DtVencimento).PadLeft(4, '0') + sValor.PadLeft(10, '0');
               
                //estava _SequNossNume    
                lNossoNumero = "00000001".PadLeft(7, '0');
                lNossoNumero += Mod_dig11(lNossoNumero);

                sCampoLivre = _Carteira.ToString("000") + lNossoNumero.Trim();
                sCampoLivre += Mod_dig10(_CedenteAgencia + _CedenteConta + _Carteira + lNossoNumero).Trim();
                sCampoLivre += _CedenteAgencia.PadLeft(4, '0') + _CedenteConta.PadLeft(5, '0').Trim();
                sCampoLivre += Mod_dig10(_CedenteAgencia + _CedenteConta) + "000".Trim();

                sbarra = BancoCodigoFormatado() + "9" + sValor + sCampoLivre.Trim();

                lCodigoBarras = BancoCodigoFormatado() + "9" + Mod_dig11(sbarra) + sValor  + sCampoLivre.Trim();

                

    quinta-feira, 15 de janeiro de 2015 14:52
  • Usei seu código para gerar e testar

                

    BarcodeLib.Barcode codigobarras = new BarcodeLib.Barcode();
    codigobarras.Encode(TYPE.Industrial2of5, "34126303000000010010900000001901185429030000", 500,200);codigobarras.SaveImage("C:\\bila\\CBarraBloqueto.jpg", SaveTypes.JPG);

    Ele gera a imagem perfeitamente, porém o leitor nao ler de forma alguma essa imagem.

    quinta-feira, 15 de janeiro de 2015 16:44
  • Usei seu código para gerar e testar

                

    BarcodeLib.Barcode codigobarras = new BarcodeLib.Barcode();
    codigobarras.Encode(TYPE.Industrial2of5, "34126303000000010010900000001901185429030000", 500,200);codigobarras.SaveImage("C:\\bila\\CBarraBloqueto.jpg", SaveTypes.JPG);

    Ele gera a imagem perfeitamente, porém o leitor nao ler de forma alguma essa imagem.

    Eu gerei uma impressão deste teu código e fiz a leitura dele em um leitor manual laser, e em um leitor bancário (aquele usado pelos caixas dos bancos). Em ambos os casos funcionou perfeitamente. Acredito que o problema seja o teu leitor.

    Outra dica. Usa as medias 1030 e 400 para width e height que o codigo de barras ficará do tamanho exato para o boleto.

    codigobarras.Encode(TYPE.Industrial2of5, "34126303000000010010900000001901185429030000", 1030,400);

    quinta-feira, 15 de janeiro de 2015 17:13
  • Que estranho já tentei usar leitores de outros celulares  e mesmo assim não estou conseguindo, que estranho.

    sexta-feira, 16 de janeiro de 2015 14:24
  • http://www.4shared.com/rar/htldSo4Bba/TodosOsBancos.html?

    veja lá por favor é só executar.

    só quero que veja se quando gerar o boleto se o código de barras está funcionando.


    sexta-feira, 16 de janeiro de 2015 17:30
  • Boa tarde leandro, 

    A imagem que é gerada é enorme, não sei se isso é certo, mas meu leitor não reconhece

    olha o tamanho que fica na imagem.

    quarta-feira, 21 de janeiro de 2015 15:47
  • Olá Jeff. Desculpe a demora em responder. Eu estava de férias.

    Esta dll, ela gera um jpg com o codigo de barras. Depois disto gerado eu coloco esta imagem na impressão do boleto. Só depois disto que eu tento fazer a leitura do código. Nunca tentei fazer a leitura do código da imagem direto.

    quinta-feira, 5 de fevereiro de 2015 11:57