Bom dia!
Estou utilizando o código abaixo para validar um código de barras.
Se o código passar na formatação eu envio o mesmo na tag da NF-e.
O problema é que o código 03946509 passa na validação mas é recusado pela SEFAZ(NF-e).
Gostaria de saber se o método esta errado e se há algum melhor para efetuar esta validação.
public static boolean isValidBarCodeEAN(String barCode) {
int digit;
int calculated;
String ean;
String checkSum = "131313131313";
int sum = 0;
if (barCode.length() == 8 || barCode.length() == 13) {
digit = Integer.parseInt("" + barCode.charAt(barCode.length() - 1));
ean = barCode.substring(0, barCode.length() - 1);
for (int i = 0; i <= ean.length() - 1; i++) {
sum += (Integer.parseInt("" + ean.charAt(i))) * (Integer.parseInt("" + checkSum.charAt(i)));
}
calculated = 10 - (sum % 10);
return (digit == calculated);
} else {
return false;
}
}`