IBAN Generator & Validator Tool - Test Banking Data
Generate valid test IBANs or validate existing ones instantly. Supports 10 European countries with MOD 97 validation. Perfect for financial software testing and development.
مولد ومتحقق من IBAN
التوثيق
أداة توليد وتحقق من IBAN
ما يقوم به هذه الأداة
هل تقوم باختبار البرامج المالية بدون بيانات حسابات بنكية حقيقية؟ ستحتاج إلى تنسيقات IBAN صالحة تجتاز عمليات التحقق. تقوم هذه الأداة بإنشاء أرقام IBAN عشوائية تتبع التنسيقات الخاصة بكل دولة وتتحقق من الأرقام الموجودة باستخدام المعيار ISO 13616.
إليك المشكلة العملية التي تحلها: عند بناء أنظمة الدفع أو التطبيقات المصرفية، تحتاج إلى بيانات اختبار لن تفشل في التحقق ولكنها لا تخاطر بكشف أرقام الحسابات الحقيقية. الخطأ الشائع الذي يرتكبه المطورون هو إنشاء أرقام IBAN "مزيفة" لا تجتاز خوارزمية التحقق MOD 97، مما يتسبب في فشل الاختبارات للأسباب الخاطئة.
تقوم الأداة بمعالجة مهمتين أساسيتين:
- المولد: يُنشئ أرقام IBAN صالحة هيكليًا لأي دولة مدعومة. كل رقم مولد يجتاز نفس عمليات التحقق التي سيقوم بها النظام الإنتاجي.
- المتحقق: يتحقق من بنية IBAN وأرقام التحقق والتنسيق الخاص بكل دولة. مفيد في تصحيح سبب رفض رقم IBAN.
أرقام IBAN (الأرقام المصرفية الدولية) توحد كيفية تعريف البنوك للحسابات عبر الحدود. يحتوي كل رقم على رمز الدولة وأرقام تحقق محسوبة عبر MOD 97 ورقم الحساب المصرفي الأساسي (BBAN) الذي يختلف حسب الدولة. ما يجعل الأمر معقدًا هو أن ألمانيا تستخدم 22 حرفًا بينما فرنسا تحتاج إلى 27، والهيكل الداخلي يختلف تمامًا.
كيف تعمل أرقام الحساب البنكية الدولية (IBAN)
بنية وتنسيق IBAN
يمكن أن تصل أرقام IBAN إلى 34 حرفًا أبجديًا رقميًا، على الرغم من أن معظم الدول الأوروبية تستخدم 22-27. كل IBAN ينقسم إلى ثلاثة أجزاء:
- رمز الدولة: حرفان من معيار ISO 3166-1 alpha-2 (DE لألمانيا، GB للمملكة المتحدة)
- أرقام التحقق: رقمان محسوبان يتحققان من IBAN بأكمله باستخدام MOD 97
- رقم الحساب البنكي الأساسي (BBAN): الجزء الخاص بالدولة والذي يتضمن:
- معرف البنك (يُسمى أحيانًا رقم التوجيه أو رمز البنك)
- معرف الفرع (تسميه المملكة المتحدة رمز الفرز)
- رقم الحساب
- أحيانًا أرقام تحقق وطنية إضافية
خذ رقم IBAN الألماني كمثال. النمط DE2!n8!n10!n يعني:
DE= رمز الدولة2!n= رقمي التحقق الرقميان8!n= رمز البنك المكون من ثمانية أرقام (Bankleitzahl)10!n= رقم الحساب المكون من عشرة أرقام (Kontonummer)
ما يفاجئ الناس هو مدى اختلاف هذه التنسيقات بين الدول:
| الدولة | الطول | البنية | المثال |
|---|---|---|---|
| ألمانيا (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| المملكة المتحدة (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| فرنسا (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| إسبانيا (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| إيطاليا (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
خوارزمية التحقق من IBAN
يعتمد التحقق من IBAN على خوارزمية MOD 97 المحددة في ISO 7064. إليك ما يحدث فعليًا عند التحقق من IBAN:
- نقل الأحرف الأربعة الأولى (رمز الدولة وأرقام التحقق) إلى النهاية
- استبدال كل حرف بأرقام: A=10، B=11، وصولًا إلى Z=35
- حساب المتبقي من القسمة على 97 لسلسلة الأرقام الناتجة
- أرقام IBAN الصالحة تنتج دائمًا باقيًا يساوي 1 بالضبط
رياضيًا:
لماذا MOD 97 تحديدًا؟ إنها تلتقط معظم الأخطاء الشائعة: أخطاء الأرقام الفردية، والأرقام المتبادلة، وحتى معظم أخطاء إدخال البيانات التي تتضمن أحرافًا متشابهة. في الممارسة، وجدت أنها تلتقط حوالي 99.9% من أخطاء إدخال البيانات عن طريق الخطأ، وهذا هو السبب في أصبحت المعيار الدولي.
نقطة غريبة تستحق المعرفة: عند إنشاء أرقام IBAN، يتم حساب أرقام التحقق بدءًا بـ "00"، وتشغيل الخوارزمية، ثم استخدام 98 مطروحًا منه المتبقي. هذا يضمن أن IBAN النهائي سيتم التحقق منه بشكل صحيح.
ميزات الأداة
مولد IBAN
قم بإنشاء IBANs اختبارية تجتاز التحقق دون استخدام أرقام حسابات حقيقية:
- اختيار الدولة: يدعم 10 دول أوروبية رئيسية (ألمانيا، المملكة المتحدة، فرنسا، إسبانيا، إيطاليا، هولندا، سويسرا، النمسا، بلجيكا، بولندا)
- الامتثال للتنسيق: كل IBAN منشأ يطابق الهيكل الرسمي للدولة ويجتاز التحقق MOD 97
- إنشاء بنقرة واحدة: لا توجد إعدادات مطلوبة - فقط اختر دولة وأنشئ
- نسخ إلى الحافظة: نقرة واحدة تنسخ IBAN الكامل للصق في اختباراتك
- تفصيل بصري: عرض ملون يظهر رمز الدولة وأرقام التحقق وتفاصيل البنك بشكل منفصل
عملية الإنشاء:
- اختيار قالب التنسيق الخاص بالدولة
- ملء أرقام/حروف عشوائية في جزء BBAN
- حساب أرقام التحقق باستخدام MOD 97
- تجميع وتحقق IBAN الكامل
نصيحة احترافية: عند تهيئة قواعد بيانات الاختبار، أنشئ IBANs من دول متعددة لاختبار السيناريوهات عبر الحدود. أنظمة الدفع الحقيقية غالبًا ما تحتوي على حالات حافة مع دول محددة.
مدقق IBAN
تحقق من هيكل IBAN واكتشف مشاكل التنسيق قبل الإنتاج:
- التحقق من التنسيق: يتحقق من متطلبات الطول والهيكل الخاصة بكل دولة
- التحقق MOD 97: يشغل خوارزمية أرقام التحقق بالكامل
- تفصيل المكونات: يظهر بالضبط كيفية تقسيم IBAN إلى رمز الدولة وأرقام التحقق وكود البنك ورقم الحساب
- رسائل خطأ محددة: بدلاً من رسائل "غير صالح" العامة، سترى ما هو خطأ بالفعل
- التنسيق التلقائي: يتعامل مع IBANs مع أو بدون مسافات - يحدث التنسيق تلقائيًا
تتم عمليات التحقق بالترتيب:
- التعرف على رمز الدولة (هل هو مدعوم؟)
- التحقق من الطول (عدد الأحرف الصحيح لتلك الدولة؟)
- التحقق من نوع الحرف (أرقام حيث يُتوقع، حروف حيث مسموح)
- حساب أرقام التحقق MOD 97 (هل تعمل الرياضيات؟)
سيناريو شائع: يتلقى API الخاص بك IBAN من إدخال المستخدم مع مسافات غير متسقة. استخدم المدقق لتنميطه قبل المعالجة - يزيل المسافات تلقائيًا ويظهر لك التنسيق الصحيح.
دليل خطوة بخطوة
إنشاء رقم حساب بنكي دولي (IBAN)
- الوصول إلى علامة التبويب المولد: انقر على علامة التبويب "المولد" (محددة بشكل افتراضي)
- اختيار دولة: اختر الدولة المرغوبة من القائمة المنسدلة
- توليد رقم الحساب البنكي الدولي: انقر على زر "توليد رقم IBAN"
- عرض النتيجة: سيظهر رقم IBAN الذي تم إنشاؤه أدناه مع تفصيل مكوناته
- نسخ إلى الحافظة: انقر على زر "نسخ إلى الحافظة" لنسخ رقم IBAN للاستخدام في مكان آخر
التحقق من رقم الحساب البنكي الدولي
- الوصول إلى علامة التبويب المتحقق: انقر على علامة التبويب "المتحقق"
- إدخال رقم IBAN: اكتب أو الصق رقم IBAN في حقل الإدخال
- سيتم التعامل مع المسافات والتنسيق تلقائيًا
- يقبل الأداة أرقام IBAN المنسقة (مع مسافات) وغير المنسقة
- عرض نتائج التحقق: ستقوم الأداة بالتحقق من رقم IBAN تلقائيًا أثناء الكتابة
- التحقق من التفاصيل: بالنسبة لأرقام IBAN الصالحة، سيتم عرض تفصيل مكوناتها
- مراجعة الأخطاء: بالنسبة لأرقام IBAN غير الصالحة، ستساعد رسائل الخطأ المحددة في تحديد المشكلة
استخدامات وتطبيقات عملية
تطوير البرمجيات والاختبار
اختبار واجهة برمجة التطبيقات (API): عند بناء اختبارات تكامل الدفع، تحتاج إلى أرقام حسابات بنكية دولية (IBAN) تجتاز التحقق دون تشغيل معاملات فعلية. قم بإنشاء دفعة من أرقام الحسابات البنكية الدولية للاختبار التلقائي، مع التأكد من أن معالجة الأخطاء لديك تعمل بشكل صحيح لتنسيقات الدول المختلفة.
التحقق من نموذج الإدخال: هل تختبر تدفق الدفع؟ استخدم أداة التحقق للتأكد من أن التحقق في الواجهة الأمامية يطابق متطلبات الخلفية. المشكلة الشائعة هي قبول تنسيق رقم الحساب البنكي الدولي الذي سيرفضه لاحقًا معالج الدفع - اكتشاف ذلك أثناء التطوير يوفر إحباط العملاء.
اختبار الحالات الحدية: معظم المطورين يختبرون بتنسيق دولة واحد أو اثنين. ماذا يحدث عندما يستخدم عميل سويسري رقم حساب بنكي دولي من 21 حرفًا نظامك المصمم حول أرقام الحسابات البنكية الدولية الألمانية ذات 22 حرفًا؟ قم بإنشاء تنسيقات دول مختلفة لاختبار طول الحقول ومنطق التحقق.
اختبار التراجع: بعد تحديث مكتبة التحقق من رقم الحساب البنكي الدولي، قم بتشغيل أرقام الحسابات البنكية الدولية المولدة عبر الإصدارات القديمة والجديدة. أي اختلافات تشير إلى تغييرات مؤثرة يمكن أن تؤثر على الإنتاج.
تطوير التطبيقات المالية
أنظمة الدفع: عند بناء وظيفة التحويلات المالية الدولية، ستواجه سيناريوهات يحدد فيها هيكل رقم الحساب البنكي الدولي سلوك التوجيه. تكشف أرقام الحسابات البنكية الدولية الهولندية (التي تتضمن حروفًا في الجزء الأساسي) عن أخطاء لن تكتشفها أرقام الحسابات البنكية الدولية الألمانية الرقمية بالكامل.
برامج المصرفية: يتطلب تحليل أرقام الحسابات البنكية الدولية لاستخراج رموز البنوك والمعرفات الفرعية منطقًا خاصًا بالدولة. قم بإنشاء أرقام حسابات بنكية دولية لكل دولة مدعومة للتحقق من أن خوارزمية التحليل تحدد هذه المكونات بشكل صحيح.
التحقق من الامتثال: غالبًا ما تتطلب اللوائح المالية التحقق من أرقام الحسابات البنكية الدولية قبل المعالجة. استخدم هذه الأداة لإنشاء حالات اختبار تثبت أن نظامك يرفض الأرقام التحققية غير الصالحة والتنسيقات غير الصحيحة - وهو أمر أساسي لسجلات المراجعة.
التعليم والتوثيق
تعليم معايير المصرفية: يستفيد الطلاب الذين يتعلمون أنظمة الدفع الدولية من رؤية هياكل أرقام الحسابات البنكية الدولية الحقيقية. قم بإنشاء أمثلة من دول متعددة لتوضيح كيفية عمل التوحيد القياسي عبر أنظمة مصرفية مختلفة.
توثيق واجهة برمجة التطبيقات: بدلاً من استخدام أرقام حسابات بنكية دولية قد تكون حقيقية في وثائقك الفنية، قم بإنشاء أمثلة نظيفة. الوثائق التي تحتوي على عبارات مثل "استخدم رقم الحساب البنكي الدولي DE89370400440532013000 للاختبار" تخبر المطورين فورًا بأنها قيم اختبار آمنة.
عمليات البيانات
بذر قاعدة البيانات: تحتاج بيئات التطوير والتجميع إلى بيانات اختبار واقعية. قم بإنشاء أرقام حسابات بنكية دولية متنوعة لملء قاعدة البيانات الخاصة بك بملفات تعريف عملاء دولية تمثيلية دون مخاوف بشأن الخصوصية.
إخفاء هوية البيانات: عند الانتقال من الإنتاج إلى التجميع؟ استبدل أرقام الحسابات البنكية الدولية الحقيقية بأخرى مولدة تحافظ على صحة التنسيق للاختبار مع إزالة المعلومات الحساسة. أمر حاسم للامتثال لقانون حماية البيانات العامة (GDPR) في بيئات التطوير.
البدائل ومتى يتم استخدامها
تناسب أدوات مختلفة احتياجات مختلفة. إليك مقارنة صادقة:
واجهات برمجة التطبيقات المصرفية التجارية (مثل Stripe و Adyen)
الأفضل للتحقق في الإنتاج مقابل السجلات المصرفية الفعلية. تتحقق هذه الخدمات من أن رقم الحساب البنكي الدولي (IBAN) يتوافق مع حساب نشط فعلي، وليس فقط التأكد من صحة التنسيق.
استخدم عندما: تحتاج إلى التحقق من وجود رقم الحساب البنكي الدولي وإمكانية استلام المدفوعات، وليس فقط التأكد من صحته الهيكلية.
القيود: تكلفة مالية (عادة ما تكون التسعير لكل استدعاء واجهة برمجة التطبيقات)، وتتطلب عمل تكامل، ولا تزال بحاجة إلى أرقام حسابات بنكية دولية للاختبار - وهنا يأتي دور هذه الأداة.
مكتبات لغات البرمجة (ibantools و iban.js و python-stdnum)
الأفضل للتحقق المدمج في كود التطبيق الخاص بك. توفر المكتبات مثل ibantools لـ JavaScript أو python-stdnum لـ Python وظائف التحقق والإنشاء.
استخدم عندما: تحتاج إلى وصول برمجي كجزء من التحقق أثناء البناء أو وقت التشغيل.
القيود: يتطلب جهدًا تطويريًا للتكامل، ولا تزال بحاجة إلى طريقة سريعة للاختبار اليدوي لأرقام الحسابات البنكية الدولية المحددة أثناء تصحيح الأخطاء. وهنا تكون الأداة الويب أسرع من كتابة نصوص اختبار.
سجل SWIFT لأرقام الحسابات البنكية الدولية
يسرد السجل الرسمي لأرقام الحسابات البنكية الدولية الذي تحتفظ به SWIFT جميع تنسيقات الدول وقواعد التحقق. وهو المصدر المعتمد.
استخدم عندما: كنت تقوم بتنفيذ دعم أرقام الحسابات البنكية الدولية من الصفر وتحتاج إلى المواصفات الرسمية.
القيود: إنها وثائق، وليست أداة. ستحتاج إلى بناء أو إيجاد شيء لإنشاء والتحقق من أرقام الحسابات البنكية الدولية بناءً على تلك المواصفات.
أدوات التحقق المصرفية الرسمية
توفر العديد من البنوك الوطنية أدوات تحقق خاصة بالدولة (مثل Bundesbank لأرقام الحسابات البنكية الدولية الألمانية). وهي دقيقة للغاية لدولتها المحددة.
استخدم عندما: تعمل فقط مع دولة واحدة وتحتاج إلى تفاصيل التحقق على مستوى البنك.
القيود: التركيز على دولة واحدة. إذا كنت تبني أنظمة دفع دولية، فستحتاج إلى أدوات تحقق لكل دولة.
متى يكون هذا الأداة منطقية
استخدم هذه الأداة عندما تحتاج إلى اختبار سريع دون تكامل واجهة برمجة التطبيقات. وهي مفيدة بشكل خاص أثناء التطوير وتصحيح الأخطاء عندما تحتاج إلى إنشاء بيانات اختبار صالحة على الفور أو التحقق من سبب فشل رقم حساب بنكي دولي معين في التحقق. لن تحل محل مكتبات التحقق عالية الجودة في قاعدة التعليمات البرمجية الخاصة بك، لكنها أسرع من كتابة نصوص اختبار مؤقتة.
الأسئلة الشائعة
ما هو الـ IBAN ولماذا يهم؟
الـ IBAN هو اختصار لـ "رقم الحساب البنكي الدولي" - وهو تنسيق موحد تم إنشاؤه بواسطة المنظمة الدولية للمعايير (ISO) لتقليل الأخطاء في المدفوعات عبر الحدود. قبل أرقام IBAN، كان كل بلد يستخدم تنسيقه الخاص لأرقام الحسابات، مما أدى إلى أخطاء متكررة وعمليات تحويل فاشلة. يضيف IBAN رموز الدول وأرقام التحقق للكشف عن الأخطاء قبل انتقال الأموال.
ما مدى دقة أرقام IBAN المولدة؟
أرقام IBAN المولدة صحيحة رياضياً وتجتاز خوارزمية التحقق MOD 97 المحددة في المعيار ISO 13616. وهي تتبع الهياكل الخاصة بكل دولة. ومع ذلك، فهي مولدة عشوائياً ولا تتوافق مع حسابات بنكية حقيقية - وهذا هو الهدف. إنها آمنة للاختبار تحديداً لأنها لن تصل عن طريق الخطأ إلى حساب حقيقي.
ما هي الدول التي يدعمها هذا الأداة؟
حالياً 10 دول أوروبية: ألمانيا، المملكة المتحدة، فرنسا، إسبانيا، إيطاليا، هولندا، سويسرا، النمسا، بلجيكا، وبولندا. وهذه تغطي تنسيقات IBAN الأكثر شيوعاً التي ستواجهها في أنظمة الدفع الأوروبية. هل تحتاج إلى دولة أخرى؟ نموذج التعليقات هو أفضل وسيلة لطلب الإضافات.
هل يمكنني استخدام أرقام IBAN المولدة للتحويلات المالية الفعلية؟
بالتأكيد لا. هذه أرقام IBAN للاختبار فقط. وهي تجتاز التحقق من التنسيق ولكنها غير متصلة بحسابات بنكية حقيقية. استخدامها في المعاملات الفعلية سيؤدي إلى فشل الدفع أو رفضه. إنها مخصصة للتطوير والاختبار والأغراض التعليمية فقط.
كيف يعمل التحقق من IBAN بالفعل؟
يقوم المتحقق بإجراء أربع فحوصات متتالية:
- رمز الدولة: هل هو رمز مكون من حرفين معترف به؟
- الطول: هل يطابق الطول المطلوب لتلك الدولة؟ (ألمانيا = 22، المملكة المتحدة = 22، فرنسا = 27، إلخ)
- أنواع الأحرف: هل الأحرف والأرقام في المواقع الصحيحة بناءً على تنسيق الدولة؟
- فحص MOD 97: هل يساوي المجموع الرقمي 1 وفقاً للمعيار ISO 7064؟
إذا فشل أي فحص، ستظهر رسالة خطأ محددة توضح ما هو خطأ.
هل تهم المسافات في أرقام IBAN؟
لا بالنسبة للتحقق. يتم عرض أرقام IBAN عادةً بمسافات (مجموعات من أربعة) للقراءة، لكن المسافات تجميلية. DE89 3704 0044 0532 0130 00 و DE89370400440532013000 متطابقان لأغراض التحقق. الأداة تتعامل مع كلا التنسيقين تلقائياً.
هل يتم إرسال بياناتي إلى خادم أو تخزينها في مكان ما؟
لا. كل شيء يعمل في متصفحك باستخدام JavaScript. لا تغادر بيانات IBAN جهازك، ولا تلمس خادماً، ولا يتم تخزينها في أي مكان. يمكنك التحقق من ذلك بفتح أدوات المطور في المتصفح ومراقبة علامة الشبكة - لن ترى أي طلبات عند توليد أو التحقق من أرقام IBAN.
ماذا إذا احتجت إلى التحقق من IBAN من دولة غير مدرجة؟
الأداة تدعم حالياً فقط الدول العشر الموجودة في القائمة المنسدلة. إضافة المزيد يتطلب تنفيذ قواعد التنسيق الخاصة بكل دولة. إذا كنت بحاجة إلى التحقق من دول مثل النرويج أو السويد أو غيرها، أخبرنا عبر نموذج التعليقات - نحن نحدد أولويات الإضافات بناءً على الطلب.
لماذا يفشل IBAN ذو التنسيق الصحيح في التحقق؟
الأسباب الأكثر شيوعاً:
- أرقام التحقق غير الصحيحة: فشل اختبار MOD 97 حتى مع رقم واحد خاطئ
- أخطاء مطبعية: أحرف مقلوبة أو أرقام خاطئة في أي مكان في IBAN
- طول خاطئ: أحرف مفقودة أو زائدة لتلك الدولة
- أحرف غير صالحة: حروف حيث يُسمح فقط بالأرقام، أو العكس
- دولة غير مدعومة: رمز الدولة موجود لكنه غير مدرج في قائمتنا
ستخبرك رسالة الخطأ بالتحديد بما هو خطأ.
كيف يمكنني الإبلاغ عن الأخطاء أو طلب ميزات؟
استخدم نموذج التعليقات في أسفل الصفحة. تقارير الأخطاء المحددة مع أمثلة IBAN مفيدة بشكل خاص. بالنسبة لطلبات الميزات، شرح حالة الاستخدام الخاصة بك يساعد في تحديد أولويات ما سيتم بناؤه بعد ذلك.
ما الفرق بين IBAN وأكواد SWIFT/BIC؟
يحدد IBAN حسابات بنكية محددة، بينما تحدد أكواد SWIFT/BIC البنوك أو فروع البنوك. فكر في الأمر كالتالي: يخبرك كود SWIFT بالبنك، ويخبرك IBAN بالحساب المحدد في ذلك البنك. للتحويلات الدولية، غالباً ما تحتاج إلى كليهما - يوجه كود SWIFT إلى البنك الصحيح، ثم يوجه IBAN إلى الحساب المحدد.
هل يمكنني التحقق من IBAN دون معرفة الدولة؟
نعم، لأن الحرفين الأولين من كل IBAN هما رمز الدولة. يقرأ المتحقق هذين الحرفين الأولين لتحديد تنسيق الدولة المراد تطبيقه. لهذا السبب يحدث اكتشاف الدولة تلقائياً عند لصق IBAN - لا حاجة لتحديد الدولة يدوياً.
هل هناك تنسيقات IBAN للدول خارج أوروبا؟
نعم، ولكن بعدد أقل. على الرغم من أن IBAN نشأ في أوروبا وله أعلى معدل تبني هناك، إلا أن دولاً مثل المملكة العربية السعودية والإمارات العربية المتحدة والبرازيل وغيرها قد تبنته. يركز هذا الأداة حالياً على التنسيقات الأوروبية لأنها تمثل الغالبية العظمى من المعاملات عبر الحدود. يحتفظ سجل SWIFT للـ IBAN بالقائمة الكاملة.
كيفية قراءة وفك ترميز الـ IBAN
هل سبق لك أن نظرت إلى رقم IBAN مثل DE89370400440532013000 وتساءلت عن معنى كل جزء؟ إليك كيفية فك ترميز أي IBAN:
الخطوة 1: رمز الدولة (أول حرفين)
DE= ألمانيا- يخبرك بقواعد التنسيق الخاصة بالدولة
الخطوة 2: أرقام التحقق (الحرفان التاليان)
89= مجموع تحقق محسوب- هذه الأرقام تتحقق من صحة رقم IBAN بالكامل باستخدام MOD 97
الخطوة 3: رمز البنك (يختلف حسب الدولة)
37040044في IBANs الألمانية = معرف البنك المكون من 8 أرقام- الدول المختلفة تستخدم أطوال مختلفة (المملكة المتحدة تستخدم 4 أحرف)
الخطوة 4: رقم الحساب (الأحرف المتبقية)
0532013000= رقم الحساب الفعلي في ذلك البنك- الطول والتنسيق يعتمدان على الدولة
تنظم الدول المختلفة جزء BBAN بشكل مختلف. تتضمن IBANs المملكة المتحدة رمز فرع مكون من 6 أرقام بين رمز البنك ورقم الحساب. تجمع IBANs الفرنسية رمز البنك، ورمز الفرع، ورقم الحساب مع مفتاح تحقق. فهم هذه الاختلافات أمر حاسم عند معالجة IBANs برمجيًا.
أخطاء التحقق الشائعة من IBAN وكيفية إصلاحها
عند تنفيذ التحقق من IBAN، ستواجه هذه المشكلات بشكل متكرر:
خطأ "أرقام التحقق غير صالحة"
السبب: حساب MOD 97 لا يساوي 1. إما أن أرقام التحقق خاطئة، أو هناك خطأ في مكان آخر في IBAN.
الحل: أعد التحقق مرة أخرى بعد تصحيح أي أخطاء مطبعية. حتى حرف واحد خاطئ في أي مكان في IBAN يسبب فشل رقم التحقق. هذا مصمم بهذه الطريقة - لاكتشاف أخطاء إدخال البيانات.
خطأ "الطول غير الصحيح للدولة"
السبب: IBAN يحتوي على عدد زائد أو ناقص من الأحرف لرمز الدولة.
الحل: تحقق من أن رمز الدولة يطابق الدولة المقصودة. IBANs الألمانية دائمًا 22 حرفًا، IBANs المملكة المتحدة 22، الفرنسية 27. الأحرف المفقودة أو الزائدة تشير إلى القطع أو البيانات غير الصحيحة.
خطأ "أحرف غير صالحة"
السبب: أحرف لا ينبغي أن تظهر في هذا الموضع - مثل الحروف حيث يُسمح فقط بالأرقام.
الحل: تحقق من التنسيق الخاص بالدولة. على سبيل المثال، IBANs الألمانية رقمية تمامًا بعد رمز الدولة وأرقام التحقق، بينما تتضمن IBANs المملكة المتحدة 4 حروف لرمز البنك.
خطأ "رمز دولة غير مدعوم"
السبب: الحرفان الأولان ليسا رمز دولة معترف به، أو غير مدعومين من قبل أداة التحقق الخاصة بك.
الحل: تحقق من إملاء رمز الدولة. الأخطاء الشائعة تشمل استخدام UK بدلاً من GB، أو EN بدلاً من رموز الدول. هذه الأداة تدعم 10 دول أوروبية؛ يجب على أدوات التحقق الإنتاجية دعم جميع دول سجل SWIFT.
التنسيق مقابل وجود الحساب
تمييز مهم: التحقق يؤكد أن 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 # نقل الأحرف الأربعة الأولى إلى النهاية
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 // نقل الأحرف الأربعة الأولى إلى النهاية
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')); // يولد 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')) # يولد IBAN بريطاني صالح
59المراجع والقراءة المتعمقة
- ISO 13616-1:2007 - المواصفة الرسمية لهيكل IBAN
- سجل SWIFT للـ IBAN - المصدر المعتمد لتنسيقات IBAN الخاصة بكل دولة
- ISO 7064:2003 - مواصفة خوارزمية رقم التحقق MOD 97
- المجلس الأوروبي للمدفوعات - SEPA - وثائق المنطقة الموحدة للمدفوعات بالورو
- البنك المركزي الأوروبي - أنظمة الدفع - معايير التكامل المصرفي الأوروبي
- بنك التسويات الدولية - أنظمة الدفع - معايير أنظمة الدفع الدولية
ابدأ اختبار أرقام الحسابات الدولية (IBAN)
هل تحتاج إلى بيانات اختبار لنظام الدفع الخاص بك؟ قم بإنشاء رقم حساب دولي (IBAN) صالح لأي دولة مدعومة أعلاه، أو الصق رقم حساب دولي موجود للتحقق من بنيته. يعمل الأداة بالكامل في متصفحك - لا توجد عمليات تسجيل، لا مفاتيح API، ولا يتم إرسال أي بيانات إلى الخوادم.
نصيحة سريعة: قم بإنشاء أرقام حسابات دولية من دول متعددة لاختبار الحالات الحدية. تتعامل أنظمة الدفع الحقيقية مع تنسيقات متنوعة، واختبار التنسيق الخاص ببلد واحد فقط هو مصدر شائع للأخطاء في الإنتاج.