terça-feira, 19 de outubro de 2010

Validação de CNPJ

Embora a validação de CPF já esteja bastante divulgado e documentada na internet, a validação de CNPJ já não é tão simples de ser encontrada, até mesmo por não ser tão utilizada.

Portanto segue a seguir primeiro a explicação depois o código em PHP de uma função de validação de CNPJ.

A validação funciona da seguinte maneira:

Primeiro dígito verificador....
(n1*5)+(n2*4)+(n3*3)+(n4*2)+(n5*9)+(n6*8)+(n7*7)+(n8*6)+(n9*5)+(n10*4)+(n11*3)+(n12*2)
Soma-se tudo e dividi por 11. Após isso, subtrai-se 11 do resto da divisão.
O resultado desta subtração é o primeiro dígito verificador. Caso ele seja maior que 9 então ele é igual a zero.

Para o segundo dígito verificador....
(n1*6)+(n2*5)+(n3*4)+(n4*3)+(n5*2)+(n6*9)+(n7*8)+(n8*7)+(n9*6)+(n10*5)+(n11*4)+(n12*3)+(d1*2)

Soma-se tudo e dividi por 11. Após isso, subtrai-se 11 do resto da divisão.
O resultado desta subtração é o segundo dígito verificador. Caso ele seja maior que 9 então ele é igual a zero.

Função em PHP:

function ValidaCNPJ ($cnpj){
$soma = ((5*$cnpj[0])+(4*$cnpj[1])+(3*$cnpj[2])+(2*$cnpj[3])+(9*$cnpj[4])+(8*$cnpj[5])+(7*$cnpj[6])+(6*$cnpj[7])+(5*$cnpj[8])+(4*$cnpj[9])+(3*$cnpj[10])+(2*$cnpj[11]));
$n1 = 11 - ($soma%11);
if ($n1 > 9) $n1 = 0;

$soma = ((6*$cnpj[0])+(5*$cnpj[1])+(4*$cnpj[2])+(3*$cnpj[3])+(2*$cnpj[4])+(9*$cnpj[5])+(8*$cnpj[6])+(7*$cnpj[7])+(6*$cnpj[8])+(5*$cnpj[9])+(4*$cnpj[10])+(3*$cnpj[11])+(2*$n1));
$n2 = 11 - ($soma%11);
if ($n2 > 9) $n2 = 0;

if (($n1 == $cnpj[12]) && ($n2 == $cnpj[13]))
return TRUE;
else return FALSE;
}

É isso... Espero que tenham gostado....

Nenhum comentário:

Postar um comentário