Cómo Comprobar la Validez de un Número de Cuenta mediante IBAN en Java

La validación de números de cuenta bancaria utilizando el formato IBAN (International Bank Account Number) es esencial para asegurar que los datos bancarios sean correctos y reducir posibles errores en transacciones financieras. En este artículo, exploraremos cómo verificar la validez de un número IBAN en Java, implementando un enfoque sencillo para comprobar que el formato y los dígitos de control del número son válidos.

¿Qué es el IBAN?

El IBAN es un código internacional que identifica de manera única una cuenta bancaria en cualquier parte del mundo. Su estructura se compone de:

  1. Código del país: Dos letras que representan el país de la cuenta (por ejemplo, «ES» para España).
  2. Dígitos de control: Dos números utilizados para verificar la validez del IBAN.
  3. Código bancario y número de cuenta: El resto de la secuencia, que varía según el país.

Requisitos para la Validación IBAN

Para validar un número IBAN, se debe realizar una serie de pasos que incluyen:

  1. Verificar el formato: Asegurarse de que el IBAN cumple con la longitud específica de cada país.
  2. Convertir a formato numérico: Cambiar las letras en dígitos.
  3. Calcular y comprobar los dígitos de control: Usar un cálculo mod 97 para validar el número IBAN completo.

Código en Java para Validar un Número IBAN

A continuación, te muestro una implementación en Java que permite validar un número IBAN.

public class IBANValidator {

    // Método principal para validar el IBAN
    public static boolean validarIBAN(String iban) {
        // Paso 1: Eliminar espacios y convertir el IBAN a mayúsculas
        iban = iban.replaceAll("\\s+", "").toUpperCase();

        // Paso 2: Comprobar que el IBAN tenga la longitud correcta
        if (!longitudIBANValida(iban)) {
            return false;
        }

        // Paso 3: Reordenar el IBAN (mover los primeros 4 caracteres al final)
        String ibanReordenado = iban.substring(4) + iban.substring(0, 4);

        // Paso 4: Convertir cada letra en números según su posición en el alfabeto
        StringBuilder ibanNumerico = new StringBuilder();
        for (char ch : ibanReordenado.toCharArray()) {
            if (Character.isLetter(ch)) {
                int valorNumerico = ch - 'A' + 10;
                ibanNumerico.append(valorNumerico);
            } else {
                ibanNumerico.append(ch);
            }
        }

        // Paso 5: Comprobar el IBAN usando el módulo 97
        return mod97(ibanNumerico.toString()) == 1;
    }

    // Método para comprobar la longitud del IBAN según el país
    private static boolean longitudIBANValida(String iban) {
        // Aquí puedes agregar más longitudes para otros países si es necesario
        int longitudEsperada = 0;
        String codigoPais = iban.substring(0, 2);

        switch (codigoPais) {
            case "ES": // España
                longitudEsperada = 24;
                break;
            // Agrega aquí otros países según sea necesario
            default:
                return false;
        }

        return iban.length() == longitudEsperada;
    }

    // Método para calcular el módulo 97
    private static int mod97(String numero) {
        String temp = "";
        for (int i = 0; i < numero.length(); i++) {
            temp += numero.charAt(i);
            int tempValor = Integer.parseInt(temp);
            if (tempValor >= 97) {
                tempValor %= 97;
                temp = String.valueOf(tempValor);
            }
        }
        return Integer.parseInt(temp) % 97;
    }

    public static void main(String[] args) {
        // Prueba con un IBAN de ejemplo
        String iban = "ES9121000418450200051332"; // Ejemplo de IBAN español válido
        if (validarIBAN(iban)) {
            System.out.println("El IBAN " + iban + " es válido.");
        } else {
            System.out.println("El IBAN " + iban + " no es válido.");
        }
    }
}

Explicación del Código

  1. Eliminar espacios y convertir a mayúsculas: Esto garantiza que el IBAN sea uniforme, independientemente del formato de entrada.
  2. Longitud del IBAN: Verificamos la longitud de acuerdo con el país. En este ejemplo, sólo incluimos el caso de España (24 caracteres), pero se pueden agregar otros países si es necesario.
  3. Reordenar el IBAN: Para el cálculo de validación, los primeros 4 caracteres se mueven al final.
  4. Convertir letras a números: Cada letra se convierte en su valor numérico (A = 10, B = 11, …, Z = 35) para realizar el cálculo.
  5. Cálculo mod 97: La función mod97 utiliza el algoritmo estándar para verificar la validez del IBAN. Si el resultado es 1, el IBAN es válido.

Pruebas y Ejecución

Al ejecutar el código, puedes probar con diferentes números IBAN para verificar su validez. Asegúrate de incluir pruebas con distintos formatos (con o sin espacios) y de diferentes países (si amplías el método de validación).

Conclusión

La validación de IBAN en Java es un proceso que asegura que los números de cuenta sean correctos antes de realizar operaciones bancarias. Este enfoque evita errores de transacciones y puede implementarse en cualquier aplicación que requiera manejo de cuentas bancarias. Con este método, puedes confiar en que el IBAN ingresado cumple con los estándares internacionales y es apto para su uso.

glow in the dark keyboard
Photo by seppe machielsen on Pexels.com

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde Tomás González: Formador y Desarrollador Web

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad