IBAN Generatorius ir Tikrinimo Įrankis - Testuojami Bankiniai Duomenys
Generuokite galiojančius testinius IBAN arba iš karto patikrinkite esamus. Palaiko 10 Europos šalių su MOD 97 tikrinimu. Idealiai tinka finansinės programinės įrangos testavimui ir kūrimui.
IBAN Generatorius ir Tikrintuvas
Dokumentacija
IBAN generatorius ir tikrinimo įrankis
Ką Šis Įrankis Daro
Testuojant finansinę programinę įrangą be tikrų banko sąskaitų duomenų? Jums reikės galiojančių IBAN formatų, kurie praeitų patikrinimo kontrolę. Šis įrankis generuoja atsitiktinius IBAN, kurie atitinka šaliai specifinius formatus, ir tikrina esamus pagal ISO 13616 standartą.
Štai praktinė problema, kurią jis sprendžia: kuriant mokėjimų sistemas ar bankininkystės programėles, jums reikia testinių duomenų, kurie nesukluptų ties patikrinimu, bet ir nekeltų rizikos atskleisti tikrų sąskaitų numerių. Dažna klaida, kurią daro kūrėjai, yra sukurti "netikrus" IBAN, kurie nepraeitų MOD 97 patikros algoritmo, dėl ko testai nepavyksta netinkamomis priežastimis.
Įrankis atlieka du pagrindinius uždavinius:
- Generatorius: Sukuria struktūriškai galiojančius IBAN bet kuriai palaikomai šaliai. Kiekvienas sugeneruotas numeris praeina tuos pačius patikrinimo algoritmus, kuriuos naudos jūsų gamybinė sistema.
- Tikrintuvas: Patikrina IBAN struktūrą, kontrolinius skaitmenis ir šaliai specifinius formatus. Naudingas derinant, kodėl IBAN yra atmetamas.
IBAN (Tarptautiniai Banko Sąskaitų Numeriai) standartizuoja, kaip bankai identifikuoja sąskaitas per sienas. Kiekvienas turi šalies kodą, du kontrolinius skaitmenis, apskaičiuotus MOD 97 metodu, ir Pagrindinį Banko Sąskaitos Numerį (BBAN), kuris skiriasi priklausomai nuo šalies. Tai tampa sudėtinga, nes Vokietija naudoja 22 simbolius, o Prancūzija - 27, ir vidinė struktūra visiškai skiriasi.
Kaip veikia IBAN
IBAN struktūra ir formatas
IBAN gali būti iki 34 raidinių-skaitinių ženklų, nors dauguma Europos šalių naudoja 22-27. Kiekvienas IBAN susideda iš trijų dalių:
- Šalies kodas: Du raidiniai kodai iš ISO 3166-1 alpha-2 standarto (DE Vokietijai, GB Jungtinei Karalystei)
- Kontroliniai skaitmenys: Du apskaičiuoti skaitmenys, kurie patvirtina visą IBAN naudojant MOD 97
- Bazinis banko sąskaitos numeris (BBAN): Šaliai specifinė dalis, apimanti:
- Banko identifikatorių (kartais vadinamas maršruto numeriu arba banko kodu)
- Filialo identifikatorių (JK vadina tai rūšiavimo kodu)
- Sąskaitos numerį
- Kartais papildomus nacionalinius kontrolinius skaitmenis
Paimkime Vokietijos IBAN kaip pavyzdį. Modelis DE2!n8!n10!n reiškia:
DE= šalies kodas2!n= du skaitiniai kontroliniai skaitmenys8!n= aštuonių skaitmenų banko kodas (Bankleitzahl)10!n= dešimties skaitmenų sąskaitos numeris (Kontonummer)
Kas žmones dažnai stebina, tai kiek šie formatai skiriasi tarp šalių:
| Šalis | Ilgis | Struktūra | Pavyzdys |
|---|---|---|---|
| Vokietija (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| JK (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| Prancūzija (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| Ispanija (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| Italija (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
IBAN patvirtinimo algoritmas
IBAN patvirtinimas remiasi MOD 97 algoritmu, apibrėžtu ISO 7064. Štai kas iš tikrųjų vyksta patvirtinant IBAN:
- Perkelkite pirmus keturis ženklus (šalies kodą ir kontrolinius skaitmenis) į pabaigą
- Pakeiskite kiekvieną raidę skaičiais: A=10, B=11, iki Z=35
- Apskaičiuokite gautos skaitmenų eilutės modulį 97
- Galiojantys IBAN visada sukuria lygiai 1 liekaną
Matematiškai:
Kodėl būtent MOD 97? Jis pagauna beveik visas įprastas klaidas: pavienių skaitmenų klaidas, sukeistus skaitmenis, net daugumą rinkimo klaidų, susijusių su panašiai atrodančiais ženklais. Praktikoje pastebėjau, kad jis pagauna apie 99,9% atsitiktinių duomenų įvedimo klaidų, todėl tapo tarptautiniu standartu.
Vienas įdomus dalykas: generuojant IBAN, kontroliniai skaitmenys apskaičiuojami pradedant nuo "00", vykdant algoritmą, o tada naudojant 98 minus liekaną. Tai užtikrina, kad galutinis IBAN bus teisingai patvirtintas.
Įrankio funkcijos
IBAN generatorius
Generuokite bandyminius IBAN numerius, kurie praeina patikrinimą nenaudojant tikrų sąskaitų numerių:
- Šalies pasirinkimas: Palaiko 10 pagrindinių Europos šalių (Vokietija, JK, Prancūzija, Ispanija, Italija, Nyderlandai, Šveicarija, Austrija, Belgija, Lenkija)
- Formato atitiktis: Kiekvienas sugeneruotas IBAN atitinka oficialią šalies struktūrą ir praeina MOD 97 patikrinimą
- Vieno paspaudimo generavimas: Jokios konfigūracijos nereikia—tiesiog pasirinkite šalį ir generuokite
- Kopijavimas į iškarpinę: Vienas paspaudimas nukopijuoja visą IBAN numerį įkėlimui į jūsų testus
- Vizualus išskaidymas: Spalvomis pažymėtas rodinys atskirai rodo šalies kodą, patikros skaitmenis ir banko informaciją
Generavimo procesas:
- Pasirenka šaliai specifinį formato šabloną
- Užpildo atsitiktinius skaitmenis/raides BBAN dalyje
- Apskaičiuoja patikros skaitmenis naudojant MOD 97
- Surenka ir patikrina visą IBAN
Profesionalus patarimas: Pildant testinę duomenų bazę, generuokite IBAN numerius iš kelių šalių, kad patikrintumėte tarptautinius scenarijus. Realios mokėjimo sistemos dažnai turi specifinių šalių kraštutinių atvejų.
IBAN tikrintuvas
Patikrinkite IBAN struktūrą ir aptikite formatavimo problemas prieš pat diegimą:
- Formato patikrinimas: Tikrina šaliai specifinį ilgį ir struktūros reikalavimus
- MOD 97 patikrinimas: Vykdo visą patikros skaitmenų algoritmą
- Komponento išskaidymas: Rodo tiksliai, kaip IBAN padalinamas į šalies kodą, patikros skaitmenis, banko kodą ir sąskaitos numerį
- Specifinės klaidos pranešimai: Vietoj bendrų „netinkamas" pranešimų, matysite, kas konkrečiai yra negerai
- Automatinis formatavimas: Tvarko IBAN numerius su arba be tarpų—formatavimas vyksta automatiškai
Patikrinimo veiksmai vykdomi eilės tvarka:
- Šalies kodo atpažinimas (ar palaikoma?)
- Ilgio patikrinimas (teisingas simbolių skaičius tai šaliai?)
- Simbolių tipo patikrinimas (skaičiai ten, kur tikėtasi, raidės ten, kur leidžiama)
- MOD 97 patikros skaitmenų skaičiavimas (ar matematika suveikia?)
Įprastas scenarijus: Jūsų API gauna IBAN iš vartotojo įvesties su nesuderintais tarpais. Naudokite tikrintuvą normalizuoti prieš apdorojant—jis automatiškai pašalina tarpus ir parodo tinkamą formatą.
Žingsnis po Žingsnio Vadovas
IBAN Generavimas
- Pasiekite Generatoriaus Skirtuką: Spustelėkite "Generatorius" skirtuką (pasirinktas pagal numatytuosius nustatymus)
- Pasirinkite Šalį: Pasirinkite norimą šalį iš išskleidžiamojo meniu
- Sugeneruokite IBAN: Spustelėkite mygtuką "Generuoti IBAN"
- Peržiūrėkite Rezultatą: Sugeneruotas IBAN pasirodys žemiau su vizualia jo komponentų išskaidymo diagrama
- Nukopijuokite į Iškarpinę: Spustelėkite mygtuką "Kopijuoti į iškarpinę", kad nukopijuotumėte IBAN naudojimui kitur
IBAN Tikrinimas
- Pasiekite Tikrintojo Skirtuką: Spustelėkite "Tikrintojas" skirtuką
- Įveskite IBAN: Įveskite arba įklijuokite IBAN į įvesties laukelį
- Tarpai ir formatavimas bus automatiškai sutvarkyti
- Įrankis priima tiek suformatuotus (su tarpais), tiek nesuformatuotus IBAN
- Peržiūrėkite Tikrinimo Rezultatus: Įrankis automatiškai tikrins IBAN jums renkant
- Patikrinkite Detales: Galiems IBAN bus rodoma komponentų išskaidymo diagrama
- Peržiūrėkite Klaidas: Negaliems IBAN bus pateikiamos specifinės klaidų žinutės, padedančios nustatyti problemą
Naudojimo Atvejai ir Realaus Pasaulio Taikymai
Programinės Įrangos Kūrimas ir Testavimas
API Testavimas: Kuriant mokėjimo integracijos testus, reikia IBAN numerių, kurie praeina validaciją, bet nesukelia realių operacijų. Sugeneruokite testinių IBAN numerių partiją automatiniams testams, užtikrinant, kad klaidų valdymas veiktų teisingai skirtingų šalių formatams.
Formos Validavimas: Testuojate atsiskaitymo eigą? Naudokite validatorių patikrinti, ar jūsų priekinės dalies validavimas atitinka galinės dalies reikalavimus. Dažna problema - IBAN formato priėmimas, kurį vėliau atmeta mokėjimo procesorius - šios problemos aptikimas kūrimo metu sutaupo kliento nepasitenkinimo.
Kraštinių Atvejų Testavimas: Dauguma kūrėjų testuoja su vienu ar dviem šalių formatais. Kas nutinka, kai šveicarų klientas su 21 simbolio IBAN naudoja sistemą, sukurtą aplink vokiškus 22 simbolių IBAN? Sugeneruokite įvairius šalių formatus, kad išbandytumėte laukų ilgius ir validavimo logiką.
Regresinio Testavimo: Atnaujinus IBAN validavimo biblioteką, paleiskite sugeneruotus testinių IBAN numerius per seną ir naują versijas. Bet kokie skirtumai rodo lūžiančius pakeitimus, kurie gali paveikti produkciją.
Finansinių Programų Kūrimas
Mokėjimo Sistemos: Kuriant tarptautinių perlaidų funkcionalumą, susidursite su scenarijais, kur pats IBAN struktūros formatas lemia maršrutizavimo elgseną. Nyderlandų IBAN (kuriuose yra raidžių) testavimas atskleidžia klaidas, kurių neaptiks vien skaitmeniniai vokiški IBAN.
Bankinė Programinė Įranga: IBAN numerių analizavimas siekiant išgauti banko kodus ir skyriaus identifikatorius reikalauja šaliai specifinės logikos. Sugeneruokite IBAN kiekvienai palaikomai šaliai, kad patikrintumėte, ar analizavimo algoritmas teisingai identifikuoja šiuos komponentus.
Atitikties Patikrinimas: Finansinės taisyklės dažnai reikalauja IBAN validavimo prieš apdorojimą. Naudokite šį įrankį sukurti testavimo atvejams, įrodantiems, kad jūsų sistema atmeta neteisingus kontrolinius skaitmenis ir netinkamus formatus - būtina audito sekoms.
Švietimas ir Dokumentacija
Bankinių Standartų Švietimas: Studentams, besimokantiems apie tarptautinius mokėjimo sistemas, naudinga matyti tikras IBAN struktūras. Sugeneruokite pavyzdžius iš kelių šalių, kad iliustruotumėte, kaip standartizacija veikia skirtingose bankinėse sistemose.
API Dokumentacija: Vietoj potencialiai realių IBAN, sugeneruokite švarius pavyzdžius. Dokumentacija su frazėmis kaip "Naudokite IBAN DE89370400440532013000 testavimui" iš karto pasako kūrėjams, kad tai saugios testavimo reikšmės.
Duomenų Operacijos
Duomenų Bazės Pildymas: Kūrimo ir parengiamosios aplinkos reikalauja realistinių testavimo duomenų. Sugeneruokite įvairius IBAN numerius užpildyti duomenų bazę reprezentatyviomis tarptautinėmis kliento profiliais be privatumo problemų.
Duomenų Anoniminimas: Migruojant iš gamybinės į parengiamąją aplinką? Pakeiskite tikrus IBAN numerius sugeneruotais, kurie išlaiko formato galiojimą testavimui ir pašalina jautrius duomenis. Kritiškai svarbu GDPR atitikčiai kūrimo aplinkose.
Alternatyvos ir kada jas naudoti
Skirtingi įrankiai tinka skirtingiems poreikiams. Štai nuoširdus palyginimas:
Komercinės bankininkystės API (pvz., Stripe, Adyen)
Geriausios gamybiniam tikrinimui prieš tikrus banko registrus. Šios paslaugos patikrina, ar IBAN atitinka faktiškai aktyvią sąskaitą, o ne tik ar teisingas formatas.
Naudoti, kai: Jums reikia patvirtinti, kad IBAN egzistuoja ir gali gauti mokėjimus, o ne tik tai, kad struktūriškai teisingas.
Apribojimai: Kainuoja pinigų (paprastai už kiekvieną API iškvietimą), reikalauja integracijos darbo, ir jums vis tiek reikia bandomųjų IBAN kūrimui — čia ir padeda šis įrankis.
Programavimo kalbų bibliotekos (ibantools, iban.js, python-stdnum)
Geriausios įdiegtam tikrinimui jūsų programos kode. Bibliotekos kaip ibantools JavaScript arba python-stdnum Python teikia tiek tikrinimo, tiek generavimo funkcijas.
Naudoti, kai: Jums reikia programinio priėjimo kaip dalies kuriant ar vykdant tikrinimą.
Apribojimai: Reikalauja integracijos pastangų, ir jums vis tiek reikia greito būdo rankiniu būdu patikrinti konkrečius IBAN derinant. Čia žiniatinklio įrankis yra greitesnis nei rašant testavimo scenarijus.
SWIFT IBAN registras
Oficialus IBAN registras, kurį tvarko SWIFT, išvardija visų šalių formatus ir tikrinimo taisykles. Tai autoritetingas šaltinis.
Naudoti, kai: Jūs diegiate IBAN palaikymą nuo nulio ir reikia oficialių specifikacijų.
Apribojimai: Tai dokumentacija, ne įrankis. Jums vis tiek reikėtų sukurti ar rasti kažką, kas iš tikrųjų generuotų ir tikrintų IBAN pagal tas specifikacijas.
Oficialūs banko tikrintuvai
Daugelis nacionalinių bankų teikia šaliai specifinius tikrintuvus (pvz., Bundesbank vokiškiems IBAN). Šie yra labai tikslūs savo šalyje.
Naudoti, kai: Dirbate tik su viena šalimi ir reikia banko lygio tikrinimo detalių.
Apribojimai: Vienos šalies fokusas. Jei kuriate tarptautines mokėjimų sistemas, jums reikėtų tikrintuvų kiekvienai šaliai.
Kada šis įrankis turi prasmę
Naudokite šį įrankį, kai reikia greito, be papildomo nustatymo testavimo be API integracijos. Ypač naudingas kuriant ir derinant, kai reikia iš karto sugeneruoti teisingus testavimo duomenis arba patikrinti, kodėl konkretus IBAN nepraėjo tikrinimo. Jis nepakeis gamybinių tikrinimo bibliotekų jūsų kodo bazėje, bet yra greitesnis nei rašant trumpalaikius testavimo scenarijus.
Dažniausiai užduodami klausimai
Kas yra IBAN ir kodėl tai svarbu?
IBAN reiškia Tarptautinį Banko Sąskaitos Numerį - standartizuotą formatą, sukurtą Tarptautinės standartizacijos organizacijos (ISO), siekiant sumažinti klaidų tarpvalstybiniuose mokėjimuose. Prieš IBAN, kiekviena šalis naudojo savo sąskaitos numerio formatą, kas dažnai lėmė klaidas ir nepavykusius pervedimus. IBAN prideda šalies kodus ir patikros skaitmenis, kad būtų galima aptikti klaidas dar prieš pinigų judėjimą.
Kiek tiksliai sugeneruoti IBAN numeriai?
Sugeneruoti IBAN numeriai yra matematiškai teisingi ir praeina MOD 97 validavimo algoritmą, apibrėžtą ISO 13616 standarte. Jie laikosi tinkamų šaliai specifinių struktūrų. Tačiau jie yra atsitiktinai sukurti ir neatitinka realių banko sąskaitų - tai ir yra tikslas. Jie yra saugūs testavimui būtent todėl, kad netyčia nepataikys į realią sąskaitą.
Kokias šalis palaiko šis įrankis?
Šiuo metu 10 Europos šalių: Vokietija, Jungtinė Karalystė, Prancūzija, Ispanija, Italija, Nyderlandai, Šveicarija, Austrija, Belgija ir Lenkija. Šios apima dažniausiai Europos mokėjimo sistemose sutinkamus IBAN formatus. Reikia kitos šalies? Atsiliepimų forma yra geriausias būdas pateikti prašymą dėl papildymų.
Ar galiu naudoti sugeneruotus IBAN numerius faktiniams pinigų pervedimams?
Jokiu būdu. Tai tik testiniai IBAN numeriai. Jie praeina formato patikrinimą, bet nėra susieti su tikromis banko sąskaitomis. Jų naudojimas faktiniams sandoriams baigsis mokėjimo nesėkme arba atmetimu. Jie skirti tik kūrimui, testavimui ir mokomosioms reikmėms.
Kaip veikia IBAN validavimas?
Tikrintojas vykdo keturis patikrinimus eilės tvarka:
- Šalies kodas: Ar tai pripažintas dviejų raidžių kodas?
- Ilgis: Ar atitinka reikalaujamą šalies ilgį? (Vokietija = 22, JK = 22, Prancūzija = 27 ir t.t.)
- Simbolių tipai: Ar raidės ir skaičiai yra tinkamose pozicijose pagal šalies formatą?
- MOD 97 patikrinimas: Ar matematinė kontrolinė suma lygi 1 pagal ISO 7064?
Jei bet kuris patikrinimas nepavyksta, matysite konkretų klaidos pranešimą, paaiškinantį, kas yra ne taip.
Ar tarpai turi reikšmės IBAN numeriuose?
Ne validavimui. IBAN numeriai paprastai rodomi su tarpais (po keturis) skaitomumui, tačiau tarpai yra kosmetiniai. DE89 3704 0044 0532 0130 00 ir DE89370400440532013000 yra identiški validavimo tikslais. Įrankis automatiškai tvarko abu formatus.
Ar mano duomenys siunčiami serveriui ar kur nors saugomi?
Ne. Viskas vyksta jūsų naršyklėje naudojant JavaScript. Jokie IBAN duomenys nepalieka jūsų kompiuterio, nepasiekia serverio ir niekur nesaugomi. Galite tai patikrinti atidarę naršyklės kūrimo įrankius ir stebėdami tinklo kortelę - pamatysite jokių užklausų generuojant ar tikrinant IBAN numerius.
Kas, jei man reikia patikrinti IBAN iš šalies, kurios nėra sąraše?
Įrankis šiuo metu palaiko tik 10 šalių išskleidžiamajame meniu. Naujų šalių pridėjimas reikalauja kiekvienai šaliai specifinių formato taisyklių įgyvendinimo. Jei jums reikia patikrinimo šalims kaip Norvegija, Švedija ar kitoms, praneškite per atsiliepimų formą - mes prioritetą teikiame papildymams pagal paklausą.
Kodėl teisingai suformuotas IBAN gali nepavykti tikrinant?
Dažniausios priežastys:
- Neteisingi kontroliniai skaitmenys: Net vienas neteisingas skaitmuo nepavyksta MOD 97 teste
- Rašybos klaidos: Sukeisti simboliai ar neteisingi skaitmenys bet kur IBAN numeryje
- Neteisingas ilgis: Trūkstami ar papildomi simboliai tai šaliai
- Netinkami simboliai: Raidės ten, kur leidžiami tik skaičiai, arba atvirkščiai
- Nepalaikoma šalis: Šalies kodas egzistuoja, bet nėra mūsų palaikomų sąraše
Klaidos pranešimas tiksliai pasakys, kas yra ne taip.
Kaip galiu pranešti apie klaidas ar paprašyti naujų funkcijų?
Naudokite atsiliepimų formą puslapio apačioje. Konkretūs klaidų pranešimai su IBAN pavyzdžiais yra naudingiausiai. Funkcijų prašymai su paaiškintu naudojimo atveju padeda nustatyti, kas bus kuriama toliau.
Koks skirtumas tarp IBAN ir SWIFT/BIC kodų?
IBAN identifikuoja konkrečias banko sąskaitas, o SWIFT/BIC kodai identifikuoja bankus ar banko skyrius. Galvojant apie tai: SWIFT kodas pasako, kuris bankas, o IBAN - kuri sąskaita tame banke. Tarptautiniams pervedimams dažnai reikia abiejų - SWIFT kodas nukreipia į teisingą banką, o IBAN - į konkrečią sąskaitą.
Ar galima patikrinti IBAN nežinant šalies?
Taip, nes pirmosios dvi kiekvieno IBAN raidės yra šalies kodas. Tikrintojas skaito tas pirmąsias dvi raides, kad nustatytų, kokį šalies formatą taikyti. Todėl šalies nustatymas vyksta automatiškai įklijuojant IBAN - nereikia rankiniu būdu pasirinkti šalies.
Ar yra IBAN formatų šalyse už Europos ribų?
Taip, bet mažiau. Nors IBAN atsirado Europoje ir turi didžiausią įsisavinimą, tokios šalys kaip Saudo Arabija, JAE, Brazilija ir kitos jį priėmė. Šis įrankis šiuo metu sutelkia dėmesį į Europos formatus, nes jie sudaro didžiąją tarpvalstybinių sandorių dalį. SWIFT IBAN registras palaiko išsamų sąrašą.
Kaip skaityti ir iššifruoti IBAN
Ar kada nors žiūrėjote į IBAN, pvz., DE89370400440532013000, ir klausėte savęs, ką reiškia kiekviena dalis? Štai kaip iššifruoti bet kokį IBAN:
1 žingsnis: Šalies kodas (pirmi 2 simboliai)
DE= Vokietija- Nurodo, kokios šalies formato taisyklės taikomos
2 žingsnis: Kontroliniai skaitmenys (kiti 2 simboliai)
89= apskaičiuota kontrolinė suma- Šie skaitmenys patikrina, ar visas IBAN yra teisingas, naudojant MOD 97 metodą
3 žingsnis: Banko kodas (skiriasi priklausomai nuo šalies)
37040044vokiškuose IBAN = 8 skaitmenų banko identifikatorius- Skirtingose šalyse naudojami skirtingo ilgio kodai (JK naudoja 4 simbolius)
4 žingsnis: Sąskaitos numeris (likusieji simboliai)
0532013000= tikrasis sąskaitos numeris tame banke- Ilgis ir formatas priklauso nuo šalies
Skirtingos šalys BBAN dalį organizuoja skirtingai. JK IBAN apima 6 skaitmenų rūšiavimo kodą (skyriaus identifikatorių) tarp banko kodo ir sąskaitos numerio. Prancūzų IBAN sujungia banko kodą, skyriaus kodą ir sąskaitos numerį su kontroliniu raktu. Šių skirtumų supratimas yra esminis analizuojant IBAN programiškai.
Dažniausios IBAN Validavimo Klaidos ir Kaip Jas Ištaisyti
Įgyvendinant IBAN validavimą, nuolat susidursite su šiomis problemomis:
"Neteisingi Kontroliniai Skaitmenys" Klaida
Priežastis: MOD 97 skaičiavimas nesudaro 1. Arba kontroliniai skaitmenys yra neteisingi, arba klaida yra kitur IBAN kode.
Sprendimas: Paleiskite validavimą iš naujo ištaisę bet kokias rinkimo klaidas. Net vienas neteisingas simbolis bet kurioje IBAN vietoje sukelia kontrolinių skaitmenų klaidą. Tai yra specialiai sukurta, kad būtų galima aptikti duomenų įvedimo klaidas.
"Netinkamas Šalies Ilgis" Klaida
Priežastis: IBAN turi per daug arba per mažai simbolių pagal šalies kodą.
Sprendimas: Patikrinkite, ar šalies kodas atitinka numatytą šalį. Vokietijos IBAN visada yra 22 simbolių, JK IBAN taip pat 22, Prancūzijos - 27. Trūkstami ar papildomi simboliai rodo sutrumpinimą arba neteisingus duomenis.
"Neteisingi Simboliai" Klaida
Priežastis: Simboliai, kurie neturėtų būti toje vietoje - pavyzdžiui, raidės ten, kur leidžiami tik skaičiai.
Sprendimas: Patikrinkite šaliai specifinį formatą. Pavyzdžiui, Vokietijos IBAN yra visiškai skaitiniai po šalies kodo ir kontrolinių skaitmenų, o JK IBAN apima 4 raides banko kodui.
"Nepalaikomas Šalies Kodas" Klaida
Priežastis: Pirmosios dvi raidės nėra atpažintas šalies kodas arba nėra palaikomas jūsų validatoriaus.
Sprendimas: Patikrinkite šalies kodo rašybą. Dažnos klaidos apima UK naudojimą vietoj GB arba EN vietoj šalies kodų. Šis įrankis palaiko 10 Europos šalių; gamybiniai validatoriai turėtų palaikyti visas SWIFT registro šalis.
Formatas prieš Sąskaitos Egzistavimą
Svarbus skirtumas: validavimas patvirtina, kad IBAN struktūriškai teisingas, bet nebūtinai reiškia, kad sąskaita egzistuoja. IBAN gali praeiti visus validavimo patikrinimus, bet vis tiek neatitikti realios banko sąskaitos. Gamybinėms mokėjimo sistemoms reikalingas papildomas patikrinimas be formato validavimo.
Techninė realizacija kūrėjams
Jei kuriate IBAN palaikymą savo programėlėje, štai patikrinti kodo pavyzdžiai keliomis kalbomis. Šios realizacijos tvarko kraštinius atvejus, su kuriais susidursite gamyboje:
IBAN Validavimas
1function validateIban(iban) {
2 // Pašalinti tarpus ir konvertuoti į didžiąsias raides
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Patikrinti pagrindinį formatą
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Perstatyti ir konvertuoti raides į skaičius
11 const rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
12 const converted = rearranged.split('').map(char => {
13 if (/[A-Z]/.test(char)) {
14 return (char.charCodeAt(0) - 55).toString();
15 }
16 return char;
17 }).join('');
18
19 // Apskaičiuoti mod 97
20 let remainder = 0;
21 for (let i = 0; i < converted.length; i++) {
22 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
23 }
24
25 return remainder === 1;
26}
27
28// Naudojimo pavyzdys
29console.log(validateIban('DE89 3704 0044 0532 0130 00')); // true
30console.log(validateIban('GB29 NWBK 6016 1331 9268 19')); // true
31console.log(validateIban('DE89 3704 0044 0532 0130 01')); // false (neteisingi kontroliniai skaitmenys)
321def validate_iban(iban):
2 # Pašalinti tarpus ir konvertuoti į didžiąsias raides
3 iban = iban.replace(' ', '').upper()
4
5 # Pagrindinis formato patikrinimas
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Perstatyti pirmus 4 simbolius į pabaigą
10 rearranged = iban[4:] + iban[:4]
11
12 # Konvertuoti raides į skaičius (A=10, B=11, ..., Z=35)
13 converted = ''
14 for char in rearranged:
15 if char.isalpha():
16 converted += str(ord(char) - 55)
17 else:
18 converted += char
19
20 # Patikrinti, ar mod 97 lygus 1
21 return int(converted) % 97 == 1
22
23# Naudojimo pavyzdys
24print(validate_iban('DE89 3704 0044 0532 0130 00')) # True
25print(validate_iban('GB29 NWBK 6016 1331 9268 19')) # True
26print(validate_iban('DE89 3704 0044 0532 0130 01')) # False (neteisingi kontroliniai skaitmenys)
271public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Pašalinti tarpus ir konvertuoti į didžiąsias raides
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Pagrindinis formato patikrinimas
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Perstatyti pirmus 4 simbolius į pabaigą
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Konvertuoti raides į skaičius
15 StringBuilder converted = new StringBuilder();
16 for (char c : rearranged.toCharArray()) {
17 if (Character.isLetter(c)) {
18 converted.append(c - 'A' + 10);
19 } else {
20 converted.append(c);
21 }
22 }
23
24 // Apskaičiuoti mod 97
25 BigInteger numeric = new BigInteger(converted.toString());
26 return numeric.mod(BigInteger.valueOf(97)).intValue() == 1;
27 }
28
29 public static void main(String[] args) {
30 System.out.println(validateIban("DE89 3704 0044 0532 0130 00")); // true
31 System.out.println(validateIban("GB29 NWBK 6016 1331 9268 19")); // true
32 System.out.println(validateIban("DE89 3704 0044 0532 0130 01")); // false
33 }
34}
35IBAN Generavimas
1function generateIban(countryCode) {
2 const countryFormats = {
3 'DE': { length: 22, bbanPattern: '8n10n' },
4 'GB': { length: 22, bbanPattern: '4a6n8n' },
5 'FR': { length: 27, bbanPattern: '5n5n11c2n' }
6 // Pridėti daugiau šalių pagal poreikį
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Šalies kodas ${countryCode} nepalaikomas`);
11 }
12
13 // Generuoti atsitiktinį BBAN pagal šalies formatą
14 let bban = '';
15 const pattern = countryFormats[countryCode].bbanPattern;
16 let i = 0;
17
18 while (i < pattern.length) {
19 const count = parseInt(pattern.substring(i + 1), 10);
20 const type = pattern[i];
21
22 if (type === 'n') {
23 // Generuoti skaitmeninius simbolius
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Generuoti abėcėlinius simbolius
29 for (let j = 0; j < count; j++) {
30 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
31 }
32 } else if (type === 'c') {
33 // Generuoti alfanumerinius simbolius
34 for (let j = 0; j < count; j++) {
35 const isLetter = Math.random() > 0.5;
36 if (isLetter) {
37 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
38 } else {
39 bban += Math.floor(Math.random() * 10);
40 }
41 }
42 }
43
44 i += 2;
45 }
46
47 // Apskaičiuoti kontrolinius skaitmenis
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Sukurti pradinį IBAN su '00' kontroliniais skaitmenimis
55 const initialIban = countryCode + '00' + bban;
56
57 // Perstatyti ir konvertuoti raides į skaičius
58 const rearranged = bban + countryCode + '00';
59 const converted = rearranged.split('').map(char => {
60 if (/[A-Z]/.test(char)) {
61 return (char.charCodeAt(0) - 55).toString();
62 }
63 return char;
64 }).join('');
65
66 // Apskaičiuoti 98 minus mod 97
67 let remainder = 0;
68 for (let i = 0; i < converted.length; i++) {
69 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
70 }
71
72 const checkDigits = (98 - remainder).toString().padStart(2, '0');
73 return checkDigits;
74}
75
76// Naudojimo pavyzdys
77console.log(generateIban('DE')); // Generuoja galiojantį vokišką IBAN
78console.log(generateIban('GB')); // Generuoja galiojantį JK IBAN
791import random
2import string
3
4def generate_iban(country_code):
5 country_formats = {
6 'DE': {'length': 22, 'bban_format': '8n10n'},
7 'GB': {'length': 22, 'bban_format': '4a6n8n'},
8 'FR': {'length': 27, 'bban_format': '5n5n11c2n'}
9 # Pridėti daugiau šalių pagal poreikį
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Šalies kodas {country_code} nepalaikomas")
14
15 # Generuoti atsitiktinį BBAN pagal šalies formatą
16 bban = ''
17 format_str = country_formats[country_code]['bban_format']
18 i = 0
19
20 while i < len(format_str):
21 count = int(''.join(c for c in format_str[i+1:] if c.isdigit()))
22 type_char = format_str[i]
23
24 if type_char == 'n': # Skaitmeninis
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Abėcėlinis
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Alfanumerinis
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Apskaičiuoti kontrolinius skaitmenis
34 check_digits = calculate_check_digits(country_code, bban)
35
36 return country_code + check_digits + bban
37
38def calculate_check_digits(country_code, bban):
39 # Sukurti eilutę kontrolinių skaitmenų skaičiavimui
40 check_string = bban + country_code + '00'
41
42 # Konvertuoti raides į skaičius (A=10, B=11, ..., Z=35)
43 numeric = ''
44 for char in check_string:
45 if char.isalpha():
46 numeric += str(ord(char.upper()) - 55)
47 else:
48 numeric += char
49
50 # Apskaičiuoti 98 minus mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Naudojimo pavyzdys
57print(generate_iban('DE')) # Generuoja galiojantį vokišką IBAN
58print(generate_iban('GB')) # Generuoja galiojantį JK IBAN
59Nuorodos ir papildoma literatūra
- ISO 13616-1:2007 - Oficiali IBAN struktūros specifikacija
- SWIFT IBAN registras - Autoritetingas šalių specifinių IBAN formatų šaltinis
- ISO 7064:2003 - MOD 97 kontrolinio skaitmens algoritmo specifikacija
- Europos mokėjimų taryba - SEPA - Bendros euro mokėjimų erdvės dokumentacija
- Europos centrinis bankas - Mokėjimų sistemos - Europos bankininkystės integracijos standartai
- Tarptautinių atsiskaitymų bankas - Mokėjimų sistemos - Tarptautinių mokėjimų sistemų standartai
Pradėkite IBAN Tikrinimą
Reikia testinių duomenų mokėjimo sistemai? Sugeneruokite galiojantį IBAN bet kuriai palaikomai šaliai aukščiau arba įklijuokite esamą IBAN, kad patikrintumėte jo struktūrą. Įrankis veikia visiškai jūsų naršyklėje – jokių registracijų, jokių API raktų, jokie duomenys nesiunčiami į serverius.
Greitas patarimas: Generuokite IBAN iš kelių šalių, kad patikrintumėte kraštutines sąlygas. Tikros mokėjimų sistemos tvarko įvairius formatus, o testavimas tik vienos šalies formatu dažnai yra įprastų gamybos klaidų šaltinis.