Validando NIF en Java con la librería de AEAT, los nuevos certificados de la FNMT y ¡sorpresa!

La librería para validación de NIF, NIE, CIF, etc de la AEAT es bastante buena y muy fácil de usar, como podéis ver en algunos post como este o este.

Hay que recordar que es del 2008 y la última versión es la 2.0.1, disponible aquí o aquí.

Actualmente, se ha desarrollado un web service por parte de la AEAT para la validación de los NIF de los contribuyentes. El documento de especificación del web services lo tenéis aquí.

Volviendo al ejemplo que nos muestra una de las páginas enlazadas anteriormente y que reproduzco aquí, podemos ver cómo su funcionamiento es sencillo:

import com.aeat.valida.Validador;
 
public class ValidacionNIF {
 public static void main(String[] args) {
 
 String input = "000000000";
 Validador validador = new Validador();
 int e = validador.checkNif(input);
 
 if (e > 0)
 System.out.println("OK");
 else
 System.out.println("MAL");
 
 }
}

Como ya algunos sabréis, en marzo comienzan a emitirse los nuevos certificados electrónico que sustituirán a los actuales certificados electrónicos de identidad de persona física de la FNMT-RCM, por lo que habrá que comprobar que las aplicaciones que funcionan actualmente con el certificado digital continúan haciéndolo con el nuevo certificado.

En la web de Administración Electrónica de la Junta de Andalucía se facilita un certificado para realizar las pruebas (aquí). Este certificado tiene el NIF 00000000T, que es válido pero usado para pruebas.

¿Qué sucede si usáis la librería de AEAT para validar el NIF de este certificado? Resulta que os devolvería un -1, indicando que no es un NIF válido. Seguramente, lo primero que haréis será comprobar en un cualquier web si ese NIF es correcto, y efectivamente, es correcto, pero como hemos comentado por encima antes, usado para pruebas.

La AEAT, que tiene controlado bastante bien este tema, cuando implementó la librería tenía conocimiento de estos NIF de prueba, y lo consideró en la misma. Si decompilamos la librería y buscamos nos encontraremos el siguiente código:

  if ((paramString.equals("00000001R")) || (paramString.equals("00000000T")) || (paramString.equals("99999999R"))) {
 return -1;
 }

Y aquí tenemos nuestra sorpresa si usamos el certificado de prueba y la librería de la AEAT para validar NIF.

Anuncios

4 pensamientos en “Validando NIF en Java con la librería de AEAT, los nuevos certificados de la FNMT y ¡sorpresa!

  1. Pingback: Validando CIF en Java (definitivo) | Sobre IT y más

  2. Gracias!! Me ha servido bastante para un proyecto en el trabajo. Decir que la descarga de esta librería es bastante difícil. De todos modos, he encontrado un repositorio nexus donde existe esta librería, os dejo el código para añadir al pom.xml de Maven:


    valnif
    valnif
    2.0.1

    emergya-valnif
    emergya-valnif
    http://nexus.emergya.es/nexus/content/repositories/public/

    Por cierto, me parece muy mal que la librería no tenga unos míseros JavaDocs donde explique un poco los métodos (ya ves que no pido mucho).

    Saludos!!

    Me gusta

  3. Gracias!! Me ha servido bastante para un proyecto en el trabajo. Decir que la descarga de esta librería es bastante difícil. De todos modos, he encontrado un repositorio nexus donde existe esta librería, os dejo el código para añadir al pom.xml de Maven:

    El código está en pastebin:
    http://pastebin.com/raw/aEFLu9CN

    Por cierto, me parece muy mal que la librería no tenga unos míseros JavaDocs donde explique un poco los métodos (ya ves que no pido mucho).

    Saludos!!

    Me gusta

  4. Muchas gracias por tu comentario!. Ten cuidado con la validación de los CIF si la usas, hay CIF que son válidos en el 2016 pero no lo eran en 2008.

    Creo que el blog ha escapado las etiquetas xml (https://en.support.wordpress.com/code/posting-source-code/)

    <groupId>valnif</groupId>
    <artifactId>valnif</artifactId>
    <version>2.0.1</version>
    

    Muchas gracias por ponerlo en pastebin

    Existe un documento en PDF explicando algo su funcionamiento pero al ser tan antigua la librería es difícil de encontrar.

    Saludos!

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s