ИБАН Генератор и Валидатор Алат - Тестирање Банкарских Података
Генеришите важеће тест ИБАН-ове или тренутно валидирајте постојеће. Подржава 10 европских земаља са МОД 97 валидацијом. Савршено за тестирање и развој финансијског софтвера.
ИБАН Генератор и Валидатор
Dokumentacija
Generator i Validator IBAN broja
Шта овај алат ради
Тестирате финансијски софтвер без стварних података банковних рачуна? Требаће вам валидни IBAN формати који пролазе провере валидности. Овај алат генерише насумичне IBAN-ове који прате формате специфичне за земљу и валидира постојеће користећи ISO 13616 стандард.
Ево практичног проблема који решава: приликом изградње платних система или банкарских апликација, потребни су вам тестни подаци који неће пасти валидацију, али не угрожавају стварне бројеве рачуна. Уобичајена грешка коју developerи праве јесте стварање "лажних" IBAN-ова који не пролазе MOD 97 алгоритам провере, што проузрокује неуспех тестова из погрешних разлога.
Алат обавља два основна задатка:
- Генератор: Ствара структурно валидне IBAN-ове за било коју подржану земљу. Сваки генерисани број пролази исте провере валидности које ће ваш продукциони систем извршити.
- Валидатор: Проверава IBAN структуру, контролне цифре и формате специфичне за земљу. Користан за отклањање грешака зашто се IBAN одбацује.
IBAN-ови (Међународни бројеви банковних рачуна) стандардизују начин на који банке идентификују рачуне преко граница. Сваки садржи код земље, две контролне цифре израчунате преко MOD 97, и Основни број банковног рачуна (BBAN) који варира по земљи. Оно што чини ствар компликованом јесте да Немачка користи 22 карактера док Француској треба 27, а унутрашња структура се потпуно разликује.
Kako IBAN-ovi funkcionišu
Struktura i Format IBAN-a
IBAN-ovi mogu biti do 34 alfanumerička karaktera, mada većina evropskih zemalja koristi 22-27. Svaki IBAN se deli na tri dela:
- Oznaka Zemlje: Dva slova iz ISO 3166-1 alfa-2 standarda (DE za Nemačku, GB za Ujedinjeno Kraljevstvo)
- Kontrolne Cifre: Dve izračunate cifre koje validiraju kompletan IBAN pomoću MOD 97
- Osnovni Broj Bankovnog Računa (BBAN): Deo specifičan za svaku zemlju koji sadrži:
- Identifikator banke (ponekad nazvan routing broj ili bankarski kod)
- Identifikator filijale (UK ga naziva sort kod)
- Broj računa
- Ponekad dodatne nacionalne kontrolne cifre
Uzmimo nemački IBAN kao primer. Obrazac DE2!n8!n10!n znači:
DE= oznaka zemlje2!n= dve numeričke kontrolne cifre8!n= osmocifreni bankarski kod (Bankleitzahl)10!n= deseterocifren broj računa (Kontonummer)
Ono što ljude iznenađuje je koliko se ovi formati razlikuju između zemalja:
| Zemlja | Dužina | Struktura | Primer |
|---|---|---|---|
| Nemačka (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| UK (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| Francuska (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| Španija (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| Italija (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
Algoritam Validacije IBAN-a
IBAN validacija se oslanja na MOD 97 algoritam definisan u ISO 7064. Evo šta se zapravo dešava kada se validira IBAN:
- Premestite prva četiri karaktera (oznaku zemlje i kontrolne cifre) na kraj
- Zamenite svako slovo brojevima: A=10, B=11, do Z=35
- Izračunajte modulo 97 dobijenog niza brojeva
- Validni IBAN-ovi uvek daju ostatak od tačno 1
Matematički:
Zašto baš MOD 97? Hvata skoro sve uobičajene greške: greške sa jednom cifrom, zamenjene cifre, čak i većinu grešaka pri unosu sličnih karaktera. U praksi, pronašao sam da hvata oko 99,9% slučajnih grešaka pri unosu podataka, što je razlog zašto je postao međunarodni standard.
Jedna zanimljivost vredna pažnje: prilikom generisanja IBAN-a, kontrolne cifre se izračunavaju tako što se počinje sa "00", prolazi kroz algoritam, a zatim se koristi 98 minus ostatak. Ovo obezbeđuje da će krajnji IBAN biti ispravno validiran.
Функционалности алата
Генератор ИБАН-а
Генеришите тест ИБАН-ове који пролазе валидацију без коришћења стварних бројева рачуна:
- Избор земље: Подржава 10 главних европских земаља (Немачка, УК, Француска, Шпанија, Италија, Холандија, Швајцарска, Аустрија, Белгија, Пољска)
- Усклађеност формата: Сваки генерисани ИБАН одговара службеној структури земље и пролази MOD 97 валидацију
- Генерисање једним кликом: Без подешавања - само изаберите земљу и генеришите
- Копирање у међуспремник: Један клик копира комплетан ИБАН за лепљење у ваше тестове
- Визуелни приказ: Приказ у боји показује код земље, контролне цифре и појединости о банци одвојено
Процес генерисања:
- Бира шаблон формата специфичан за земљу
- Попуњава насумичне цифре/слова у BBAN делу
- Израчунава контролне цифре користећи MOD 97
- Саставља и проверава комплетан ИБАН
Про савет: Приликом попуњавања тест база података, генеришите ИБАН-ове из више земаља да бисте тестирали прекограничне сценарије. Прави платни системи често имају специфичне случајеве са одређеним земљама.
ИБАН Валидатор
Проверите структуру ИБАН-а и откријте проблеме са форматирањем пре него што доспеју у продукцију:
- Провера формата: Проверава захтеве за дужином и структуром специфичним за земљу
- MOD 97 Валидација: Извршава комплетан алгоритам провере контролних цифара
- Разлагање компоненти: Показује тачно како се ИБАН дели на код земље, контролне цифре, код банке и број рачуна
- Специфичне поруке о грешкама: Уместо генеричких порука "неважећи", видећете шта је заправо погрешно
- Аутоматско форматирање: Рукује ИБАН-овима са или без размака - форматирање се дешава аутоматски
Провере валидације се извршавају редом:
- Препознавање кода земље (да ли је подржан?)
- Провера дужине (исправан број карактера за ту земљу?)
- Валидација типа карактера (бројеви где се очекују, слова где су дозвољена)
- Израчунавање контролних цифара MOD 97 (да ли математика функционише?)
Уобичајени сценарио: Ваш API прима ИБАН из корисничког уноса са неконзистентним размацима. Користите валидатор да га нормализујете пре обраде - аутоматски уклања размаке и показује вам прави формат.
Vodič korak po korak
Generisanje IBAN-a
- Pristup kartici za generisanje: Kliknite na karticu "Generator" (podrazumevano odabrano)
- Odabir zemlje: Izaberite željenu zemlju iz padajućeg menija
- Generisanje IBAN-a: Kliknite dugme "Generiši IBAN"
- Pregled rezultata: Generisani IBAN će se pojaviti ispod sa vizuelnom razgradnjom njegovih komponenti
- Kopiranje u međumemoriju: Kliknite dugme "Kopiraj u međumemoriju" da biste kopirali IBAN za dalju upotrebu
Validacija IBAN-a
- Pristup kartici za validaciju: Kliknite na karticu "Validator"
- Unos IBAN-a: Unesite ili nalepite IBAN u polje za unos
- Razmaci i formatiranje će biti automatski obrađeni
- Alat prihvata IBAN-e i sa formatiranjem (sa razmacima) i bez formatiranja
- Pregled rezultata validacije: Alat će automatski validirati IBAN dok kucate
- Provera detalja: Za validne IBAN-e, biće prikazana razgradnja komponenti
- Pregled grešaka: Za nevažeće IBAN-e, specifične poruke o greškama pomoći će u identifikovanju problema
Случајеви употребе и примене у стварном свету
Развој софтвера и тестирање
Тестирање API-ја: Приликом изградње тестова интеграције плаћања, потребни су вам ИБАН-ови који пролазе валидацију, али неће покренути стварне трансакције. Генеришите групу тест ИБАН-ова за ваш аутоматизовани тест сет, обезбеђујући да ваше руковање грешкама исправно ради за различите формате земаља.
Валидација образаца: Тестирате ли проток checkout-а? Користите валидатор да проверите да ли ваша frontend валидација одговара backend захтевима. Чест проблем је прихватање ИБАН формата који ће ваш процесор плаћања касније одбити—откривање овога током развоја спречава фрустрацију корисника.
Тестирање граничних случајева: Већина програмера тестира са једним или два формата земаља. Шта се дешава када швајцарски купац са ИБАН-ом од 21 карактера користи ваш систем пројектован око немачких ИБАН-ова од 22 карактера? Генеришите различите формате земаља да бисте тестирали границе дужине поља и логику валидације.
Регресионо тестирање: Након ажурирања библиотеке за ИБАН валидацију, покрените генерисане тест ИБАН-ове кроз старе и нове верзије. Било каква одступања указују на промене које могу да наруше функционисање у продукцији.
Развој финансијских апликација
Платни системи: Приликом изградње функционалности међународних wire трансфера, сусрешћете се са сценаријима где сама структура ИБАН-а одређује понашање рутирања. Тест ИБАН-ови из Холандије (који укључују слова у ББАН-у) откривају грешке које сви нумерички немачки ИБАН-ови неће препознати.
Банкарски софтвер: Парсирање ИБАН-ова за издвајање банковних кодова и идентификатора филијала захтева логику специфичну за земљу. Генеришите ИБАН-ове за сваку подржану земљу да бисте проверили да ваш алгоритам парсирања исправно идентификује ове компоненте.
Верификација усаглашености: Финансијски прописи често захтевају валидацију ИБАН-ова пре обраде. Користите овај алат да креирате тест случајеве који доказују да ваш систем одбацује неважеће контролне цифре и неисправне формате—битно за trail трагова.
Образовање и документација
Образовање о банкарским стандардима: Студенти који уче о међународним платним системима имају користи од посматрања стварних ИБАН структура. Генеришите примере из више земаља да бисте илустровали како стандардизација функционише у различитим банкарским системима.
API документација: Уместо да користите потенцијално праве ИБАН-ове у вашој техничкој документацији, генеришите чисте примере. Документација са фразама попут „Користите ИБАН DE89370400440532013000 за тестирање" одмах говори програмерима да су ово безбедне тест вредности.
Операције са подацима
Попуњавање базе података: Развојним и staging окружењима требају реалистични тест подаци. Генеришите разноврсне ИБАН-ове да попуните вашу базу података репрезентативним међународним профилима корисника без брига о приватности.
Анонимизација података: Селите ли се из продукционог у staging? Заменити праве ИБАН-ове генерисаним који задржавају валидност формата за тестирање, уклањајући осетљиве информације. Критично за GDPR усаглашеност у развојним окружењима.
Алтернативе и када их користити
Различити алати одговарају различитим потребама. Ево искреног поређења:
Комерцијални банкарски API-ји (нпр. Stripe, Adyen)
Најбољи за производну валидацију у односу на стварне банковне регистре. Ове услуге проверавају да ли IBAN одговара стварном активном рачуну, а не само да ли је формат исправан.
Користите када: Треба да проверите да ли IBAN постоји и може примити плаћања, а не само да ли је структурно валидан.
Ограничења: Кошта новца (типично по ценовнику API позива), захтева интеграциони рад, и даље вам требају тест IBAN-ови за развој — управо за то служи овај алат.
Библиотеке програмских језика (ibantools, iban.js, python-stdnum)
Најбоље за уграђену валидацију у вашем апликационом коду. Библиотеке попут ibantools за JavaScript или python-stdnum за Python пружају функције и за валидацију и за генерисање.
Користите када: Треба вам програмски приступ као део провере током изградње или извршавања.
Ограничења: Захтева развојни напор за интеграцију, и даље вам треба брз начин да ручно тестирате специфичне IBAN-ове током отклањања грешака. Зато је веб алат бржи него писање тест скрипти.
SWIFT IBAN Регистар
Званични IBAN регистар који одржава SWIFT наводи све формате земаља и правила валидације. То је меродаван извор.
Користите када:Implementирате подршку за IBAN од почетка и требају вам службене спецификације.
Ограничења: То је документација, не алат. И даље бисте морали да изградите или пронађете нешто да стварно генеришете и валидирате IBAN-ове на основу тих спецификација.
Службени банковни валидатори
Многе националне банке пружају валидаторе специфичне за земљу (нпр. Bundesbank за немачке IBAN-ове). Они су веома тачни за њихову специфичну земљу.
Користите када: Радите само са једном земљом и требају вам детаљи банковне валидације.
Ограничења: Фокус на једној земљи. Ако градите међународне системе плаћања, требали бисте валидаторе за сваку земљу.
Када овај алат има смисла
Користите овај алат када вам треба брзо тестирање без постављања API-ја. Посебно је користан током развоја и отклањања грешака када вам одмах требају валидни тест подаци или да проверите зашто одређени IBAN не пролази валидацију. Неће заменити производне библиотеке валидације у вашем кôду, али је бржи него писање привремених тест скрипти.
Често постављана питања
Шта је ИБАН и зашто је важан?
ИБАН представља Међународни број банковног рачуна - стандардизовани формат креиран од стране Међународне организације за стандардизацију (ISO) да би се смањиле грешке у прекограничним плаћањима. Пре ИБАН-а, свака земља је користила сопствени формат броја рачуна, што је доводило до честих грешака и неуспелих трансфера. ИБАН додаје кодове земаља и контролне цифре да би се грешке откриле пре него што новац крене.
Колико су тачни генерисани ИБАН-и?
Генерисани ИБАН-и су математички тачни и пролазе MOD 97 алгоритам валидације дефинисан у ISO 13616. Они прате одговарајуће структуре специфичне за земље. Међутим, они су насумично креирани и не одговарају стварним банковним рачунима - у томе и јесте поента. Они су безбедни за тестирање управо зато што неће случајно погодити прави рачун.
Које земље ова алатка подржава?
Тренутно 10 европских земаља: Немачка, Уједињено Краљевство, Француска, Шпанија, Италија, Холандија, Швајцарска, Аустрија, Белгија и Пољска. Ови покривају најчешће ИБАН формате са којима ћете се сусрести у европским платним системима. Требате ли другу земљу? Формулар за повратне информације је најбољи начин да затражите додатке.
Да ли могу користити генерисане ИБАН-е за стварне новчане трансфере?
Апсолутно не. Ово су само тест ИБАН-и. Они пролазе валидацију формата, али нису повезани са стварним банковним рачунима. Њихово коришћење за стварне трансакције резултираће неуспехом плаћања или одбијањем. Намењени су искључиво за развој, тестирање и образовне сврхе.
Како заправо функционише ИБАН валидација?
Валидатор врши четири провере у низу:
- Код земље: Да ли је то препознат двословни код?
- Дужина: Да ли одговара захтеваној дужини за ту земљу? (Немачка = 22, УК = 22, Француска = 27, итд.)
- Типови карактера: Да ли су слова и бројеви на исправним позицијама на основу формата земље?
- MOD 97 провера: Да ли математичка контролна сума једнака 1 према ISO 7064?
Ако било која провера падне, видећете специфичну поруку о грешци која објашњава шта је погрешно.
Да ли размаци играју улогу код ИБАН-а?
Не за валидацију. ИБАН-и се типично приказују са размацима (групе од по четири) ради читљивости, али су размаци козметички. DE89 3704 0044 0532 0130 00 и DE89370400440532013000 су идентични за сврхе валидације. Алатка аутоматски обрађује оба формата.
Да ли се моји подаци шаљу на сервер или негде складиште?
Не. Све се извршава у вашем прегледачу користећи JavaScript. Ниједан ИБАН податак не напушта вашу машину, не додирује сервер и нигде се не складишти. Можете проверити отварањем развојних алата прегледача и посматрањем мреже - нећете видети никакве захтеве при генерисању или валидацији ИБАН-а.
Шта ако треба да валидирам ИБАН из земље која није наведена?
Алатка тренутно подржава само 10 земаља у падајућем менију. Додавање захтева имплементацију специфичних правила формата за сваку земљу. Ако вам треба валидација за земље попут Норвешке, Шведске или других, јавите нам се преко формулара за повратне информације - приоритете додатака одређујемо на основу потражње.
Зашто би ИБАН са исправним форматом пао на валидацији?
Најчешћи разлози:
- Нетачне контролне цифре: Чак и једна погрешна цифра пада на MOD 97 тесту
- Куцање: Замењени карактери или погрешне цифре било где у ИБАН-у
- Погрешна дужина: Недостајући или вишак карактера за ту земљу
- Неважећи карактери: Слова где су дозвољени само бројеви, или обрнуто
- Непподржана земља: Код земље постоји, али није у нашој подржаној листи
Порука о грешци ће вам тачно рећи шта је погрешно.
Како могу пријавити грешке или затражити функције?
Користите формулар за повратне информације на дну странице. Специфичне пријаве грешака са примерима ИБАН-а су најкорисније. За захтеве за функцијама, објашњавање вашег случаја употребе помаже у одређивању приоритета онога што ће се следеће изградити.
Која је разлика између ИБАН-а и SWIFT/BIC кодова?
ИБАН-и идентификују специфичне банковне рачуне, док SWIFT/BIC кодови идентификују банке или банковне филијале. Размислите овако: SWIFT код вам каже која банка, ИБАН вам каже који рачун у тој банци. За међународне трансфере, често вам требају обоје - SWIFT код усмерава до исправне банке, а затим ИБАН усмерава до специфичног рачуна.
Да ли могу валидирати ИБАН без познавања земље?
Да, јер су прва два слова сваког ИБАН-а код земље. Валидатор чита та прва два карактера да би одредио који формат земље треба применити. Зато се детекција земље дешава аутоматски када налепите ИБАН - не треба ручно бирати земљу.
Да ли постоје ИБАН формати за земље ван Европе?
Да, али их је мање. Иако је ИБАН настао у Европи и тамо има највећу примену, земље попут Саудијске Арабије, УАЕ, Бразила и других су га усвојиле. Ова алатка тренутно focuses на европске формате јер они представљају огромну већину прекограничних трансакција. SWIFT ИБАН Регистар одржава комплетну листу.
Kako pročitati i dekodirati IBAN
Pitali ste se ikada šta znači IBAN poput DE89370400440532013000 i šta svaki deo znači? Evo kako dekodirati bilo koji IBAN:
Korak 1: Oznaka zemlje (prva 2 karaktera)
DE= Nemačka- Govori vam koja pravila formata se primenjuju
Korak 2: Kontrolne cifre (sledeća 2 karaktera)
89= izračunata kontrolna suma- Ove cifre proveravaju da li je ceo IBAN validan koristeći MOD 97
Korak 3: Kod banke (varira po zemlji)
37040044u nemačkim IBAN-ovima = 8-cifreni identifikator banke- Različite zemlje koriste različite dužine (UK koristi 4 karaktera)
Korak 4: Broj računa (preostali karakteri)
0532013000= stvarni broj računa u toj banci- Dužina i format zavise od zemlje
Različite zemlje organizuju BBAN deo drugačije. UK IBAN-ovi uključuju 6-cifreni sort kod (identifikator filijale) između koda banke i broja računa. Francuski IBAN-ovi kombinuju kod banke, kod filijale i broj računa sa kontrolnim ključem. Razumevanje ovih razlika je ključno prilikom programskog parsiranja IBAN-ova.
Уобичајене грешке при валидацији IBAN-а и како их исправити
Приликом имплементације валидације IBAN-а, наићи ћете на ове проблеме изнова:
Грешка „Неисправне контролне цифре"
Узрок: MOD 97 калкулација не једнака 1. Или су контролне цифре погрешне, или постоји грешка негде другде у IBAN-у.
Исправка: Поново покрените валидацију након исправљања евентуалних куцаних грешака. Чак и један погрешан карактер било где у IBAN-у проузрокује неуспех контролних цифри. Ово је намерно—препознаје грешке при уносу података.
Грешка „Неисправна дужина за земљу"
Узрок: IBAN има превише или премало карактера за свој код земље.
Исправка: Проверите да ли код земље одговара намераваној земљи. Немачки IBAN-и увек имају 22 карактера, UK IBAN-и су 22, француски су 27. Недостајући или вишак карактера указују на скраћивање или нетачне податке.
Грешка „Неисправни карактери"
Узрок: Карактери који не би требало да се појаве на тој позицији—попут слова где су дозвољени само бројеви.
Исправка: Проверите формат специфичан за земљу. На пример, немачки IBAN-и су потпуно нумерички после кода земље и контролних цифри, док UK IBAN-и укључују 4 слова за банковни код.
Грешка „Неподржан код земље"
Узрок: Прва два слова нису препознат код земље, или нису подржана од стране вашег валидатора.
Исправка: Проверите правопис кода земље. Честе грешке укључују коришћење UK уместо GB, или EN уместо кодова земаља. Овај алат подржава 10 европских земаља; производни валидатори треба да подржавају све SWIFT регистар земље.
Формат vs. Постојање рачуна
Важна разлика: валидација потврђује да је IBAN структурно исправан, не и да рачун стварно постоји. IBAN може проћи све провере валидације, а да и даље не одговара стварном банковном рачуну. За производне системе плаћања, потребна вам је додатна провера изван валидације формата.
Техничка имплементација за програмере
Ако градите подршку за IBAN у вашој апликацији, ево провјерених примјера кода у више језика. Ове имплементације покривају специфичне случајеве са којима ћете се сусрести у продукцији:
IBAN Валидација
1function validateIban(iban) {
2 // Уклони размаке и конвертуј у велика слова
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Провјера основног формата
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Преуреди и конвертуј слова у бројеве
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 // Израчунај 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// Примјер употребе
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 (неважећи контролни бројеви)
321def validate_iban(iban):
2 # Уклони размаке и конвертуј у велика слова
3 iban = iban.replace(' ', '').upper()
4
5 # Основна провјера формата
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Премјести прва 4 карактера на крај
10 rearranged = iban[4:] + iban[:4]
11
12 # Конвертуј слова у бројеве (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 # Провјери да ли mod 97 једнако 1
21 return int(converted) % 97 == 1
22
23# Примјер употребе
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 (неважећи контролни бројеви)
271public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Уклони размаке и конвертуј у велика слова
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Основна провјера формата
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Премјести прва 4 карактера на крај
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Конвертуј слова у бројеве
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 // Израчунај 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}
35Генерисање IBAN-а
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 // Додај више земаља по потреби
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Код земље ${countryCode} није подржан`);
11 }
12
13 // Генериши случајни BBAN на основу шаблона земље
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 // Генериши нумеричке карактере
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Генериши абецедне карактере
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 // Генериши алфанумеричке карактере
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 // Израчунај контролне бројеве
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Креирај почетни IBAN са '00' као контролним бројевима
55 const initialIban = countryCode + '00' + bban;
56
57 // Преуреди и конвертуј слова у бројеве
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 // Израчунај 98 минус 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// Примјер употребе
77console.log(generateIban('DE')); // Генерише важећи њемачки IBAN
78console.log(generateIban('GB')); // Генерише важећи UK 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 # Додај више земаља по потреби
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Код земље {country_code} није подржан")
14
15 # Генериши случајни BBAN на основу формата земље
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': # Нумерички
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Абецедни
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Алфанумерички
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Израчунај контролне бројеве
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 # Креирај стринг за израчунавање контролних бројева
40 check_string = bban + country_code + '00'
41
42 # Конвертуј слова у бројеве (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 # Израчунај 98 минус mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Примјер употребе
57print(generate_iban('DE')) # Генерише важећи њемачки IBAN
58print(generate_iban('GB')) # Генерише важећи UK IBAN
59Референце и додатна литература
- ISO 13616-1:2007 - Званична спецификација IBAN структуре
- SWIFT IBAN Регистар - Меродаван извор за формате IBAN-а по земљама
- ISO 7064:2003 - Спецификација алгоритма за провере контролне цифре MOD 97
- Европски савет за плаћања - SEPA - Документација о Јединственом европском платном простору
- Европска централна банка - Платни системи - Стандарди европске банкарске интеграције
- Банка за међународна поравнања - Платни системи - Међународни стандарди платних система
Почните тестирање IBAN-ова
Требате тестне податке за свој платни систем? Генеришите важећи IBAN за било коју подржану земљу изнад, или налепите постојећи IBAN да бисте проверили његову структуру. Алат се у потпуности извршава у вашем прегледачу — без пријављивања, без API кључева, без слања података на сервере.
Брз савет: Генеришите IBAN-ове из више земаља да бисте тестирали граничне случајеве. Прави платни системи обрађују различите формате, а тестирање само са форматом једне земље је чест извор грешака у производњи.