Bom dia Pessoal!
Provavelmente esse não é o lugar certo para publicar isso mas, acho importante compartilhar ...
O Código abaixo valida o número da NFe (44 caracteres) usando a linguagem C#. Ele somente verifica se o dígito verificador está batendo com o resto do código.
public static bool ValidarChaveNFe(String ChaveAcesso)
{
string chaveacessosemdigito = "";
string digitochaveacesso = "";
if (string.IsNullOrWhiteSpace(ChaveAcesso))
return false; //verificando se a chave não é nula.
if (ChaveAcesso.Length != 44)
return false; //verificando se a chave tem 44 caracteres
chaveacessosemdigito = Framework.ToolBox.StringFunctions.Left(ChaveAcesso, 43);
digitochaveacesso = Framework.ToolBox.StringFunctions.Right(ChaveAcesso, 1);
Int32 Peso = 2, Soma = 0, Contador, Digito;
for (Contador = (chaveacessosemdigito.Length - 1); Contador >= 0; Contador--)
{
Soma = Soma + (Convert.ToInt32(chaveacessosemdigito[Contador].ToString()) * Peso);
if (Peso < 9)
Peso++;
else
Peso = 2;
}
Digito = 11 - (Soma % 11);
if (Digito > 9) Digito = 0;
if (digitochaveacesso == Digito.ToString())
return true;
return false;
}
Caso o retorno da função seja "True", o numero da chave é válido... caso contrário o número é inválido.
Esperamos que seja útil para alguém!!!
Equipe Weblayer