Ошибки APK

Как проверяется образец IBAN Азербайджана

На странице один номер: AZ84NABZ00000000137010002944. Это образец расчёта из правила Центрального банка. Это не счёт. Деньги на него не отправляют.

Вторая строка — тот же образец, изменена только последняя цифра. Это тоже не счёт.

Образец из 28 знаков. AZ — страна. Следующие две цифры — контроль. Потом идут четыре буквы. Остальные 20 знаков — место счёта. Если оно короткое, спереди пишут нули.

Проверка по ISO 7064, MOD 97-10. Первые четыре знака уходят в конец. Буква становится числом: A это 10, Z это 35. Полученное число делят на 97. Если остаток 1, контрольные цифры верны. Это не показывает, что счёт существует.

  • Код сначала печатает 1. Контрольные цифры образца верны.
  • Второе число — 28. Когда последний знак меняется, остаток не 1. Этого хватает, чтобы поймать опечатку.
  • Четыре буквы в середине образца — часть образца. Это не адрес, чтобы кому-то переводить.
  • В своей программе можно проверить свой номер. Этот номер не пиши на страницу, в чат и в образец.
  • Даже если остаток 1, не отправляй крупную сумму без проверки в банке. Форма может быть верной, а счёт закрыт.
NUMUNE = "AZ84NABZ00000000137010002944"
# Eyni nümunədir. Yalnız son rəqəm dəyişib. Hesab deyil.
POZUK = "AZ84NABZ00000000137010002945"

def qaliq(iban: str) -> int:
    metn = iban.replace(" ", "").upper()
    if not (len(metn) == 28 and metn.startswith("AZ")):
        raise ValueError("format")
    kecmis = metn[4:] + metn[:4]
    reqem = "".join(str(ord(h) - 55) if h.isalpha() else h for h in kecmis)
    return int(reqem) % 97

print(qaliq(NUMUNE))
print(qaliq(POZUK))

Похожие руководства