/// <summary> /// Verificar se um CNPJ é válido /// </summary> /// <param name="cnpj"></param> /// <returns></returns> public static bool IsValidCnpj(string cnpj) { cnpj = RemoveNaoNumericos(cnpj); string CNPJ; CNPJ = cnpj.Replace(".", ""); CNPJ = CNPJ.Replace("/", ""); CNPJ = CNPJ.Replace("-", ""); int[] digitos, soma, resultado; int nrDig; string ftmt; bool[] CNPJOk; ftmt = "6543298765432"; digitos = new int[14]; soma = new int[2]; soma[0] = 0; soma[1] = 0; resultado = new int[2]; resultado[0] = 0; resultado[1] = 0; CNPJOk = new bool[2]; CNPJOk[0] = false; CNPJOk[1] = false; try { for (nrDig = 0; nrDig < 14; nrDig++) { digitos[nrDig] = int.Parse( CNPJ.Substring(nrDig, 1)); if (nrDig <= 11) { soma[0] += (digitos[nrDig] * int.Parse(ftmt.Substring( nrDig + 1, 1))); } if (nrDig <= 12) { soma[1] += (digitos[nrDig] * int.Parse(ftmt.Substring( nrDig, 1))); } } for (nrDig = 0; nrDig < 2; nrDig++) { resultado[nrDig] = (soma[nrDig] % 11); if ((resultado[nrDig] == 0) || (resultado[nrDig] == 1)) { CNPJOk[nrDig] = ( digitos[12 + nrDig] == 0); } else { CNPJOk[nrDig] = ( digitos[12 + nrDig] == ( 11 - resultado[nrDig])); } } return(CNPJOk[0] && CNPJOk[1]); } catch { return(false); } }
protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if (value == null) { return(null); } int[] multiplicador1 = new int[12] { 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 }; int[] multiplicador2 = new int[13] { 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 }; int soma, resto; string digito, tempCnpj, CNPJ; CNPJ = value.ToString().Trim(); CNPJ = CNPJ.Replace(".", "").Replace("-", "").Replace("/", ""); if (CNPJ.Length != 14) { return(new ValidationResult("CNPJ Inválido.")); } tempCnpj = CNPJ.Substring(0, 12); soma = 0; for (int i = 0; i < 12; i++) { soma += int.Parse(tempCnpj[i].ToString()) * multiplicador1[i]; } resto = (soma % 11); if (resto < 2) { resto = 0; } else { resto = 11 - resto; } digito = resto.ToString(); tempCnpj = tempCnpj + digito; soma = 0; for (int i = 0; i < 13; i++) { soma += int.Parse(tempCnpj[i].ToString()) * multiplicador2[i]; } resto = (soma % 11); if (resto < 2) { resto = 0; } else { resto = 11 - resto; } digito = digito + resto.ToString(); if (CNPJ.EndsWith(digito)) { return(null); } else { return(new ValidationResult("CNPJ Inválido.")); } }
public bool ValidaCNPJ() { int[] multiplicador1 = new int[12] { 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 }; int[] multiplicador2 = new int[13] { 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 }; int soma; int resto; string digito; string tempCnpj; CNPJ = CNPJ.Trim(); CNPJ = Mascara.FormatarPropriedade(CNPJ); if (CNPJ.Length != 14) { return(false); } tempCnpj = CNPJ.Substring(0, 12); soma = 0; for (int i = 0; i < 12; i++) { soma += int.Parse(tempCnpj[i].ToString()) * multiplicador1[i]; } resto = (soma % 11); if (resto < 2) { resto = 0; } else { resto = 11 - resto; } digito = resto.ToString(); tempCnpj = tempCnpj + digito; soma = 0; for (int i = 0; i < 13; i++) { soma += int.Parse(tempCnpj[i].ToString()) * multiplicador2[i]; } resto = (soma % 11); if (resto < 2) { resto = 0; } else { resto = 11 - resto; } digito = digito + resto.ToString(); return(CNPJ.EndsWith(digito)); }