APK hataları

Azerbaycan IBAN örneği nasıl yoklanır

Sayfada bir numara var: AZ84NABZ00000000137010002944. Bu, Merkez Bankası kuralındaki hesaplama örneğidir. Hesap değildir. Para gönderilmez.

İkinci satır aynı örneğin kendisidir, yalnızca son rakam değişmiştir. O da hesap değildir.

Örnek 28 simvoldur. AZ ülkedir. Sonraki iki rakam denetimdir. Sonra dört harf gelir. Kalan 20 simvol hesap yeridir. Kısa olunca başına sıfır yazılır.

Yoklama ISO 7064 kuralıyadır, MOD 97-10. İlk dört simvol sona geçer. Harf rakam olur: A 10'dur, Z 35'tir. Çıkan sayı 97'ye bölünür. Kalan 1 ise denetim rakamı doğrudur. Bu, hesabın var olduğunu göstermez.

  • Kod önce 1 yazar. Örneğin denetim rakamı doğrudur.
  • İkinci sayı 28'dir. Son simvol değişince kalan 1 olmaz. Yanlışı tutmak için bu yeter.
  • Örneğin ortasındaki dört harf de örneğin parçasıdır. Kimseye aktarma adresi değildir.
  • Kendi programında kendi numaranı yoklayabilirsin. O numarayı sayfaya, sohbete ve örneğe yazma.
  • Kalan 1 olsa bile bankadan yoklamadan büyük tutar gönderme. Biçim doğru olabilir, hesap kapalı olabilir.
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))

İlgili rehberler