IBAN ģenerators un validātors - Banku datu tests
Momentāli ģenerējiet derīgus testa IBAN vai pārbaudiet esošos. Atbalsta 10 Eiropas valstis ar MOD 97 validāciju. Ideāli piemērots finanšu programmatūras testēšanai un izstrādei.
IBAN Ģenerators un Pārbaudītājs
Dokumentācija
IBAN ģenerators un validātors
Ko šis rīks dara
Testējot finanšu programmatūru bez reāliem bankas konta datiem? Jums būs nepieciešami derīgi IBAN formāti, kas iztur pārbaudes. Šis rīks ģenerē nejaušus IBAN, kas atbilst valsts specifiskiem formātiem, un pārbauda esošos, izmantojot ISO 13616 standartu.
Šeit ir praktiskā problēma, ko tas risina: veidojot maksājumu sistēmas vai banku lietojumprogrammas, jums ir nepieciešami testēšanas dati, kas neizraisīs kļūdas validācijā, bet neapdraudēs īstu kontu numurus. Izplatīta kļūda, ko izdara izstrādātāji, ir veidot "viltotus" IBAN, kas neatbilst MOD 97 pārbaudes algoritma prasībām, izraisot testu kļūdas nepareizu iemeslu dēļ.
Rīks veic divus pamatuzdevumus:
- Ģenerators: Izveido strukturāli derīgus IBAN jebkurai atbalstītajai valstij. Katrs ģenerētais numurs iztur tādas pašas validācijas pārbaudes, kādas izmantos ražošanas sistēma.
- Validētājs: Pārbauda IBAN struktūru, kontrolciparus un valsts specifisko formatējumu. Noderīgs, lai atkļūdotu, kāpēc IBAN tiek noraidīts.
IBAN (Starptautiskie Bankas Konta Numuri) standartizē, kā bankas identificē kontus pāri robežām. Katrs satur valsts kodu, divus kontrolciparus, kas aprēķināti, izmantojot MOD 97, un Pamatbankas Konta Numuru (BBAN), kas atšķiras atkarībā no valsts. Sarežģītais ir tas, ka Vācijā izmanto 22 rakstzīmes, kamēr Francijā nepieciešamas 27, un iekšējā struktūra ir pilnīgi atšķirīga.
Kā darbojas IBAN
IBAN struktūra un formāts
IBAN var būt līdz 34 alfanumēriskiem rakstzīmēm, lai gan lielākā daļa Eiropas valstu izmanto 22-27. Katrs IBAN sadalās trijās daļās:
- Valsts kods: Divas burtu zīmes no ISO 3166-1 alfa-2 standarta (DE Vācijai, GB Apvienotajai Karalistei)
- Pārbaudes cipari: Divi aprēķinātie cipari, kas validē visu IBAN, izmantojot MOD 97
- Pamatbankas konta numurs (BBAN): Valstij specifiskā daļa, kas satur:
- Bankas identifikatoru (dažreiz saukts par maršrutēšanas numuru vai bankas kodu)
- Filiāles identifikatoru (Apvienotajā Karalistē to sauc par šķirošanas kodu)
- Konta numuru
- Reizēm papildu valsts pārbaudes ciparus
Ņemsim Vācijas IBAN kā piemēru. Šablons DE2!n8!n10!n nozīmē:
DE= valsts kods2!n= divi skaitliski pārbaudes cipari8!n= astoņciparu bankas kods (Bankleitzahl)10!n= desmitciparu konta numurs (Kontonummer)
Kas cilvēkus pārsteidz, ir tas, cik ļoti šie formāti atšķiras starp valstīm:
| Valsts | Garums | Struktūra | Piemērs |
|---|---|---|---|
| Vācija (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| Apvienotā Karaliste (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| Francija (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| Spānija (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| Itālija (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
IBAN validācijas algoritms
IBAN validācija balstās uz MOD 97 algoritmu, kas definēts ISO 7064. Lūk, kas notiek, kad validē IBAN:
- Pārvieto pirmos četrus rakstzīmes (valsts kodu un pārbaudes ciparus) uz beigām
- Aizstāj katru burtu ar skaitļiem: A=10, B=11, līdz Z=35
- Aprēķina modulis 97 no iegūtās skaitļu virknes
- Derīgi IBAN vienmēr rada atlikumu, kas ir tieši 1
Matemātiski:
Kāpēc tieši MOD 97? Tas uztver gandrīz visas parastās kļūdas: atsevišķu ciparu kļūdas, samainītus ciparus, pat lielāko daļu drukas kļūdu ar līdzīgiem rakstzīmēm. Praksē esmu atradis, ka tas uztver aptuveni 99,9% nejaušu datu ievades kļūdu, tāpēc tas kļuva par starptautisko standartu.
Viena īpatnība, ko vērts zināt: ģenerējot IBAN, pārbaudes ciparus aprēķina, sākot ar "00", palaižot algoritmu, tad izmantojot 98 mīnus atlikums. Tas nodrošina, ka galīgais IBAN validēsies pareizi.
Rīka funkcijas
IBAN ģenerators
Ģenerēt pārbaudes IBAN, kas iztur validāciju bez īstu kontu numuru izmantošanas:
- Valsts izvēle: Atbalsta 10 lielākās Eiropas valstis (Vācija, Apvienotā Karaliste, Francija, Spānija, Itālija, Nīderlande, Šveice, Austrija, Beļģija, Polija)
- Formāta atbilstība: Katrs ģenerētais IBAN atbilst oficiajai valsts struktūrai un iztur MOD 97 validāciju
- Vienas pogas ģenerēšana: Nav nepieciešama konfigurācija — vienkārši izvēlieties valsti un ģenerējiet
- Kopēšana starpliktuvē: Viens klikšķis kopē pilnu IBAN pārbaudēm
- Vizuāls sadalījums: Krāsaini kodēts displejs rāda valsts kodu, pārbaudes ciparus un bankas detaļas atsevišķi
Ģenerēšanas process:
- Izvēlas valsts specifisko formāta veidni
- Aizpilda nejaušus ciparus/burtus BBAN daļā
- Aprēķina pārbaudes ciparus, izmantojot MOD 97
- Saliek kopā un validē pilnu IBAN
Profesionāls padoms: Aizpildot testa datubāzes, ģenerējiet IBAN no vairākām valstīm, lai pārbaudītu pārrobežu scenārijus. Reālās maksājumu sistēmās bieži ir īpaši gadījumi ar specifiskām valstīm.
IBAN validātors
Pārbaudiet IBAN struktūru un atklājiet formatēšanas problēmas pirms ieviešanas ražošanā:
- Formāta pārbaude: Pārbauda valsts specifisko garumu un struktūras prasības
- MOD 97 validācija: Veic pilnu pārbaudes ciparu algoritmu
- Komponenšu sadalījums: Rāda, kā IBAN sadalās valsts kodā, pārbaudes ciparus, bankas kodā un konta numurā
- Specifiski kļūdu ziņojumi: Nevis vispārīgi "nederīgi" ziņojumi, bet precīzi, kas ir nepareizi
- Automātiska formatēšana: Apstrādā IBAN ar vai bez atstarpēm — formatēšana notiek automātiski
Validācijas pārbaudes notiek šādā secībā:
- Valsts koda atpazīšana (vai tas ir atbalstīts?)
- Garuma pārbaude (pareizs rakstzīmju skaits attiecīgajai valstij?)
- Rakstzīmju tipa validācija (cipari tur, kur paredzēts, burti tur, kur atļauts)
- MOD 97 pārbaudes ciparu aprēķins (vai matemātika sakrīt?)
Tipisks scenārijs: Jūsu API saņem IBAN no lietotāja ievades ar nekonsekventi izvietotām atstarpēm. Izmantojiet validātoru, lai to normalizētu pirms apstrādes — tas automātiski noņem atstarpes un parāda pareizo formātu.
Pakāpenisks ceļvedis
IBAN ģenerēšana
- Piekļuve ģenerēšanas cilnei: Noklikšķiniet uz "Ģenerētājs" cilnes (atlasīta pēc noklusējuma)
- Valsts izvēle: Izvēlieties vajadzīgo valsti no nolaižamās izvēlnes
- IBAN ģenerēšana: Noklikšķiniet uz pogas "Ģenerēt IBAN"
- Rezultāta skatīšana: Ģenerētais IBAN parādīsies zemāk ar tā komponentu vizuālu sadalījumu
- Kopēšana starpliktuvē: Noklikšķiniet uz pogas "Kopēt starpliktuvē", lai kopētu IBAN lietošanai citur
IBAN validēšana
- Piekļuve validēšanas cilnei: Noklikšķiniet uz "Validētājs" cilnes
- IBAN ievadīšana: Ierakstiet vai ielīmējiet IBAN ievades laukā
- Atstarpes un formatējums tiks automātiski apstrādāti
- Rīks pieņem gan formatētus (ar atstarpēm), gan neformatētus IBAN
- Validēšanas rezultātu skatīšana: Rīks automātiski validēs IBAN, kamēr jūs rakstāt
- Detaļu pārbaude: Derīgiem IBAN tiks parādīts komponentu sadalījums
- Kļūdu pārskatīšana: Nederīgiem IBAN tiks parādīti specifiski kļūdu ziņojumi, lai palīdzētu identificēt problēmu
Lietojuma gadījumi un reālās pasaules pielietojumi
Programmatūras izstrāde un testēšana
API testēšana: Veidojot maksājumu integrācijas testus, jums ir nepieciešami IBAN, kas iztur validāciju, bet neizraisa faktiskus darījumus. Ģenerējiet testu IBAN partiju savam automatizētajam testu komplektam, nodrošinot, ka jūsu kļūdu apstrāde darbojas pareizi dažādiem valstu formātiem.
Formas validācija: Testējot maksājuma plūsmu? Izmantojiet validatoru, lai pārbaudītu, vai jūsu priekšējās daļas validācija atbilst aizmugures prasībām. Bieža problēma ir IBAN formāta pieņemšana, kuru vēlāk noraidīs maksājumu apstrādātājs—šīs problēmas konstatēšana izstrādes laikā novērš klientu neapmierinātību.
Robežgadījumu testēšana: Lielākā daļa izstrādātāju testē ar vienu vai diviem valstu formātiem. Kas notiek, kad šveiciešu klients ar 21 rakstzīmju IBAN izmanto jūsu sistēmu, kas veidota ap vācu 22 rakstzīmju IBAN? Ģenerējiet dažādus valstu formātus, lai pārbaudītu jūsu lauku garumu un validācijas loģiku.
Regresijas testēšana: Pēc IBAN validācijas bibliotēkas atjaunināšanas, izejiet cauri ģenerētajiem testu IBAN gan vecajai, gan jaunajai versijai. Jebkādas atšķirības norāda uz izmaiņām, kas varētu ietekmēt ražošanu.
Finanšu lietojumprogrammu izstrāde
Maksājumu sistēmas: Veidojot starptautisko naudas pārvedumu funkcionalitāti, jūs saskarsieties ar scenārijiem, kur pats IBAN struktūra nosaka maršrutēšanas uzvedību. Nīderlandes IBAN (kas ietver burtus BBAN) atklāj kļūdas, kuras neatklās pilnīgi skaitliskie vācu IBAN.
Banku programmatūra: IBAN parsēšana, lai izvilktu banku kodus un filiāļu identifikatorus, prasa valstu specifisko loģiku. Ģenerējiet IBAN katrai atbalstītajai valstij, lai pārbaudītu, vai jūsu parsēšanas algoritms pareizi identificē šos komponentus.
Atbilstības pārbaude: Finanšu noteikumi bieži prasa IBAN validāciju pirms apstrādes. Izmantojiet šo rīku, lai izveidotu testēšanas gadījumus, kas pierāda, ka jūsu sistēma noraida nederīgus kontrolskaitļus un nepareizus formātus—būtiski revīzijas pierakstiem.
Izglītība un dokumentācija
Banku standartu izglītība: Studenti, kas mācās par starptautiskajām maksājumu sistēmām, gūst labumu, redzot īstas IBAN struktūras. Ģenerējiet piemērus no vairākām valstīm, lai ilustrētu, kā standartizācija darbojas dažādās banku sistēmās.
API dokumentācija: Tā vietā, lai izmantotu potenciāli īstus IBAN savos tehniskajos dokumentos, ģenerējiet tīrus piemērus. Dokumentācija ar frāzēm kā "Izmantojiet IBAN DE89370400440532013000 testēšanai" uzreiz pasaka izstrādātājiem, ka tie ir droši testu vērtējumi.
Datu operācijas
Datu bāzes aizpildīšana: Izstrādes un sagatavošanas vidēm ir nepieciešami reālistiski testu dati. Ģenerējiet dažādus IBAN, lai aizpildītu jūsu datu bāzi ar reprezentatīviem starptautiskiem klientu profiliem bez privātuma bažām.
Datu anonimizācija: Migrējot no ražošanas uz sagatavošanas vidi? Aizstājiet īstos IBAN ar ģenerētajiem, kas saglabā formāta derīgumu testēšanai, vienlaikus noņemot sensitīvu informāciju. Kritisks GDPR atbilstībai izstrādes vidēs.
Alternatīvas un kad tās izmantot
Dažādi rīki der dažādām vajadzībām. Šeit ir godīgs salīdzinājums:
Komerciālās banku API (piemēram, Stripe, Adyen)
Vislabāk derēs ražošanas validācijai pret reālām banku reģistriem. Šie pakalpojumi pārbauda, vai IBAN atbilst faktiskai aktīvai bankas kontam, nevis tikai pārbauda formātu.
Izmantot, kad: Jums ir nepieciešams pārliecināties, ka IBAN eksistē un var saņemt maksājumus, ne tikai pārbaudīt tā strukturālo derīgumu.
Ierobežojumi: Maksā naudu (parasti par katru API izsaukumu), prasa integrācijas darbu, un joprojām nepieciešami testa IBAN izstrādes laikā - tieši šeit noderēs šis rīks.
Programmēšanas valodu bibliotēkas (ibantools, iban.js, python-stdnum)
Vislabāk derēs validācijai jūsu lietojumprogrammas kodā. Bibliotēkas kā ibantools JavaScript valodai vai python-stdnum Python valodai nodrošina gan validācijas, gan ģenerēšanas funkcijas.
Izmantot, kad: Jums nepieciešama programmatiska piekļuve kā daļa no būvēšanas vai darbības laika validācijas.
Ierobežojumi: Prasa izstrādes darbu integrācijai, un joprojām nepieciešams ātrs veids, kā manuāli pārbaudīt specifiskus IBAN kodus atkļūdošanas laikā. Šeit tīmekļa rīks ir ātrāks nekā testu skriptu rakstīšana.
SWIFT IBAN reģistrs
Oficiālais IBAN reģistrs, ko uztur SWIFT, uzskaitīta visu valstu formātus un validācijas noteikumus. Tas ir autoritatīvais avots.
Izmantot, kad: Jūs ieviešat IBAN atbalstu no nulles un nepieciešamas oficiālās specifikācijas.
Ierobežojumi: Tā ir dokumentācija, nevis rīks. Joprojām būtu nepieciešams izveidot vai atrast kaut ko, lai faktiski ģenerētu un validētu IBAN saskaņā ar šīm specifikācijām.
Oficiālie banku validatori
Daudzas nacionālās bankas nodrošina valstu specifiskus validatorus (piemēram, Bundesbank Vācijas IBAN). Tie ir ļoti precīzi savai konkrētajai valstij.
Izmantot, kad: Jūs strādājat tikai ar vienu valsti un nepieciešama bankas līmeņa validācijas detaļas.
Ierobežojumi: Fokuss uz vienu valsti. Ja veidojat starptautiskās maksājumu sistēmas, jums būs nepieciešami validatori katrai valstij.
Kad šis rīks ir noderīgs
Izmantojiet šo rīku, kad nepieciešama ātra testēšana bez API integrācijas. Tas ir īpaši noderīgs izstrādes un atkļūdošanas laikā, kad jums nekavējoties vajadzīgi derīgi testa dati vai jāpārbauda, kāpēc konkrētais IBAN neiztur validāciju. Tas neaizstās ražošanas līmeņa validācijas bibliotēkas jūsu kodā, bet ir ātrāks par īslaicīgu testu skriptu rakstīšanu.
Bieži uzdotie jautājumi
Kas ir IBAN un kāpēc tas ir svarīgi?
IBAN nozīmē Starptautisko Bankas Konta Numuru — standartizētu formātu, ko izveidoja Starptautiskā Standartizācijas Organizācija (ISO), lai samazinātu kļūdas pārrobežu maksājumos. Pirms IBAN, katra valsts izmantoja savu konta numura formātu, kas bieži izraisīja kļūdas un neizdevušos pārskaitījumus. IBAN pieveno valsts kodus un kontrolciparus, lai noķertu kļūdas pirms naudas pārvietošanas.
Cik precīzi ir ģenerētie IBAN?
Ģenerētie IBAN ir matemātiski pareizi un iztur MOD 97 validācijas algoritmu, kas definēts ISO 13616 standartā. Tie ievēro pareizas valsts specifiskās struktūras. Tomēr tie ir nejauši izveidoti un neatbilst reāliem bankas kontiem — tas ir tieši mērķis. Tie ir droši testēšanai tieši tāpēc, ka nejaušā kārtā nesasniedz īstu kontu.
Kuras valstis šis rīks atbalsta?
Pašlaik 10 Eiropas valstis: Vācija, Apvienotā Karaliste, Francija, Spānija, Itālija, Nīderlande, Šveice, Austrija, Beļģija un Polija. Tās sedz visbiežāk sastopamos IBAN formātus Eiropas maksājumu sistēmās. Vajadzīga cita valsts? Atsauksmes forma ir labākais veids, lai pieprasītu papildinājumus.
Vai es varu izmantot ģenerētos IBAN faktiskiem naudas pārvedumiem?
Absolūti nē. Tie ir tikai testa IBAN. Tie iztur formāta validāciju, bet nav pievienoti reāliem bankas kontiem. To izmantošana faktiskām transakcijām izraisīs maksājumu kļūmes vai noraidījumus. Tie ir paredzēti tikai izstrādei, testēšanai un izglītošanas nolūkiem.
Kā īsti darbojas IBAN validācija?
Validators pārbauda četras secīgas pārbaudes:
- Valsts kods: Vai tas ir atpazīts divu burtu kods?
- Garums: Vai tas atbilst nepieciešamajam garumam attiecīgajai valstij? (Vācija = 22, Apvienotā Karaliste = 22, Francija = 27 utt.)
- Rakstzīmju tipi: Vai burti un cipari ir pareizās pozīcijās atbilstoši valsts formatam?
- MOD 97 pārbaude: Vai matemātiskā kontrolsumma ir vienāda ar 1 saskaņā ar ISO 7064?
Ja kāda pārbaude neizdodas, jūs redzēsit specifisku kļūdas ziņojumu, kas izskaidro, kas ir nepareizi.
Vai atstarpes IBAN ir svarīgas?
Nē, validācijai. IBAN parasti tiek attēloti ar atstarpēm (četru grupu) lasāmībai, bet atstarpes ir kosmētiskas. DE89 3704 0044 0532 0130 00 un DE89370400440532013000 ir identiskas validācijas nolūkiem. Rīks automātiski apstrādā abus formātus.
Vai mani dati tiek nosūtīti uz serveri vai kaut kur saglabāti?
Nē. Viss darbojas jūsu pārlūkprogrammā, izmantojot JavaScript. Neviens IBAN dati neatstāj jūsu ierīci, nepieskaras serverim un netiek nekur saglabāti. Jūs varat pārbaudīt, atverot pārlūkprogrammas izstrādātāja rīkus un novērojot tīkla cilni — jūs neredzēsit nevienu pieprasījumu, ģenerējot vai validējot IBAN.
Ko darīt, ja man jāvalidē IBAN no valsts, kas nav sarakstā?
Rīks pašlaik atbalsta tikai 10 valstis nolaižamajā sarakstā. Jaunu pievienošana prasa īstenot katras valsts specifiskās formāta prasības. Ja jums ir nepieciešama validācija valstīm kā Norvēģija, Zviedrija vai citām, lūdzu, informējiet mūs caur atsauksmes formu — mēs prioritizējam papildinājumus atkarībā no pieprasījuma.
Kāpēc pareizi formatēts IBAN var neizdot validāciju?
Visbiežākās problēmas:
- Nepareizi kontrolcipari: Pat viens nepareizs cipars neizdod MOD 97 testu
- Drukas kļūdas: Samainīti rakstzīmju vai ciparu secība
- Nepareizs garums: Trūkstoši vai papildu rakstzīmju
- Nederīgas rakstzīmes: Burti tur, kur drīkst būt tikai cipari, vai otrādi
- Neatbalstīta valsts: Valsts kods eksistē, bet nav mūsu atbalstīto sarakstā
Kļūdas ziņojums precīzi pastāstīs, kas ir nepareizi.
Kā ziņot par kļūdām vai pieprasīt funkcijas?
Izmantojiet atsauksmes formu lapas apakšā. Specifiski kļūdu ziņojumi ar IBAN piemēriem ir vislietderīgākie. Funkciju pieprasījumiem palīdz lietošanas gadījuma izskaidrošana, lai noteiktu prioritātes nākamajām izstrādēm.
Kāda ir atšķirība starp IBAN un SWIFT/BIC kodiem?
IBAN identificē specifiskus bankas kontus, savukārt SWIFT/BIC kodi identificē bankas vai banku filiāles. Domājiet par to šādi: SWIFT kods pasaka, kura banka, IBAN pasaka, kurš konts tajā bankā. Starptautiskiem pārvedumiem bieži vajag abus — SWIFT kods virza uz pareizo banku, tad IBAN virza uz konkrēto kontu.
Vai var validēt IBAN bez valsts zināšanas?
Jā, jo katra IBAN pirmās divas rakstzīmes ir valsts kods. Validators lasa šīs pirmās divas rakstzīmes, lai noteiktu, kādu valsts formātu piemērot. Tāpēc valsts noteikšana notiek automātiski, ielīmējot IBAN — nav nepieciešams manuāli izvēlēties valsti.
Vai pastāv IBAN formāti valstīm ārpus Eiropas?
Jā, bet mazāk. Lai gan IBAN sākās Eiropā un ir visplašāk izmantots tur, valstis kā Saūda Arābija, AAE, Brazīlija un citas to ir pieņēmušas. Šis rīks pašlaik fokusējas uz Eiropas formatiem, jo tie pārstāv lielāko daļu pārrobežu darījumu. SWIFT IBAN Reģistrs uztur pilno sarakstu.
Kā lasīt un dekodēt IBAN
Vai kādreiz esat paskatījies uz IBAN, piemēram, DE89370400440532013000, un domājis, ko nozīmē katra daļa? Šeit ir, kā dekodēt jebkuru IBAN:
1. solis: Valsts kods (pirmās 2 rakstzīmes)
DE= Vācija- Norāda, kādus valsts formāta noteikumus piemērot
2. solis: Pārbaudes cipari (nākamās 2 rakstzīmes)
89= aprēķinātā kontrolsumma- Šie cipari pārbauda, vai viss IBAN ir derīgs, izmantojot MOD 97
3. solis: Bankas kods (atkarīgs no valsts)
37040044Vācijas IBAN = 8 ciparu bankas identifikators- Dažādās valstīs izmanto dažādu garumu (Apvienotajā Karalistē izmanto 4 rakstzīmes)
4. solis: Konta numurs (atlikušās rakstzīmes)
0532013000= faktiskais konta numurs šajā bankā- Garums un formāts ir atkarīgs no valsts
Dažādās valstīs BBAN daļu organizē atšķirīgi. Apvienotās Karalistes IBAN ietver 6 ciparu šķirošanas kodu (filiāles identifikatoru) starp bankas kodu un konta numuru. Francijas IBAN apvieno bankas kodu, filiāles kodu un konta numuru ar pārbaudes atslēgu. Šo atšķirību izpratne ir būtiska, veicot IBAN programmatisku analīzi.
Bieži sastopamās IBAN validācijas kļūdas un to labošana
Ieviešot IBAN validāciju, jūs bieži saskarsieties ar šādām problēmām:
"Nederīgas kontrolciparu" kļūda
Cēlonis: MOD 97 aprēķins nav vienāds ar 1. Vai nu kontrolcipari ir nepareizi, vai kļūda ir citur IBAN.
Labojums: Veiciet validāciju vēlreiz pēc jebkādu drukas kļūdu labošanas. Pat viena nepareiza rakstzīme IBAN jebkurā vietā izraisa kontrolciparu kļūmi. Tas ir paredzēts tīši — lai konstatētu datu ievades kļūdas.
"Nepareizs garums valstij" kļūda
Cēlonis: IBAN ir pārāk daudz vai pārāk maz rakstzīmju attiecībā pret tās valsts kodu.
Labojums: Pārbaudiet, vai valsts kods atbilst paredzētajai valstij. Vācu IBAN vienmēr ir 22 rakstzīmes, Lielbritānijas IBAN ir 22, Francijas — 27. Trūkstošas vai papildu rakstzīmes norāda uz saīsināšanu vai nepareiziem datiem.
"Nederīgas rakstzīmes" kļūda
Cēlonis: Rakstzīmes, kas nedrīkstētu parādīties šajā pozīcijā — piemēram, burti tur, kur drīkst būt tikai cipari.
Labojums: Pārbaudiet valsts specifisko formātu. Piemēram, Vācu IBAN pēc valsts koda un kontrolciparu ir pilnībā cipariski, savukārt Lielbritānijas IBAN ietver 4 burtus bankas kodam.
"Neatbalstīts valsts kods" kļūda
Cēlonis: Pirmās divas rakstzīmes nav atpazīstams valsts kods, vai arī tās netiek atbalstītas jūsu validatorā.
Labojums: Pārbaudiet valsts koda pareizrakstību. Bieži sastopamas kļūdas ir UK izmantošana vietā GB, vai EN vietā pareiza valsts koda. Šis rīks atbalsta 10 Eiropas valstis; ražošanas validatoriem jāatbalsta visas SWIFT reģistra valstis.
Formāts pret konta esamību
Svarīga atšķirība: validācija apstiprina, ka IBAN ir strukturāli pareizs, nevis to, ka konts eksistē. IBAN var izturēt visas validācijas pārbaudes, bet tomēr neatbilst reālam bankas kontam. Ražošanas maksājumu sistēmām ir nepieciešama papildu pārbaude, kas pārsniedz formāta validāciju.
Tehniskā ieviešana izstrādātājiem
Ja jūs veidojat IBAN atbalstu savā lietojumprogrammā, šeit ir ražošanā pārbaudīti koda piemēri vairākās valodās. Šīs ieviešanas risina malas gadījumus, ar kuriem saskarsieties ražošanā:
IBAN validācija
1function validateIban(iban) {
2 // Noņemt atstarpes un pārvērst lielajos burtos
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Pārbaudīt pamata formātu
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Pārkārtot un pārvērst burtus skaitļos
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 // Aprēķināt 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// Lietošanas piemērs
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 (nederīgi kontrolcipari)
321def validate_iban(iban):
2 # Noņemt atstarpes un pārvērst lielajos burtos
3 iban = iban.replace(' ', '').upper()
4
5 # Pamata formāta pārbaude
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Pārvietot pirmos 4 simbolus uz beigām
10 rearranged = iban[4:] + iban[:4]
11
12 # Pārvērst burtus skaitļos (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 # Pārbaudīt, vai mod 97 vienāds ar 1
21 return int(converted) % 97 == 1
22
23# Lietošanas piemērs
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 (nederīgi kontrolcipari)
271public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Noņemt atstarpes un pārvērst lielajos burtos
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Pamata formāta pārbaude
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Pārvietot pirmos 4 simbolus uz beigām
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Pārvērst burtus skaitļos
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 // Aprēķināt 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 ģenerēšana
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 // Pievienot vairāk valstu pēc nepieciešamības
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Valsts kods ${countryCode} nav atbalstīts`);
11 }
12
13 // Ģenerēt nejaušu BBAN atbilstoši valsts šablonam
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 // Ģenerēt skaitliskus simbolus
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Ģenerēt alfabētiskus simbolus
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 // Ģenerēt alfanumeriskus simbolus
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 // Aprēķināt kontrolciparus
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Izveidot sākotnējo IBAN ar '00' kā kontrolciparus
55 const initialIban = countryCode + '00' + bban;
56
57 // Pārkārtot un pārvērst burtus skaitļos
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 // Aprēķināt 98 mīnus 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// Lietošanas piemērs
77console.log(generateIban('DE')); // Ģenerē derīgu Vācijas IBAN
78console.log(generateIban('GB')); // Ģenerē derīgu Lielbritānijas 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 # Pievienot vairāk valstu pēc nepieciešamības
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Valsts kods {country_code} nav atbalstīts")
14
15 # Ģenerēt nejaušu BBAN atbilstoši valsts formātam
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': # Skaitliski
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Alfabētiski
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Alfanumeriski
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Aprēķināt kontrolciparus
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 # Izveidot virkni kontrolciparu aprēķināšanai
40 check_string = bban + country_code + '00'
41
42 # Pārvērst burtus skaitļos (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 # Aprēķināt 98 mīnus mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Lietošanas piemērs
57print(generate_iban('DE')) # Ģenerē derīgu Vācijas IBAN
58print(generate_iban('GB')) # Ģenerē derīgu Lielbritānijas IBAN
59Atsauces un papildu literatūra
- ISO 13616-1:2007 - Oficiālā IBAN struktūras specifikācija
- SWIFT IBAN reģistrs - Autoritatīvs avots valstu specifiskām IBAN formātiem
- ISO 7064:2003 - MOD 97 kontrolciparu algoritma specifikācija
- Eiropas Maksājumu Padome - SEPA - Vienotās Eiropas Maksājumu Telpas dokumentācija
- Eiropas Centrālā Banka - Maksājumu Sistēmas - Eiropas banku integrācijas standarti
- Starptautisko Norēķinu Banka - Maksājumu Sistēmas - Starptautisko maksājumu sistēmu standarti
Sākt IBAN Testēšanu
Vai jums ir nepieciešami testa dati maksājumu sistēmai? Ģenerējiet derīgu IBAN jebkurai atbalstītajai valstij augstāk vai ielīmējiet esošu IBAN, lai pārbaudītu tā struktūru. Rīks darbojas pilnībā jūsu pārlūkprogrammā — nav nepieciešama reģistrācija, nav API atslēgu, nekādi dati netiek sūtīti uz serveriem.
Īss padoms: Ģenerējiet IBAN no vairākām valstīm, lai pārbaudītu robežgadījumus. Reālās maksājumu sistēmās tiek apstrādāti dažādi formāti, un testēšana tikai ar vienas valsts formātu bieži ir izplatīts ražošanas kļūdu avots.