أخطاء APK

كيف يُفحص نموذج IBAN لأذربيجان

في الصفحة رقم واحد: AZ84NABZ00000000137010002944. هذا مثال الحساب المنشور في قاعدة البنك المركزي. ليس حسابًا. لا يُرسل إليه مال.

السطر الثاني هو النموذج نفسه، وتغيّر فيه الرقم الأخير فقط. وهو ليس حسابًا أيضًا.

النموذج 28 رمزًا. AZ هي البلد. الرقمان التاليان للتحقق. ثم تأتي أربعة أحرف. والرموز العشرون الباقية مكان الحساب. إذا قصُر يُكتب صفر في أوله.

الفحص بقاعدة ISO 7064، أي MOD 97-10. الرموز الأربعة الأولى تنتقل إلى الآخر. الحرف يصير رقمًا: A هو 10، وZ هو 35. العدد الناتج يُقسم على 97. إذا كان الباقي 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))