Валидация справочного номера 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