Валидация справочного номера ISO 11649:2009 в Java

Мне интересно, есть ли в java библиотека, которая проверяет строку по ссылочному номеру SEPA RF в платежах.

Конечно, я могу реализовать одно из своих собственных правил в соответствии со стандартом ISO 11649:2009(E), но я не хотел бы изобретать велосипед заново. Я не могу погулять ни одной приличной библиотеки об этом. Знаете ли вы о какой-либо реализации для этого?

2 ответа

Его более-менее простой расчет:

          final String ref = "123456789012345678901"; //21 characters max
    final String rf = "2715"; // RF converted to numbers
    String rfAdd = "01"; // assuming 01 are the check digits
    final BigInteger refint = new BigInteger(ref + rf + rfAdd);
    int mod = refint.mod(new BigInteger("97"))
                    .intValue();
    if (mod != 1) {
       mod = 99 - mod;
       rfAdd = String.format("%02d", mod); // correct the check digits
    }
    System.out.println("RF" + rfAdd + ref);

Результатом должен быть действительный ссылочный код, объясненный этим источником
https://www.mobilefish.com/services/creditor_reference/creditor_reference.php

В API есть один для создания швейцарских QR-кодов ("QR Rechnung"):

общедоступное статическое логическое значение isValidISO11649Referenceâ € ‹(ссылка java.lang.String)

Проверяет, является ли строка допустимым ссылочным номером ISO 11649.

Строка проверяется на наличие допустимых символов, допустимой длины и действительной контрольной цифры. Пробелы игнорируются.

Параметры: ссылка - ссылка кредитора ISO 11649 для проверки

Возвращает: true, если ссылка на кредитора действительна, иначе false.

https://www.codecrete.net/qrbill-javadoc/net/codecrete/qrbill/generator/Payments.html

Другие вопросы по тегам