Genereeri kehtivad testkonto IBAN-id või valideerige olemasolevaid koheselt. Toetab 10 Euroopa riiki MOD 97 valideerimisega. Ideaalne finantstarkvara testimiseks ja arendamiseks.
Testimaks finantstarkvara ilma tegelike pangakonto andmeteta? Teil on vaja kehtivaid IBAN-formaate, mis läbivad valideerimiskontrollid. See tööriist genereerib juhuslikke IBAN-sid, mis järgivad riigipõhiseid formaate, ning valideerib olemasolevaid, kasutades ISO 13616 standardit.
Siin on praktiline probleem, mida see lahendab: mobiilimaksesüsteemide või pangarakenduste loomisel vajate testiandmeid, mis ei läbi valideerimist, kuid ei riski ka tegelike kontonumbrite paljastamisega. Arendajate levinud viga on luua "võltsitud" IBAN-e, mis ei läbi MOD 97 kontrollalgoritmi, põhjustades testide ebaõnnestumist valel põhjusel.
Tööriist täidab kahte põhiülesannet:
IBAN-id (International Bank Account Numbers) standardiseerivad seda, kuidas pangad tuvastavad kontosid üle piiri. Iga IBAN sisaldab riigikoodid, kahte kontrollnumbrit, mis arvutatakse MOD 97 abil, ning põhipangakonto numbrit (BBAN), mis erineb riigiti. Keeruliseks teeb selle asjaolu, et Saksamaa kasutab 22 märki, Prantsusmaa vajab 27 märki ning sisestruktuur erineb täielikult.
IBAN-id võivad olla kuni 34 tähtnumbrilist märki, kuigi enamik Euroopa riike kasutab 22-27 märki. Iga IBAN koosneb kolmest osast:
Võtame näiteks Saksa IBAN-i. Muster DE2!n8!n10!n tähendab:
DE = riigikood2!n = kaks numbrilist kontrollnumbrit8!n = kaheksakohaline pangakood (Bankleitzahl)10!n = kümnekohane kontonumber (Kontonummer)Mis inimesi üllatab, on see, kui palju need vormingud riigiti erinevad:
| Riik | Pikkus | Struktuur | Näide |
|---|---|---|---|
| Saksamaa (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| Ühendkuningriik (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| Prantsusmaa (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| Hispaania (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| Itaalia (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
IBAN-i valideerimine põhineb ISO 7064 standardis määratletud MOD 97 algoritmil. Siin on see, mis tegelikult toimub IBAN-i valideerimisel:
Matemaatiliselt:
Miks just MOD 97? See püüab kinni peaaegu kõik tavalised vead: üksiku numbri vead, vahetatud numbrid, isegi enamiku andmesisestuse vigadest. Praktikas olen leidnud, et see püüab kinni umbes 99,9% juhuslikest andmesisestuse vigadest, mistõttu see sai rahvusvaheliseks standardiks.
Üks omapära, mida tasub teada: IBAN-ide genereerimisel arvutatakse kontrollnumbrid, alustades "00"-ga, käivitades algoritmi ja seejärel kasutades 98 miinus ülejääk. See tagab, et lõplik IBAN valideerub õigesti.
Genereeri testkõlblikud IBAN-id, mis läbivad valideerimise ilma tegelike kontonumbriteta:
Genereerimise protsess:
Pro näpunäide: Tesandmebaaside täitmisel genereeri IBAN-e mitmest riigist, et testida piiriüleseid stsenaariumeid. Tegelikud maksesüsteemid sisaldavad sageli erijuhtumeid konkreetsetes riikides.
Kontrolli IBAN-i struktuuri ja püüa kinni vormindamisvead enne tootmisse jõudmist:
Valideerimise kontrollid toimuvad järjekorras:
Tavaline stsenaarium: Teie API saab kasutaja sisestatud IBAN-i ebaühtlase tühikutega. Kasutage validaatorit selle normaliseerimiseks enne töötlemist - see eemaldab automaatselt tühikud ja näitab õiget formaati.
API testimine: Maksete integreerimise testide loomisel vajate IBANe, mis läbivad valideerimise, kuid ei käivita tegelikke tehinguid. Looge testimise automatiseeritud komplektile partii testIBANe, tagades, et teie veakäsitlus töötab õigesti erinevate riikide formaatide puhul.
Vormi valideerimine: Kontrollite väljamakse voogu? Kasutage validaatorit, et kontrollida, kas teie eesliidese valideerimine vastab tagaliidese nõuetele. Sage probleem on IBANi formaadi vastuvõtmine, mida teie maksete töötleja hiljem tagasi lükkab—selle avastamine arenduse käigus hoiab ära kliendi frustratsiooni.
Äärmiste juhtumite testimine: Enamik arendajaid testib ühe või kahe riigi formaadiga. Mis juhtub, kui šveitsi klient 21-märgilise IBANiga kasutab teie süsteemi, mis on loodud saksa 22-märgiliste IBANide jaoks? Looge erinevaid riikide formaate, et testida oma välja pikkusi ja valideerimisloogikat.
Regressioonitestimine: Pärast IBAN-i valideerimise teegi uuendamist käitage genereeritud testIBANid läbi nii vana kui uue versiooni. Mis tahes erinevused näitavad muudatusi, mis võivad mõjutada tootmiskeskkonda.
Maksesüsteemid: Rahvusvaheliste ülekannete funktsionaalsuse loomisel puutute kokku stsenaariumidega, kus IBAN-i struktuur ise määrab marsruutimise käitumise. Testida Hollandi IBANe (mis sisaldavad tähtegi BBAN-is), toob esile vead, mida ainult numbriline saksa IBAN ei näitaks.
Panganduse tarkvara: IBANide parsimine pangakoodide ja filiaali identifikaatorite eraldamiseks nõuab riigipõhist loogikat. Looge IBANid igast toetatud riigist, et kontrollida, kas teie parsimisalgoritm õigesti tuvastab need komponendid.
Vastavuse kontrollimine: Finantseeskirjad nõuavad sageli IBANide valideerimist enne töötlemist. Kasutage seda töövahendit testimiseks, et tõestada, et teie süsteem lükkab tagasi kehtetud kontrollnumbrid ja valed formaadid—hädavajalik auditijälgede jaoks.
Panganduse standardite haridus: Tudengid, kes õpivad rahvusvahelistest maksesüsteemidest, saavad kasu, nähes päris IBAN-i struktuure. Looge näited mitmest riigist, et illustreerida, kuidas standardiseerimine toimib erinevates pangandussüsteemides.
API dokumentatsioon: Asemel et kasutada potentsiaalselt päris IBANe oma tehnilises dokumentatsioonis, looge puhtad näited. Dokumentatsioon fraasidega nagu "Kasutage testimiseks IBANi DE89370400440532013000" ütleb kohe arendajatele, et need on turvalised testiväärtused.
Andmebaasi täitmine: Arendus- ja testimiskeskkond vajab realistlikke testAndmeid. Looge mitmekesised IBANid, et täita oma andmebaas esinduslike rahvusvaheliste kliendiprofiilidega ilma privaatsusprobleemideta.
Andmete anonüümistamine: Migreerite tootmiskeskkonnast testimiskeskkonda? Asendage päris IBANid genereeritud IBANidega, mis säilitavad formaadi kehtivuse testimiseks, kuid eemaldavad tundliku teabe. Kriitiline GDPR-i vastavuse tagamiseks arenduskeskkondades.
Erinevad tööriistad sobivad erinevateks vajadusteks. Siin on aus võrdlus:
Parim tootmises valideerimiseks vastu tegelikke pangaregistreid. Need teenused kontrollivad, kas IBAN vastab tegelikule aktiivsele kontole, mitte ainult selle formaadile.
Kasuta kui: Sul on vaja kontrollida, et IBAN eksisteerib ja saab makseid vastu võtta, mitte ainult selle struktuurselt õigsust.
Piirangud: Maksab raha (tavaliselt API-kõne hinnaga), nõuab integreerimistööd ja sa vajad endiselt testIBANe arendamiseks - siin tuleb appi see tööriist.
Parim sisseehitatud valideerimiseks rakenduse koodis. Teegid nagu ibantools JavaScriptile või python-stdnum Pythonile pakuvad nii valideerimis- kui ka genereerimisfunktsioone.
Kasuta kui: Sul on vaja programmeerimispõhist juurdepääsu build- või käitusaja valideerimiseks.
Piirangud: Nõuab arendustööd integreerimiseks ja sa vajad endiselt kiiret võimalust käsitsi testida konkreetseid IBANe silumisel. Selles osas on veebipõhine tööriist kiirem kui testskriptide kirjutamine.
SWIFT-i hallatav ametlik IBAN register loetleb kõik riikide formaadid ja valideerimisreeglid. See on autoriteetne allikas.
Kasuta kui: Sa rakendad IBAN-i toetust nullist ja vajad ametlikke spetsifikatsioone.
Piirangud: See on dokumentatsioon, mitte tööriist. Sa peaksid endiselt ehitama või leidma midagi, et tegelikult genereerida ja valideerida IBANe nende spetsifikatsioonide põhjal.
Paljud riiklikud pangad pakuvad riigipõhiseid validaatoreid (nt Bundesbank Saksa IBANidele). Need on väga täpsed oma konkreetse riigi jaoks.
Kasuta kui: Sa töötad ainult ühe riigiga ja vajad panga taseme valideerimise üksikasju.
Piirangud: Ainult ühe riigi fookus. Kui sa ehitad rahvusvahelisi maksesüsteeme, vajaksid sa validaatoreid igaks riigiks.
Kasuta seda tööriista, kui vajad kiiret testimist ilma API integratsioonita. See on eriti kasulik arenduse ja silumise ajal, kui sul on vaja kohe genereerida kehtivaid testandmeid või kontrollida, miks konkreetne IBAN valideerimisest läbi ei lähe. See ei asenda tootmistasemel valideerimise teeke sinu koodibaasis, kuid on kiirem kui ajutiste testskriptide kirjutamine.
IBAN tähendab Rahvusvahelist Pangakonto Numbrit - standardiseeritud vormingut, mille lõi Rahvusvaheline Standardiorganisatsioon (ISO), et vähendada vigasid piiriülestes maksetes. Enne IBANeid kasutas iga riik oma kontonumbri vormingut, mis viis sagedaste vigade ja ebaõnnestunud ülekanneteni. IBANid lisavad riigikoodid ja kontrollnumbrid, et püüda kinni vead enne raha liikumist.
Genereeritud IBANid on matemaatiliselt õiged ja läbivad MOD 97 valideerimisalgoritmi, mis on määratletud ISO 13616 standardis. Need järgivad õiget riigipõhist struktuuri. Siiski on need juhuslikult loodud ja ei vasta tegelikele pangakontodele - see ongi mõte. Need on testimiseks ohutud just sellepärast, et need ei puuduta juhuslikult ühtegi tegelikku kontot.
Praegu 10 Euroopa riiki: Saksamaa, Ühendkuningriik, Prantsusmaa, Hispaania, Itaalia, Holland, Šveits, Austria, Belgia ja Poola. Need katavad kõige levinumad IBAN vormingud, mida kohtad Euroopa maksesüsteemides. Vajad mõnda muud riiki? Tagasiside vorm on parim viis täienduste taotlemiseks.
Kindlasti mitte. Need on ainult testIBANid. Need läbivad vormingu valideerimise, kuid pole seotud tegelike pangakontodega. Nende kasutamine tegelike tehingute jaoks toob kaasa maksete ebaõnnestumise või tagasilükkamise. Need on mõeldud arendamiseks, testimiseks ja hariduslikel eesmärkidel.
Valideerija teeb järjest neli kontrolli:
Kui ükskõik milline kontroll ebaõnnestub, näete konkreetset veateadet, mis selgitab, mis valesti on.
Valideerimiseks mitte. IBANid kuvatakse tavaliselt tühikutega (neljased grupid) loetavuse parandamiseks, kuid tühikud on kosmeetilised. DE89 3704 0044 0532 0130 00 ja DE89370400440532013000 on valideerimiseks identsed. Tööriist käsitleb mõlemaid vorminguid automaatselt.
Ei. Kõik toimub teie brauseris JavaScripti abil. Ükski IBAN andmetest ei lahku teie arvutist, ei puuduta serverit ega salvestata kusagil. Saate seda kontrollida brauseri arendaja tööriistadest - näete, et IBANide genereerimisel või valideerimisel ei toimu ühtegi päringut.
Tööriist toetab praegu ainult 10 riiki rippmenüüs. Täiendavate riikide lisamine nõuab iga riigi spetsiifiliste vormingureeglite rakendamist. Kui vajate valideerimist riikidele nagu Norra, Rootsi või teised, andke meile teada tagasiside vormi kaudu - me prioritiseerime täiendusi vastavalt nõudlusele.
Kõige sagedasemad põhjused:
Veateade ütleb teile täpselt, mis valesti on.
Kasutage lehe allosas olevat tagasiside vormi. Konkreetsed veateated näidetega IBANidest on kõige kasulikumad. Funktsiooni taotlemisel aitab kasutamise selgitamine prioriteetide seadmisel.
IBANid identifitseerivad konkreetseid pangakontosid, samal ajal kui SWIFT/BIC koodid identifitseerivad panku või pangakontorid. Mõelge nii: SWIFT kood ütleb, milline pank, IBAN ütleb, milline konto selles pangas. Rahvusvaheliste ülekannete jaoks vajate tihti mõlemat - SWIFT kood suunab õigesse panka, IBAN suunab konkreetsele kontole.
Jah, sest iga IBAN esimesed kaks tähte on riigikood. Valideerija loeb need esimesed kaks märki, et määrata, millist riigi vormingut rakendada. Sellepärast toimub riigi tuvastamine automaatselt IBAN-i kleepimisel - pole vaja riiki käsitsi valida.
Jah, kuid vähem. Kuigi IBAN sai alguse Euroopas ja on seal kõige levinum, on riigid nagu Saudi Araabia, ÜAE, Brasiilia ja teised selle vastu võtnud. See tööriist keskendub praegu Euroopa vormingutele, kuna need esindavad valdavat osa piiriülestest maksetest. SWIFT IBAN Register säilitab täieliku loetelu.
Kas oled kunagi vaadanud IBAN-i nagu DE89370400440532013000 ja mõelnud, mida iga osa tähendab? Siin on, kuidas dekodeerida ükskõik millist IBAN-i:
Samm 1: Riigikood (Esimesed 2 märki)
DE = SaksamaaSamm 2: Kontrollnumbrid (Järgmised 2 märki)
89 = arvutatud kontrollsummaSamm 3: Pangakood (Erinev sõltuvalt riigist)
37040044 Saksa IBAN-ides = 8-kohaline panga identifikaatorSamm 4: Kontonumber (Ülejäänud märgid)
0532013000 = tegelik kontonumber selles pangasErinevad riigid korraldavad BBAN-i osa erinevalt. UK IBAN-id sisaldavad 6-kohalise sort-koodi (filiaali identifikaator) pangakoodi ja kontonumbri vahel. Prantsuse IBAN-id ühendavad pangakoodi, filiaali koodi ja kontonumbri kontrollvõtmega. Nende erinevuste mõistmine on oluline IBAN-ide programmilisel töötlemisel.
IBAN-i valideerimisel kohtate neid probleeme korduvalt:
Põhjus: MOD 97 arvutus ei võrdu 1-ga. Kas kontrollnumbrid on valed või esineb mujal IBAN-is viga.
Parandus: Käivitage valideerimine uuesti pärast võimalike trükivigade parandamist. Isegi üks vale märk IBAN-is põhjustab kontrollnumbri vea. See on kavandatud andmesisestuse vigade avastamiseks.
Põhjus: IBAN-il on liiga palju või liiga vähe tähemärke riigi koodi kohta.
Parandus: Kontrollige, kas riigi kood vastab soovitud riigile. Saksamaa IBAN-id on alati 22 tähemärki, UK IBAN-id on 22, Prantsuse IBAN-id 27. Puuduvad või liigsed tähemärgid näitavad kärpimist või valet andmestikku.
Põhjus: Märgid, mis ei peaks selles positsioonis esinema - näiteks tähed, kus peaksid olema ainult numbrid.
Parandus: Kontrollige riigipõhist vormingut. Näiteks Saksamaa IBAN-id on pärast riigi koodi ja kontrollnumbreid täielikult numbrilised, samas kui UK IBAN-id sisaldavad 4 tähte pangakoodi jaoks.
Põhjus: Esimesed kaks tähte ei ole tunnustatud riigi kood või neid ei toeta teie validaator.
Parandus: Kontrollige riigi koodi õigekirja. Levinud vead on UK kasutamine GB asemel või EN kasutamine riigi koodide asemel. See tööriist toetab 10 Euroopa riiki; tootmise validaatorid peaksid toetama kõiki SWIFT-i registri riike.
Oluline eristus: valideerimine kinnitab, et IBAN on struktuuriliselt õige, mitte et konto eksisteerib. IBAN võib läbida kõik valideerimise kontrollid, kuid mitte vastata tegelikule pangakontole. Tootmise maksesüsteemides on vaja täiendavat kontrolli lisaks vormingu valideerimisele.
Kui te ehitate IBAN-i toetust oma rakendusse, siin on tootmises kasutatavad koodinäited mitmes keeles. Need rakendused käsitlevad äärmisi juhtumeid, millega te tootmises kokku puutute:
1function validateIban(iban) {
2 // Eemalda tühikud ja teisenda suurtähtedeks
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Kontrolli põhilist vormingut
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Paiguta ümber ja teisenda tähed numbriteks
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 // Arvuta 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// Näidis kasutamine
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 (kehtetud kontrollnumbrid)
321def validate_iban(iban):
2 # Eemalda tühikud ja teisenda suurtähtedeks
3 iban = iban.replace(' ', '').upper()
4
5 # Põhilise vormingu kontroll
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Liiguta esimesed 4 märki lõppu
10 rearranged = iban[4:] + iban[:4]
11
12 # Teisenda tähed numbriteks (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 # Kontrolli, kas mod 97 võrdub 1-ga
21 return int(converted) % 97 == 1
22
23# Näidis kasutamine
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 (kehtetud kontrollnumbrid)
271public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Eemalda tühikud ja teisenda suurtähtedeks
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Põhilise vormingu kontroll
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Liiguta esimesed 4 märki lõppu
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Teisenda tähed numbriteks
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 // Arvuta 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}
351function generateIban(countryCode) {
2 const countryFormats = {
3 'DE': { length: 22, bbanPattern: '8n10n' },
4 'GB': { length: 22, bbanPattern: '4a6n8n' },
5 'FR': { length: 27, bbanPattern: '5n5n11c2n' }
6 // Lisa vajaduse korral veel riike
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Riigi kood ${countryCode} ei ole toetatud`);
11 }
12
13 // Genereeri juhuslik BBAN vastavalt riigi mustrile
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 // Genereeri numbrilised märgid
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Genereeri alfabeetilised märgid
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 // Genereeri alfanumbrilised märgid
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 // Arvuta kontrollnumbrid
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Loo algne IBAN '00' kontrollnumbritega
55 const initialIban = countryCode + '00' + bban;
56
57 // Paiguta ümber ja teisenda tähed numbriteks
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 // Arvuta 98 miinus 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// Näidis kasutamine
77console.log(generateIban('DE')); // Genereerib kehtiva Saksa IBAN-i
78console.log(generateIban('GB')); // Genereerib kehtiva UK IBAN-i
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 # Lisa vajaduse korral veel riike
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Riigi kood {country_code} ei ole toetatud")
14
15 # Genereeri juhuslik BBAN vastavalt riigi formaadile
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': # Numbriline
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Alfabeetiline
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Alfanumbriline
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Arvuta kontrollnumbrid
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 # Loo string kontrollnumbrite arvutamiseks
40 check_string = bban + country_code + '00'
41
42 # Teisenda tähed numbriteks (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 # Arvuta 98 miinus mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Näidis kasutamine
57print(generate_iban('DE')) # Genereerib kehtiva Saksa IBAN-i
58print(generate_iban('GB')) # Genereerib kehtiva UK IBAN-i
59Vajad testimisandmeid oma maksesüsteemile? Genereeri kehtiv IBAN-kood mis tahes toetatud riigile ülal, või aseta olemasolev IBAN selle struktuuri kontrollimiseks. Tööriist töötab täielikult sinu brauseris - ilma registreerumiseta, API-võtmeteta, ilma andmeid serveritesse saatmata.
Kiire nõuanne: Genereeri IBAN-koode mitmest riigist, et testida äärmisi olukordi. Päris maksesüsteemid käsitlevad erinevaid formaate, ning testimine ainult ühe riigi formaadiga on levinud allikas tootmise vigadele.
Avasta rohkem tööriistu, mis võivad olla kasulikud teie töövoos