Как проверить номер IBAN с помощью Apache IBANCheckDigit?

В своем приложении для Android я пытаюсь проверить, действителен ли номер банковского счета IBAN. Предположительно, это можно сделать с помощью Apache IBANCheckDigit. Я сейчас попробую сделать так:

IBANCheckDigit a = new IBANCheckDigit();
try {
    String checkDigit = a.calculate("MY_IBAN_NUMBER_HERE");
    Boolean b = a.isValid(checkDigit);
    Log.e("isValid: ", b.toString());
} catch (CheckDigitException e) {
    Log.e(this, "THIS IS AN ERROR");
}

Это однако, всегда печатает false, Даже если я введу свой собственный (правильный) номер IBAN, он также даст false,

Кто-нибудь знает, как использовать этот Apache IBANCheckDigit? Любые советы приветствуются!

2 ответа

Решение

Чтобы проверить правильность контрольных цифр IBAN, вы должны использовать isValid только метод:

Boolean b = a.isValid("MY_IBAN_NUMBER_HERE");
Log.e("isValid: ", b.toString());

calculate Метод вычислит контрольные цифры, если вы их еще не знаете.

iban4j может быть хорошим выбором для проверки IBAN, которая проверяет не только контрольную цифру, но также длину, структуру, типы символов и т. д....

домашняя страница: https://github.com/arturmkrtchyan/iban4j

Пример кода:

try {
    IbanUtil.validate("AT611904300234573201");
    // valid
} catch (IbanFormatException e) {
    // invalid
}

Maven зависимость:

<dependency>
     <groupId>org.iban4j</groupId>
     <artifactId>iban4j</artifactId>
     <version>1.0.0</version>
</dependency>
Другие вопросы по тегам