Tengeneza IBAN za nasibu zinazokidhi muundo au hakiki zile zilizopo kwa kutumia zana yetu rahisi. Inafaa kwa ajili ya kupima programu za kifedha, programu za benki, na madhumuni ya kielimu.
Zana ya Kuunda na Kuangalia Nambari ya Akaunti ya Benki ya Kimataifa (IBAN) ni zana kamili iliyoundwa kwa ajili ya majaribio na uthibitisho katika programu za kifedha, programu za benki, na muktadha wa elimu. Programu hii rafiki kwa mtumiaji inatoa vipengele viwili muhimu: kuunda IBAN za nasibu lakini zinazofaa kwa muundo na kuangalia uhalali wa muundo wa IBAN zinazowekwa na mtumiaji. Ikiwa wewe ni mbunifu anayejaribu programu za kifedha, mtaalamu wa QA anayethibitisha programu za benki, au mwalimu anayefafanua viwango vya benki za kimataifa, zana hii inatoa suluhisho rahisi bila kuhitaji mipangilio ngumu au ushirikiano wa wahusika wa tatu.
IBANs (Nambari za Akaunti za Benki za Kimataifa) ni vitambulisho vya akaunti vilivyopangwa vinavyotumiwa kimataifa ili kuwezesha shughuli za fedha za mipaka na kupunguza makosa katika uhamishaji wa fedha za kimataifa. Kila IBAN ina msimbo wa nchi, nambari za kuangalia, na nambari ya msingi ya akaunti ya benki (BBAN) inayofuata muundo maalum wa nchi. Zana yetu inasaidia muundo wa nchi nyingi na kuhakikisha kuwa IBAN zote zinazoundwa zinapita algorithimu ya uthibitisho ya MOD 97 iliyoainishwa katika kiwango cha ISO 13616.
IBAN ina jumla ya wahusika 34 wa alphanumeric, ingawa urefu halisi hubadilika kulingana na nchi. Muundo wa kawaida unajumuisha:
Kwa mfano, IBAN ya Ujerumani inafuata muundo DE2!n8!n10!n
ambapo:
DE
ni msimbo wa nchi2!n
inawakilisha nambari mbili za kuangalia8!n
inawakilisha msimbo wa benki wa tarakimu nane10!n
inawakilisha nambari ya akaunti ya tarakimu kumiNchi tofauti zina muundo tofauti wa BBAN, na kusababisha urefu tofauti wa IBAN:
Nchi | Urefu | Muundo | Mfano |
---|---|---|---|
Ujerumani (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
Uingereza (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
Ufaransa (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
Uhispania (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
Italia (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
Mchakato wa uthibitisho wa IBAN unatumia algorithimu ya MOD 97 kama ilivyoainishwa katika kiwango cha ISO 7064. Hapa kuna jinsi inavyofanya kazi:
Kihesabu, hii inawakilishwa kama:
Mthibitishaji wetu unatekeleza algorithimu hii ili kuthibitisha uhalali wa muundo wa IBAN yoyote iliyoingizwa na watumiaji.
Zana ya kuunda IBAN inaunda IBAN za nasibu lakini halali kwa ajili ya majaribio. Vipengele muhimu ni pamoja na:
Zana ya kuunda inaunda IBAN kwa:
Zana ya kuangalia IBAN inakagua uhalali wa muundo wa IBAN zinazowekwa na mtumiaji. Vipengele muhimu ni pamoja na:
Mthibitishaji unafanya ukaguzi kadhaa:
Zana ya Kuunda na Kuangalia IBAN inatumika kwa madhumuni mbalimbali katika nyanja tofauti:
Ingawa zana yetu ya Kuunda na Kuangalia IBAN inatoa uzoefu ulio rahisi kwa ajili ya majaribio, kuna njia mbadala za kuzingatia:
Zana yetu inajaza pengo kati ya mbadala hizi kwa kutoa kiolesura rahisi, kinachopatikana kwa ajili ya kuunda na kuangalia bila kuhitaji ushirikiano wa kiufundi au usajili wa malipo.
IBAN (Nambari ya Akaunti ya Benki ya Kimataifa) ni mfumo wa nambari wa kimataifa ulioandaliwa ili kutambua akaunti za benki kupitia mipaka ya kitaifa. Ilianzishwa na Shirika la Kimataifa la Viwango (ISO) ili kuwezesha shughuli za kimataifa zisizo na makosa.
Zana ya kuunda IBAN inaunda IBAN zinazofaa kimuundo ambazo zinapita algorithimu ya uthibitisho ya MOD 97 kama ilivyoainishwa katika kiwango cha ISO 13616. Ingawa IBAN zilizoundwa ni halali kimaadili, ni nasibu na hazihusiani na akaunti halisi za benki, hivyo ni bora kwa majaribio lakini si kwa shughuli halisi.
Zana hiyo kwa sasa inasaidia muundo wa IBAN kwa Ujerumani, Uingereza, Ufaransa, Uhispania, Italia, Uholanzi, Uswisi, Austria, Ubelgiji, na Poland. Hizi zinashughulikia muundo wa IBAN unaotumiwa zaidi barani Ulaya.
Hapana. IBAN zinazoundwa na zana hii ni halali kimuundo lakini zimeundwa kwa nasibu. Hazihusiani na akaunti halisi za benki na zinapaswa kutumika tu kwa majaribio, elimu, au madhumuni ya kuonyesha.
Mthibitishaji unakagua vipengele kadhaa vya IBAN:
Hapana. Ingawa IBAN mara nyingi huonyeshwa kwa nafasi kwa ajili ya usomaji (kawaida katika vikundi vya wahusika wanne), nafasi hizo zinapuuziliwa mbali wakati wa uthibitisho. Zana yetu inashughulikia IBAN zilizowekwa na zisizo na muundo.
Hapana. Zana hii inafanya kazi kabisa kwenye kivinjari chako. Hakuna data ya IBAN inayotumwa kwa seva yoyote, kuhifadhiwa, au kushirikiwa na wahusika wa tatu. Data yako inabaki kuwa ya faragha na salama.
Kwa sasa, zana hiyo inathibitisha IBAN tu kutoka nchi zinazosaidiwa zilizo kwenye orodha ya kushuka. Ikiwa unahitaji uthibitisho wa nchi za ziada, tafadhali tujulishe kupitia fomu ya maoni.
IBAN inaweza kushindwa uthibitisho kwa sababu kadhaa:
Tunakaribisha maoni ili kuboresha zana. Tafadhali tumia fomu ya maoni inayopatikana kupitia kiungo kilichopo chini ya ukurasa ili kuripoti matatizo yoyote au kupendekeza maboresho.
Kwa wabunifu wanaovutiwa na kutekeleza uthibitisho na uundaji wa IBAN katika programu zao, hapa kuna mifano ya msimbo katika lugha mbalimbali za uandishi:
1function validateIban(iban) {
2 // Ondoa nafasi na geuza kuwa herufi kubwa
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Angalia muundo wa msingi
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Hamisha na geuza herufi kuwa nambari
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 // Hesabu 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// Mfano wa matumizi
29console.log(validateIban('DE89 3704 0044 0532 0130 00')); // kweli
30console.log(validateIban('GB29 NWBK 6016 1331 9268 19')); // kweli
31console.log(validateIban('DE89 3704 0044 0532 0130 01')); // si kweli (nambari za kuangalia zisizo sahihi)
32
1def validate_iban(iban):
2 # Ondoa nafasi na geuza kuwa herufi kubwa
3 iban = iban.replace(' ', '').upper()
4
5 # Angalia muundo wa msingi
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Hamisha wahusika wanne wa kwanza hadi mwisho
10 rearranged = iban[4:] + iban[:4]
11
12 # Geuza herufi kuwa nambari (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 # Angalia kama mod 97 inalingana na 1
21 return int(converted) % 97 == 1
22
23# Mfano wa matumizi
24print(validate_iban('DE89 3704 0044 0532 0130 00')) # Kweli
25print(validate_iban('GB29 NWBK 6016 1331 9268 19')) # Kweli
26print(validate_iban('DE89 3704 0044 0532 0130 01')) # Si kweli (nambari za kuangalia zisizo sahihi)
27
1public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Ondoa nafasi na geuza kuwa herufi kubwa
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Angalia muundo wa msingi
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Hamisha wahusika wanne wa kwanza hadi mwisho
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Geuza herufi kuwa nambari
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 // Hesabu 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")); // kweli
31 System.out.println(validateIban("GB29 NWBK 6016 1331 9268 19")); // kweli
32 System.out.println(validateIban("DE89 3704 0044 0532 0130 01")); // si kweli
33 }
34}
35
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 // Ongeza nchi zaidi kama inahitajika
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Msimbo wa nchi ${countryCode} haupo`);
11 }
12
13 // Unda BBAN nasibu kulingana na muundo wa nchi
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 // Unda wahusika wa tarakimu
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Unda wahusika wa herufi
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 // Unda wahusika wa alphanumeric
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 // Hesabu nambari za kuangalia
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Unda IBAN ya awali na '00' kama nambari za kuangalia
55 const initialIban = countryCode + '00' + bban;
56
57 // Hamisha na geuza herufi kuwa nambari
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 // Hesabu 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// Mfano wa matumizi
77console.log(generateIban('DE')); // Inaunda IBAN halali ya Ujerumani
78console.log(generateIban('GB')); // Inaunda IBAN halali ya Uingereza
79
1import 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 # Ongeza nchi zaidi kama inahitajika
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Msimbo wa nchi {country_code} haupo")
14
15 # Unda BBAN nasibu kulingana na muundo wa nchi
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': # Tarakimu
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Herufi
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Alphanumeric
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Hesabu nambari za kuangalia
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 # Unda mfuatano wa kuhesabu nambari za kuangalia
40 check_string = bban + country_code + '00'
41
42 # Geuza herufi kuwa nambari (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 # Hesabu 98 minus mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Mfano wa matumizi
57print(generate_iban('DE')) # Inaunda IBAN halali ya Ujerumani
58print(generate_iban('GB')) # Inaunda IBAN halali ya Uingereza
59
Zana ya Kuunda na Kuangalia IBAN inatoa suluhisho rahisi lakini lenye nguvu kwa ajili ya majaribio na madhumuni ya elimu yanayohusiana na vitambulisho vya benki za kimataifa. Kwa kutoa uwezo wa kuunda na kuangalia katika kiolesura rafiki kwa mtumiaji, inafuta haja ya mipangilio ngumu au ushirikiano wa wahusika wa tatu.
Iwe unaunda programu za kifedha, unajaribu mifumo ya malipo, au unajifunza kuhusu viwango vya benki za kimataifa, zana hii inatoa njia rahisi ya kufanya kazi na IBANs. Uthibitisho wa kina unahakikisha kuwa IBAN zote zilizoundwa ni sahihi kimuundo na zinakidhi viwango vya kimataifa.
Jaribu kuunda au kuangalia IBAN sasa ili kujionea uwezo wa zana hii kwa vitendo!
Gundua zana zaidi ambazo zinaweza kuwa na manufaa kwa mtiririko wako wa kazi