none
Validação de agência e conta bancárias. RRS feed

  • Pergunta

  • Boa tarde galera, estou com um problema de validação de agência e conta bancárias.

    Achei um documento na internet que tem o cálculo de validação, mas acho que esta defasado. Algumas contas novas como o caso que peguei do banco Itaú, esse cálculo não válida a agência e conta.

    Alguém já fez alguma validação de agência e conta bancária ou tem uma documentação mais atual?

    Não tem como eu anexar o documento, mas se alguém quiser dar uma olhada, é só me pedir que passo por e-mail.

    Desde já eu agradeço!


    Willian Barreto "O perfeito é desumano, porque o humano é imperfeito!" Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente.

    sexta-feira, 18 de outubro de 2013 14:54

Respostas

  • Boa tarde Luiz,

    Como eu citei acima, eu não consegui fazer validar o itau, porém eu tenho uma dll que meu antigo chefe fez e funciona perfeitamente.

    Segue abaixo o código que eu utilizo para validar BB, Bradesco, Santander e HSBC.

     /// <summary>Valida conta corrente
            /// </summary>
            ///<param name="banco">Passar o número (código) do banco</param>
            /// <param name="conta">Passar o número da conta sem o digito</param>
            /// <param name="digito">Passar o digito da conta</param>
            public bool validaConta(string banco, string conta, int digito)
            {
                string pesoBradesco = "32765432";
                string pesoSantander = "97310097131973";
                string pesoBB = "98765432";
                string pesoHSBC = "8923456789";

                int soma = 0;
                int resto = 0;
                int Digito = 0;
                int x = 0;

                switch (banco)
                {
                    case "001": //BCO DO BRASIL S/A
                        #region
                        x = pesoBB.Length - conta.Length;
                        for (int j = 0; j < x; j++)
                        {
                            conta = conta.Insert(0, "0");
                        }

                        for (int i = 0; i < pesoBB.Length; i++)
                        {
                            if (i < x)
                            {
                                soma += int.Parse(pesoBB.Substring(i, 1)) * 0;
                            }
                            else
                            {
                                soma += int.Parse(pesoBB.Substring(i, 1)) * int.Parse(conta.Substring(i, 1).ToString());
                            }
                        }

                        resto = soma % 11;
                        Digito = 11 - resto;
                        if (Digito == 11) { Digito = 0; } else if (Digito == 10) { Digito = 20; }

                        if (digito == 0 && Digito == 10)
                        {
                            return true;
                        }
                        else if (digito != Digito)
                        {
                            return false;
                        }
                        else
                        {
                            return true;
                        }
                        #endregion
                        break;
                    case "033": //SANTANDER
                        #region
                        x = pesoSantander.Length - conta.Length;

                        for (int j = 0; j < x; j++)
                        {
                            conta = conta.Insert(0, "0");
                        }

                        if (x == 0) { x = conta.Length; }

                        for (int i = 0; i < pesoSantander.Length; i++)
                        {
                            if (i < x && pesoSantander.Length != x)
                            {
                                soma += int.Parse(pesoSantander.Substring(i, 1)) * 0;
                            }
                            else
                            {
                                soma += int.Parse(pesoSantander.Substring(i, 1)) * int.Parse(conta.Substring(i, 1).ToString());
                            }
                        }

                        resto = soma % 10;
                        if (resto == 0)
                        {
                            Digito = 0;
                        }
                        else
                        {
                            Digito = 10 - resto;
                        }

                        if (digito != Digito)
                        {
                            return false;
                        }
                        else
                        {
                            return true;
                        }
                        #endregion
                        break;
                    case "104": //CAIXA ECONOMICA FEDERAL
                        #region
                        #endregion
                        break;
                    case "237": //BRADESCO S/A
                        #region
                        x = pesoBradesco.Length - conta.Length;
                        for (int j = 0; j < x; j++)
                        {
                            conta = conta.Insert(0, "0");
                        }

                        for (int i = 0; i < pesoBradesco.Length; i++)
                        {
                            if (i < x)
                            {
                                soma += int.Parse(pesoBradesco.Substring(i, 1)) * 0;
                            }
                            else
                            {
                                soma += int.Parse(pesoBradesco.Substring(i, 1)) * int.Parse(conta.Substring(i, 1).ToString());
                            }
                        }

                        resto = soma % 11;

                        if (resto == 0)
                        {
                            Digito = 0;
                        }
                        else
                        {
                            Digito = 11 - resto;
                        }
                        if (Digito == 10 || Digito == 11)
                        {
                            Digito = 0;
                        }

                        if (digito != Digito)
                        {
                            return false;
                        }
                        else
                        {
                            return true;
                        }
                        #endregion
                        break;
                    case "341": //BCO ITAU S/A
                        #region
                        #endregion
                        break;
                    case "399": //HSBC BANK BRASIL S.A.
                        #region
                        x = pesoHSBC.Length - conta.Length;

                        for (int i = 0; i < conta.Length; i++)
                        {
                            soma += int.Parse(pesoHSBC.Substring(i, 1)) * int.Parse(conta.Substring(i, 1));
                        }

                        Digito = soma % 11;

                        if (Digito == digito)
                        {
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                        #endregion
                        break;
                    default:
                        return false;
                        break;
                }
                return false;
            }

            /// <summary>Valida agência bancaria
            /// </summary>
            ///<param name="banco">Passar o número (código) do banco</param>
            /// <param name="agencia">Passar o número da agência sem o digito</param>
            /// <param name="digito">Passar o digito da conta</param>
            public bool validaAgencia(string banco, string agencia, int digito)
            {
                string pesoBradesco = "5432";
                string pesoBB = "5432";

                int soma = 0;
                int resto = 0;
                int Digito = 0;

                switch (banco)
                {
                    case "001": //Banco do Brasil
                        for (int i = 0; i < pesoBB.Length; i++)
                        {
                            soma += int.Parse(pesoBB.Substring(i, 1)) * int.Parse(agencia.Substring(i, 1));
                        }

                        resto = soma % 11;
                        Digito = 11 - resto;

                        if (Digito == 11) { Digito = 0; } else if (Digito == 10) { Digito = 20; }

                        if (digito != Digito)
                        {
                            return false;
                        }
                        else
                        {
                            return true;
                        }
                        break;
                    case "237": //Bradesco
                        for (int i = 0; i < pesoBradesco.Length; i++)
                        {
                            soma += int.Parse(pesoBradesco.Substring(i, 1)) * int.Parse(agencia.Substring(i, 1));
                        }

                        resto = soma % 11;
                        Digito = 11 - resto;

                        if (digito != Digito)
                        {
                            return false;
                        }
                        else
                        {
                            return true;
                        }
                    default:
                        return false;
                        break;
                }
                return false;
            }


    Willian Barreto "O perfeito é desumano, porque o humano é imperfeito!" Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente.

    quinta-feira, 31 de julho de 2014 15:17
  • Creio que cada banco tem seu proprio sistema (o que é uma burrice)

    Veja este documento com os principais bancos:

    http://rmsfinanceira.com.br/tabelas/MT/Material%20Seguros/Seguro%20BMG%20Mais/Regras%20Validacao%20Conta%20Corrente%20VI_EPS.doc

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    sexta-feira, 18 de outubro de 2013 15:33
    Moderador
  • Creio que vc vai ter que entrar em contato com o ITAU.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Giovani Cr quarta-feira, 23 de outubro de 2013 11:16
    sexta-feira, 18 de outubro de 2013 19:26
    Moderador

Todas as Respostas

  • Creio que cada banco tem seu proprio sistema (o que é uma burrice)

    Veja este documento com os principais bancos:

    http://rmsfinanceira.com.br/tabelas/MT/Material%20Seguros/Seguro%20BMG%20Mais/Regras%20Validacao%20Conta%20Corrente%20VI_EPS.doc

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    sexta-feira, 18 de outubro de 2013 15:33
    Moderador
  • William, é exatamente esse documento que eu tenho.

    Só que tem conta que essa regra não se aplica.

    Testei algumas contas do Itaú e são válidas e essa regra válida normal, mas a minha conta por exemplo que é nova fala que é inválida.


    Willian Barreto "O perfeito é desumano, porque o humano é imperfeito!" Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente.

    sexta-feira, 18 de outubro de 2013 17:29
  • Creio que vc vai ter que entrar em contato com o ITAU.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Giovani Cr quarta-feira, 23 de outubro de 2013 11:16
    sexta-feira, 18 de outubro de 2013 19:26
    Moderador
  • William, a do santander também esta furada, você conseguiu as regras atualizadas?
    segunda-feira, 24 de fevereiro de 2014 18:27
  • Pessoal conseguiram uma validação atual? também estou com problemas com itau, essa regra acima não esta validando.
    quarta-feira, 2 de julho de 2014 18:23
  • Richardidi,

    Eu tive problemas na validação do Itau também, porém eu achei uma dll que meu antigo chefe tinha feito, e nela contem a validação de conta corrente e cartão de crédito.

    Eu uso essa dll só para validar a conta do Itau, entrei em contato com ele para ver se ele ainda tem o fonte e se poderia me mandar para poder converter para CSharp.

    Se quiser, posso disponibilizar para você.


    Willian Barreto "O perfeito é desumano, porque o humano é imperfeito!" Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente.

    quarta-feira, 2 de julho de 2014 20:06
  • Eu gostaria do fonte da nova validação das contas do banco Itaú.

    Se alguém tive, eu preciso dos bancos Banco do Brasil, Bradesco e Santander.

    Obrigado.

    quinta-feira, 31 de julho de 2014 13:59
  • Boa tarde Luiz,

    Como eu citei acima, eu não consegui fazer validar o itau, porém eu tenho uma dll que meu antigo chefe fez e funciona perfeitamente.

    Segue abaixo o código que eu utilizo para validar BB, Bradesco, Santander e HSBC.

     /// <summary>Valida conta corrente
            /// </summary>
            ///<param name="banco">Passar o número (código) do banco</param>
            /// <param name="conta">Passar o número da conta sem o digito</param>
            /// <param name="digito">Passar o digito da conta</param>
            public bool validaConta(string banco, string conta, int digito)
            {
                string pesoBradesco = "32765432";
                string pesoSantander = "97310097131973";
                string pesoBB = "98765432";
                string pesoHSBC = "8923456789";

                int soma = 0;
                int resto = 0;
                int Digito = 0;
                int x = 0;

                switch (banco)
                {
                    case "001": //BCO DO BRASIL S/A
                        #region
                        x = pesoBB.Length - conta.Length;
                        for (int j = 0; j < x; j++)
                        {
                            conta = conta.Insert(0, "0");
                        }

                        for (int i = 0; i < pesoBB.Length; i++)
                        {
                            if (i < x)
                            {
                                soma += int.Parse(pesoBB.Substring(i, 1)) * 0;
                            }
                            else
                            {
                                soma += int.Parse(pesoBB.Substring(i, 1)) * int.Parse(conta.Substring(i, 1).ToString());
                            }
                        }

                        resto = soma % 11;
                        Digito = 11 - resto;
                        if (Digito == 11) { Digito = 0; } else if (Digito == 10) { Digito = 20; }

                        if (digito == 0 && Digito == 10)
                        {
                            return true;
                        }
                        else if (digito != Digito)
                        {
                            return false;
                        }
                        else
                        {
                            return true;
                        }
                        #endregion
                        break;
                    case "033": //SANTANDER
                        #region
                        x = pesoSantander.Length - conta.Length;

                        for (int j = 0; j < x; j++)
                        {
                            conta = conta.Insert(0, "0");
                        }

                        if (x == 0) { x = conta.Length; }

                        for (int i = 0; i < pesoSantander.Length; i++)
                        {
                            if (i < x && pesoSantander.Length != x)
                            {
                                soma += int.Parse(pesoSantander.Substring(i, 1)) * 0;
                            }
                            else
                            {
                                soma += int.Parse(pesoSantander.Substring(i, 1)) * int.Parse(conta.Substring(i, 1).ToString());
                            }
                        }

                        resto = soma % 10;
                        if (resto == 0)
                        {
                            Digito = 0;
                        }
                        else
                        {
                            Digito = 10 - resto;
                        }

                        if (digito != Digito)
                        {
                            return false;
                        }
                        else
                        {
                            return true;
                        }
                        #endregion
                        break;
                    case "104": //CAIXA ECONOMICA FEDERAL
                        #region
                        #endregion
                        break;
                    case "237": //BRADESCO S/A
                        #region
                        x = pesoBradesco.Length - conta.Length;
                        for (int j = 0; j < x; j++)
                        {
                            conta = conta.Insert(0, "0");
                        }

                        for (int i = 0; i < pesoBradesco.Length; i++)
                        {
                            if (i < x)
                            {
                                soma += int.Parse(pesoBradesco.Substring(i, 1)) * 0;
                            }
                            else
                            {
                                soma += int.Parse(pesoBradesco.Substring(i, 1)) * int.Parse(conta.Substring(i, 1).ToString());
                            }
                        }

                        resto = soma % 11;

                        if (resto == 0)
                        {
                            Digito = 0;
                        }
                        else
                        {
                            Digito = 11 - resto;
                        }
                        if (Digito == 10 || Digito == 11)
                        {
                            Digito = 0;
                        }

                        if (digito != Digito)
                        {
                            return false;
                        }
                        else
                        {
                            return true;
                        }
                        #endregion
                        break;
                    case "341": //BCO ITAU S/A
                        #region
                        #endregion
                        break;
                    case "399": //HSBC BANK BRASIL S.A.
                        #region
                        x = pesoHSBC.Length - conta.Length;

                        for (int i = 0; i < conta.Length; i++)
                        {
                            soma += int.Parse(pesoHSBC.Substring(i, 1)) * int.Parse(conta.Substring(i, 1));
                        }

                        Digito = soma % 11;

                        if (Digito == digito)
                        {
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                        #endregion
                        break;
                    default:
                        return false;
                        break;
                }
                return false;
            }

            /// <summary>Valida agência bancaria
            /// </summary>
            ///<param name="banco">Passar o número (código) do banco</param>
            /// <param name="agencia">Passar o número da agência sem o digito</param>
            /// <param name="digito">Passar o digito da conta</param>
            public bool validaAgencia(string banco, string agencia, int digito)
            {
                string pesoBradesco = "5432";
                string pesoBB = "5432";

                int soma = 0;
                int resto = 0;
                int Digito = 0;

                switch (banco)
                {
                    case "001": //Banco do Brasil
                        for (int i = 0; i < pesoBB.Length; i++)
                        {
                            soma += int.Parse(pesoBB.Substring(i, 1)) * int.Parse(agencia.Substring(i, 1));
                        }

                        resto = soma % 11;
                        Digito = 11 - resto;

                        if (Digito == 11) { Digito = 0; } else if (Digito == 10) { Digito = 20; }

                        if (digito != Digito)
                        {
                            return false;
                        }
                        else
                        {
                            return true;
                        }
                        break;
                    case "237": //Bradesco
                        for (int i = 0; i < pesoBradesco.Length; i++)
                        {
                            soma += int.Parse(pesoBradesco.Substring(i, 1)) * int.Parse(agencia.Substring(i, 1));
                        }

                        resto = soma % 11;
                        Digito = 11 - resto;

                        if (digito != Digito)
                        {
                            return false;
                        }
                        else
                        {
                            return true;
                        }
                    default:
                        return false;
                        break;
                }
                return false;
            }


    Willian Barreto "O perfeito é desumano, porque o humano é imperfeito!" Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente.

    quinta-feira, 31 de julho de 2014 15:17
  • Boa tarde,

    Conseguiu pegar as regras atualizadas? E a do ITAU conseguiu? A regra que consta dentro do arquivo que foi passado por outro colega está defasada...

    Desde já agradeço

    quarta-feira, 17 de junho de 2015 19:02
  • Bruno, boa tarde!

    Eu não achei nada na internet, na realidade como eu tinha um pouco de pressa, utilizei uma DLL desenvolvida em VB6 pelo meu antigo chefe e funcionou.

    Eu não tenho o fonte dela, pedi para ele e o mesmo falou que tinha perdido.

    Se quiser, te passo a DLL para ir usando a validação do Itau até achar a regra correta.


    Willian Barreto O perfeito é desumano, porque o humano é imperfeito! Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente.

    quarta-feira, 17 de junho de 2015 19:17