Hasilkan IBAN ujian yang sah atau mengesahkan yang sedia ada dengan serta-merta. Menyokong 10 negara Eropah dengan pengesahan MOD 97. Sempurna untuk ujian perisian kewangan dan pembangunan.
Menguji perisian kewangan tanpa data akaun bank sebenar? Anda memerlukan format IBAN yang sah yang lulus semakan. Alat ini menjana IBAN rawak yang mengikuti format negara tertentu dan mengesahkan yang sedia ada menggunakan standard ISO 13616.
Inilah masalah praktikal yang diselesaikan: semasa membina sistem pembayaran atau aplikasi perbankan, anda memerlukan data ujian yang tidak akan gagal semakan tetapi tidak berisiko mendedahkan nombor akaun sebenar. Kesilapan biasa yang dilakukan pembangun ialah mencipta IBAN "palsu" yang tidak lulus algoritma semakan MOD 97, menyebabkan ujian gagal atas sebab yang salah.
Alat ini mengendalikan dua tugas utama:
IBAN (Nombor Akaun Bank Antarabangsa) menyeragamkan cara bank mengenal pasti akaun merentas sempadan. Setiap IBAN mengandungi kod negara, dua digit semakan yang dikira melalui MOD 97, dan Nombor Akaun Bank Asas (BBAN) yang berbeza mengikut negara. Yang menjadikannya rumit ialah Jerman menggunakan 22 aksara manakala Perancis memerlukan 27, dan struktur dalaman berbeza sama sekali.
IBAN boleh mempunyai sehingga 34 aksara alfanumerik, walaupun kebanyakan negara Eropah menggunakan 22-27. Setiap IBAN dipecahkan kepada tiga bahagian:
Ambil IBAN Jerman sebagai contoh. Corak DE2!n8!n10!n bermaksud:
DE = kod negara2!n = dua digit semakan numerik8!n = kod bank lapan digit (Bankleitzahl)10!n = nombor akaun sepuluh digit (Kontonummer)Yang mengejutkan orang adalah betapa berbezanya format antara negara:
| Negara | Panjang | Struktur | Contoh |
|---|---|---|---|
| Jerman (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| UK (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| Perancis (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| Sepanyol (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| Itali (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
Pengesahan IBAN bergantung kepada algoritma MOD 97 yang ditakrifkan dalam ISO 7064. Inilah yang sebenarnya berlaku apabila anda mengesahkan IBAN:
Secara matematis:
Mengapa MOD 97 khususnya? Ia menangkap hampir semua ralat biasa: kesilapan digit tunggal, digit yang ditukar, malah kebanyakan ralat penyuntingan yang melibatkan aksara yang kelihatan serupa. Dalam amalan, saya dapati ia menangkap kira-kira 99.9% ralat kemasukan data secara tidak sengaja, itulah sebabnya ia menjadi standard antarabangsa.
Satu keunikan yang patut diketahui: semasa menjana IBAN, anda mengira digit semakan dengan bermula dengan "00", menjalankan algoritma, kemudian menggunakan 98 tolak baki. Ini memastikan IBAN akhir akan disahkan dengan betul.
Hasilkan IBAN ujian yang lulus pengesahan tantidakpaun akaun:sebe- Pilihan Negara: Menyokong 10 negaharaopah utama ((UK, per, Sepanyol, Itali, Belanda, Switzerland, Austria, Belgium, Poland)
Pematuhan Format: Setiap IBAN yang dijana memenuhi struktur negaramiulusaan MOD 97
Penjanaan Satu Klik: Tiada konfigurasi diperlukan—hanya hpilih negara dan hasilkan
Salin ke Papan Klip: Klik tunggmggaibanaan penuh untuk ditempek dalam ujian anda
Pecahan Visual: Paparan berwarna menunjukkan kod negara, digit semak, dan butiran bank secarasinganoses:
###:Iban
Sahkan struktur IBAN dan tangkap isuai sebelum mencapai pengeluaran:
ak pengesahan dilaksanakan mengikut urutan:
Pengujian API: Semasa membina ujian integrasi pembayaran, anda memerlukan IBAN yang lulus pengesahan tetapi tidak akan mencetus transaksi sebenar. Hasilkan kelompok IBAN ujian untuk suite ujian automatik anda, memastikan pengendalian ralat anda berfungsi dengan betul untuk format negara yang berbeza.
Pengesahan Borang: Menguji aliran pembayaran? Gunakan pengvalidasi untuk mengesahkan pengesahan frontend anda sepadan dengan keperluan backend. Isu kerap adalah menerima format IBAN yang akan ditolak oleh pemproses pembayaran anda kemudian—mengesan ini semasa pembangunan menjimatkan kekecewaan pelanggan.
Pengujian Kes Pinggir: Kebanyakan pembangun menguji dengan satu atau dua format negara. Apa yang berlaku apabila pelanggan Switzerland dengan IBAN 21 aksara menggunakan sistem anda yang direka untuk IBAN Jerman 22 aksara? Hasilkan pelbagai format negara untuk menguji tekanan logik panjang medan dan pengesahan anda.
Pengujian Regresi: Selepas mengemas kini perpustakaan pengesahan IBAN anda, jalankan IBAN ujian yang dijana melalui versi lama dan baru. Sebarang perbezaan menunjukkan perubahan yang merosakkan yang boleh menjejaskan pengeluaran.
Sistem Pembayaran: Semasa membina fungsi pemindahan wayar antarabangsa, anda akan menemui senario di mana struktur IBAN sendiri menentukan gelagat penghalaan. IBAN dari Belanda (yang termasuk huruf dalam BBAN) mendedahkan pepijat yang tidak akan ditangkap oleh IBAN Jerman yang semuanya angka.
Perisian Perbankan: Menghurai IBAN untuk mengekstrak kod bank dan pengecam cawangan memerlukan logik khusus negara. Hasilkan IBAN untuk setiap negara yang disokong untuk mengesahkan algoritma penguraian anda dengan betul mengenal pasti komponen ini.
Pengesahan Pematuhan: Peraturan kewangan sering memerlukan pengesahan IBAN sebelum pemprosesan. Gunakan alat ini untuk mencipta kes ujian yang membuktikan sistem anda menolak digit semakan yang tidak sah dan format yang salah—penting untuk jejak audit.
Pendidikan Standard Perbankan: Pelajar yang mempelajari sistem pembayaran antarabangsa mendapat manfaat daripada melihat struktur IBAN sebenar. Hasilkan contoh dari pelbagai negara untuk menggambarkan cara piawaian berfungsi merentasi sistem perbankan yang berbeza.
Dokumentasi API: Daripada menggunakan IBAN yang berpotensi sebenar dalam dokumentasi teknikal anda, hasilkan contoh yang bersih. Dokumentasi dengan frasa seperti "Gunakan IBAN DE89370400440532013000 untuk ujian" serta-merta memberitahu pembangun bahawa ini adalah nilai ujian yang selamat.
Penampalan Pangkalan Data: Persekitaran pembangunan dan peringkat memerlukan data ujian yang realistik. Hasilkan IBAN yang pelbagai untuk mengisi pangkalan data anda dengan profil pelanggan antarabangsa yang representative tanpa kebimbangan privasi.
Penganonimi Data: Memindahkan dari pengeluaran ke peringkat? Gantikan IBAN sebenar dengan yang dijana yang mengekalkan kesahihan format untuk ujian sambil mengalih keluar maklumat sensitif. Kritikal untuk pematuhan GDPR dalam persekitaran pembangunan.
Alat yang berbeza sesuai untuk keperluan yang berbeza. Berikut adalah perbandingan yang jujur:
Terbaik untuk pengesahan produksi berbanding pendaftaran bank sebenar. Perkhidmatan ini menyemak sama ada IBAN sepadan dengan akaun aktif, bukan sekadar sama ada formatnya betul.
Gunakan apabila: Anda perlu mengesahkan bahawa IBAN wujud dan boleh menerima pembayaran, bukan sekadar struktur yang sah.
Batasan: Memerlukan bayaran (biasanya harga per panggilan API), memerlukan kerja integrasi, dan anda masih memerlukan IBAN ujian untuk pembangunan—di sinilah alat ini berguna.
Terbaik untuk pengesahan terbenam dalam kod aplikasi anda. Perpustakaan seperti ibantools untuk JavaScript atau python-stdnum untuk Python menyediakan fungsi pengesahan dan penghasilan.
Gunakan apabila: Anda memerlukan akses pengaturcaraan sebagai sebahagian daripada pengesahan pembinaan atau masa larian.
Batasan: Memerlukan usaha pembangunan untuk diintegrasikan, dan anda masih memerlukan cara pantas untuk menguji IBAN tertentu semasa nyahpepijat. Di sinilah alat web lebih pantas daripada menulis skrip ujian.
Pendaftaran IBAN rasmi yang diselenggarakan oleh SWIFT menyenaraikan semua format negara dan peraturan pengesahan. Ia adalah sumber yang paling berkuasa.
Gunakan apabila: Anda melaksanakan sokongan IBAN dari awal dan memerlukan spesifikasi rasmi.
Batasan: Ia adalah dokumentasi, bukan alat. Anda masih perlu membina atau mencari sesuatu untuk benar-benar menghasilkan dan mengesahkan IBAN berdasarkan spesifikasi tersebut.
Banyak bank negara menyediakan pengesah khusus negara (contohnya Bundesbank untuk IBAN Jerman). Ini sangat tepat untuk negara tertentu.
Gunakan apabila: Anda hanya bekerja dengan satu negara dan memerlukan butiran pengesahan bank.
Batasan: Fokus pada satu negara. Jika anda membina sistem pembayaran antarabangsa, anda memerlukan pengesah untuk setiap negara.
Gunakan alat ini apabila anda memerlukan ujian pantas tanpa integrasi API. Ia sangat berguna semasa pembangunan dan nyahpepijat apabila anda perlu menghasilkan data ujian yang sah serta-merta atau mengesahkan mengapa IBAN tertentu gagal pengesahan. Ia tidak akan menggantikan perpustakaan pengesahan tahap produksi dalam kod anda, tetapi ia lebih pantas daripada menulis skrip ujian yang dibuang.
IBAN bermaksud Nombor Akaun Bank Antarabangsa—format piawai yang dicipta oleh Pertubuhan Piawai Antarabangsa (ISO) untuk mengurangkan ralat dalam pembayaran rentas sempadan. Sebelum IBAN, setiap negara menggunakan format nombor akaun sendiri, yang menyebabkan kesilapan kerap dan pemindahan gagal. IBAN menambah kod negara dan digit semakan untuk mengesan ralat sebelum wang bergerak.
IBAN yang dijana adalah betul dari segi matematik dan lulus algoritma pengesahan MOD 97 yang ditakrifkan dalam ISO 13616. Mereka mengikuti struktur khusus negara yang betul. Walau bagaimanapun, mereka dijana secara rawak dan tidak sepadan dengan akaun bank sebenar—itulah tujuannya. Mereka selamat untuk pengujian kerana mereka tidak akan secara tidak sengaja menyentuh akaun sebenar.
Kini 10 negara Eropah: Jerman, United Kingdom, Perancis, Sepanyol, Itali, Belanda, Switzerland, Austria, Belgium, dan Poland. Ini meliputi format IBAN yang paling biasa anda akan temui dalam sistem pembayaran Eropah. Perlukan negara lain? Borang maklum balas adalah cara terbaik untuk meminta tambahan.
Sama sekali tidak. Ini hanya IBAN ujian. Mereka lulus pengesahan format tetapi tidak disambungkan dengan akaun bank sebenar. Menggunakannya untuk transaksi sebenar akan mengakibatkan kegagalan atau penolakan pembayaran. Mereka dimaksudkan untuk pembangunan, pengujian, dan tujuan pendidikan sahaja.
Penggesah menjalankan empat semakan berturut-turut:
Jika mana-mana semakan gagal, anda akan melihat mesej ralat khusus yang menjelaskan apa yang salah.
Tidak untuk pengesahan. IBAN biasanya dipaparkan dengan ruang (kumpulan empat) untuk kebolehbacaan, tetapi ruang adalah kosmetik. DE89 3704 0044 0532 0130 00 dan DE89370400440532013000 adalah identik untuk tujuan pengesahan. Alat ini mengendalikan kedua-dua format secara automatik.
Tidak. Semuanya berjalan dalam pelayar anda menggunakan JavaScript. Tiada data IBAN meninggalkan mesin anda, menyentuh pelayan, atau disimpan di mana-mana. Anda boleh mengesahkan ini dengan membuka alat pembangun pelayar dan melihat tab rangkaian—anda tidak akan melihat sebarang permintaan semasa menjana atau mengesahkan IBAN.
Alat ini kini hanya menyokong 10 negara dalam menu tarik turun. Menambah lebih banyak memerlukan pelaksanaan peraturan format khusus setiap negara. Jika anda memerlukan pengesahan untuk negara seperti Norway, Sweden, atau yang lain, beritahu kami melalui borang maklum balas—kami mengutamakan tambahan berdasarkan permintaan.
Sebab yang paling biasa:
Mesej ralat akan memberitahu anda secara khusus apa yang salah.
Gunakan borang maklum balas di bahagian bawah halaman. Laporan pepijat khusus dengan contoh IBAN adalah paling membantu. Untuk permintaan ciri, menjelaskan kes penggunaan anda membantu menetapkan keutamaan apa yang akan dibina seterusnya.
IBAN mengenal pasti akaun bank tertentu, manakala kod SWIFT/BIC mengenal pasti bank atau cawangan bank. Fikirkan begini: kod SWIFT memberitahu anda bank mana, IBAN memberitahu anda akaun mana di bank itu. Untuk pemindahan antarabangsa, anda sering memerlukan kedua-duanya—kod SWIFT menghantar ke bank yang betul, kemudian IBAN menghantar ke akaun tertentu.
Ya, kerana dua huruf pertama setiap IBAN adalah kod negara. Penggesah membaca dua aksara pertama untuk menentukan format negara yang mana untuk digunakan. Inilah sebabnya pengesanan negara berlaku secara automatik apabila anda menampal IBAN—tiada keperluan untuk memilih negara secara manual.
Ya, tetapi lebih sedikit. Walaupun IBAN berasal di Eropah dan mempunyai penerimaan tertinggi di sana, negara seperti Arab Saudi, UAE, Brazil, dan lain-lain telah menggunakannya. Alat ini kini fokus pada format Eropah kerana ia mewakili majoriti transaksi rentas sempadan. Pendaftaran IBAN SWIFT mengekalkan senarai lengkap.
Pernahkah anda melihat IBAN seperti DE89370400440532013000 dan tertanya-tanya apa maksud setiap bahagiannya? Berikut adalah cara menterjemahkan mana-mana IBAN:
Langkah 1: Kod Negara (2 aksara pertama)
DE = JermanLangkah 2: Digit Semakan (2 aksara seterusnya)
89 = checksum yang dikiraLangkah 3: Kod Bank (Berbeza mengikut negara)
37040044 dalam IBAN Jerman = pengecam bank 8 digitLangkah 4: Nombor Akaun (Aksara yang tinggal)
0532013000 = nombor akaun sebenar di bank tersebutNegara yang berbeza mengatur bahagian BBAN dengan cara yang berbeza. IBAN UK termasuk kod susunan 6 digit (pengecam cawangan) antara kod bank dan nombor akaun. IBAN Perancis menggabungkan kod bank, kod cawangan, dan nombor akaun dengan kunci semakan. Memahami perbezaan ini adalah penting apabila mengurai IBAN secara programatik.
Apabila melaksanakan pengesahan IBAN, anda akan berulang kali menghadapi isu-isu ini:
Punca: Pengiraan MOD 97 tidak sama dengan 1. Sama ada digit semakan salah, atau terdapat ralat di tempat lain dalam IBAN.
Penyelesaian: Jalankan semula pengesahan selepas membetulkan sebarang kesilapan taip. Walaupun satu aksara yang salah di mana-mana bahagian IBAN menyebabkan kegagalan digit semakan. Ini adalah reka bentuk—ia mengesan ralat kemasukan data.
Punca: IBAN mempunyai terlalu banyak atau terlalu sedikit aksara untuk kod negaranya.
Penyelesaian: Sahkan kod negara sepadan dengan negara yang dimaksudkan. IBAN Jerman sentiasa 22 aksara, IBAN UK adalah 22, IBAN Perancis adalah 27. Aksara yang hilang atau tambahan menunjukkan pemotongan atau data yang salah.
Punca: Aksara yang tidak sepatutnya muncul pada kedudukan tersebut—seperti huruf di mana hanya nombor dibenarkan.
Penyelesaian: Semak format khusus negara. Contohnya, IBAN Jerman adalah semuanya numerik selepas kod negara dan digit semakan, manakala IBAN UK termasuk 4 huruf untuk kod bank.
Punca: Dua huruf pertama bukan kod negara yang diiktiraf, atau tidak disokong oleh pengecam anda.
Penyelesaian: Sahkan ejaan kod negara. Kesilapan biasa termasuk menggunakan UK dan bukannya GB, atau EN dan bukannya kod negara. Alat ini menyokong 10 negara Eropah; pengecam produksi perlu menyokong semua negara pendaftaran SWIFT.
Perbezaan penting: pengesahan mengesahkan IBAN adalah betul dari segi struktur, bukan bahawa akaun itu wujud. Sebuah IBAN boleh lulus semua semakan pengesahan tetapi masih tidak sepadan dengan akaun bank sebenar. Untuk sistem pembayaran produksi, anda memerlukan pengesahan tambahan di luar pengesahan format.
Jika anda membina sokongan IBAN ke dalam aplikasi anda, berikut adalah contoh kod yang telah diuji dalam pelbagai bahasa. Pelaksanaan ini menangani kes-kes pinggir yang anda akan temui dalam pengeluaran:
1function validateIban(iban) {
2 // Buang ruang dan tukar kepada huruf besar
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Semak format asas
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Susun semula dan tukar huruf kepada nombor
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 // Kira 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// Contoh penggunaan
29console.log(validateIban('DE89 3704 0044 0532 0130 00')); // benar
30console.log(validateIban('GB29 NWBK 6016 1331 9268 19')); // benar
31console.log(validateIban('DE89 3704 0044 0532 0130 01')); // salah (digit semakan tidak sah)
321def validate_iban(iban):
2 # Buang ruang dan tukar kepada huruf besar
3 iban = iban.replace(' ', '').upper()
4
5 # Semakan format asas
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Pindahkan 4 aksara pertama ke hujung
10 rearranged = iban[4:] + iban[:4]
11
12 # Tukar huruf kepada nombor (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 # Semak jika mod 97 bersamaan 1
21 return int(converted) % 97 == 1
22
23# Contoh penggunaan
24print(validate_iban('DE89 3704 0044 0532 0130 00')) # Benar
25print(validate_iban('GB29 NWBK 6016 1331 9268 19')) # Benar
26print(validate_iban('DE89 3704 0044 0532 0130 01')) # Salah (digit semakan tidak sah)
271public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Buang ruang dan tukar kepada huruf besar
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Semakan format asas
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Pindahkan 4 aksara pertama ke hujung
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Tukar huruf kepada nombor
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 // Kira 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")); // benar
31 System.out.println(validateIban("GB29 NWBK 6016 1331 9268 19")); // benar
32 System.out.println(validateIban("DE89 3704 0044 0532 0130 01")); // salah
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 // Tambah negara lain mengikut keperluan
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Kod negara ${countryCode} tidak disokong`);
11 }
12
13 // Hasilkan BBAN rawak berdasarkan corak negara
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 // Hasilkan aksara numerik
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Hasilkan aksara alfabetik
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 // Hasilkan aksara alfanumerik
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 // Kira digit semakan
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Cipta IBAN awal dengan '00' sebagai digit semakan
55 const initialIban = countryCode + '00' + bban;
56
57 // Susun semula dan tukar huruf kepada nombor
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 // Kira 98 tolak 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// Contoh penggunaan
77console.log(generateIban('DE')); // Hasilkan IBAN Jerman yang sah
78console.log(generateIban('GB')); // Hasilkan IBAN UK yang sah
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 # Tambah negara lain mengikut keperluan
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Kod negara {country_code} tidak disokong")
14
15 # Hasilkan BBAN rawak berdasarkan format negara
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': # Numerik
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Alfabetik
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Alfanumerik
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Kira digit semakan
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 # Cipta rentetan untuk pengiraan digit semakan
40 check_string = bban + country_code + '00'
41
42 # Tukar huruf kepada nombor (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 # Kira 98 tolak mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Contoh penggunaan
57print(generate_iban('DE')) # Hasilkan IBAN Jerman yang sah
58print(generate_iban('GB')) # Hasilkan IBAN UK yang sah
59Perlukan data ujian untuk sistem pembayaran anda? Hasilkan IBAN yang sah untuk mana-mana negara yang disokong di atas, atau tampal IBAN sedia ada untuk mengesahkan strukturnya. Alat ini berjalan sepenuhnya dalam pelayar anda—tiada pendaftaran, tiada kunci API, tiada data dihantar ke pelayan.
Petua pantas: Hasilkan IBAN dari pelbagai negara untuk menguji kes-kes pinggir. Sistem pembayaran dunia sebenar mengendalikan format yang pelbagai, dan menguji dengan format hanya satu negara adalah sumber biasa ralat pengeluaran.
Temui lebih banyak alat yang mungkin berguna untuk aliran kerja anda