أرقام آيبان تجريبية للمطورين وفرق ضمان الجودة

ما الذي تفحصه أدوات التحقق فعلاً، والأخطاء التي تُفسد معالجة أرقام IBAN، وكيف تُدخل أرقام آيبان تجريبية في خط CI لديك.

آخر تحديث:

أي كود يستقبل أرقام IBAN أو يخزنها أو يرسلها يحتاج إلى بيانات اختبار: التحقق من النماذج، ومسارات تسجيل العملاء الجدد، والبيانات الثابتة لقواعد البيانات (fixtures)، وتكاملات الدفع، واختبارات الحمل. ولا مكان لأرقام آيبان عملاء حقيقيين في بيئة الاختبار، كما أن الأرقام المكتوبة يدوياً نادراً ما تحمل رقمي تحقق صحيحين. والآيبان التجريبي، الذي يُسمى أحياناً آيبان وهمياً أو صورياً، يحل المشكلتين معاً: فهو يجتاز التحقق من البنية، ولم يُصدره أي بنك قط.

ما الذي تفحصه أدوات التحقق

يجري التحقق من الآيبان على طبقات. كل طبقة تكشف مشكلات مختلفة، والآيبان التجريبي لا يجتاز إلا بعضها.

الفحص ما الذي يتحقق منه آيبان تجريبي مولَّد
الخانات حروف وأرقام فقط بعد حذف المسافات يجتاز
الدولة الحرفان الأولان لدولة تستخدم الآيبان يجتاز
الطول الطول يطابق تلك الدولة، مثلاً 22 لألمانيا يجتاز
النمط في كل موضع من BBAN نوع الخانة الصحيح (رقم أو حرف) يجتاز
رقما التحقق باقي MOD-97 يساوي 1 يجتاز
أرقام التحقق الوطنية قواعد الدولة داخل BBAN، مثل CIN الإيطالي أو clé RIB الفرنسي يجتاز في 27 دولة نحسب خوارزميتها الرسمية، وفي غيرها تكون عشوائية وقد تفشل
دليل البنوك رمز البنك موجود يجتاز في الوضع الواقعي، وهو الافتراضي، في 84 دولة لها رموز بنوك حقيقية؛ ويفشل عادةً في غير ذلك
الاستعلام عن الحساب الحساب موجود والاسم مطابق يفشل

الفحصان الأخيران يحتاجان إلى بيانات من البنوك. ففي المملكة المتحدة تقارن خدمة تأكيد المستفيد (Confirmation of Payee) اسم صاحب الحساب بالاسم الذي أدخله الدافع، وفي منطقة اليورو تفعل خدمة التحقق من المستفيد (Verification of Payee) الشيء نفسه قبل التحويل. ولا يستطيع آيبان عشوائي اجتياز هذين الفحصين، ولا ينبغي له ذلك. ويشرح مقال أرقام التحقق الوطنية في الآيبان الطبقة الوطنية دولةً دولة.

الفحوص الخمسة الأولى، ومعها أرقام التحقق الوطنية حيثما كانت القاعدة معروفة، لا تحتاج إلى بيانات خارجية. ويُجريها مدقق IBAN لدينا داخل متصفحك ويبيّن الفحص الذي فشل. أما مكتبتنا مفتوحة المصدر لـ JavaScript ‏iban-check فتُجري الفحوص الخمسة كلها وفق سجل IBAN لدى SWIFT وتُرجع رمز خطأ يبيّن الفحص الذي فشل. الجزائر والمغرب ليستا في السجل، لذا ترفض المكتبة أرقام الآيبان الخاصة بهما. وهي متاحة على npm باسم iban-check.

أخطاء تُفسد التعامل مع الآيبان

هذه هي الأخطاء البرمجية التي تتكرر مرة بعد مرة في كود الآيبان:

  • طول واحد لكل الدول. يتكون الآيبان الألماني من 22 خانة، لكن النرويجي من 15 والمالطي من 31. تحقق من الطول لكل دولة على حدة بدلاً من رقم ثابت واحد.
  • أرقام فقط بعد رمز الدولة. أرقام الآيبان الهولندية والبريطانية وغيرها كثير تحتوي على حروف في BBAN (NL91ABNA0417164300). والتعبير النمطي (regex) الذي لا يسمح إلا بالأرقام يرفضها.
  • تخزين الصيغة المطبوعة. خزّن الآيبان بالصيغة الإلكترونية، دون مسافات وبحروف كبيرة، ولا تضف المسافات إلا عند العرض.
  • معاملة الآيبان كعدد. فهو يحتوي على حروف، وقد يبدأ BBAN فيه بأصفار. خزّنه كسلسلة نصية (string).
  • تجاوز سعة الأعداد الصحيحة في MOD-97. في كل الدول باستثناء النرويج وبلجيكا، يتجاوز العدد الناتج عن التحويل ما يتسع له عدد صحيح بحجم 64 بت (نحو 19 رقماً)، فالعدد الناتج من آيبان ألماني مثلاً يتكون من 24 رقماً. استخدم حساباً بدقة غير محدودة، أو طريقة الباقي خطوة بخطوة المشروحة في كيف يعمل رقما التحقق في الآيبان.
  • محارف غير مرئية عند النسخ واللصق. يلصق المستخدمون أرقام الآيبان مع مسافات غير قابلة للكسر أو علامات جدولة أو فواصل أسطر. احذف كل أنواع المسافات البيضاء، لا المسافة العادية وحدها.
  • إدخال بحروف صغيرة. يكتب الناس de89.... حوّل النص إلى حروف كبيرة قبل التحقق.

أي آيبان تجريبي تستخدم

أرقام الآيبان التجريبية العشوائية تناسب معظم الاختبارات: التحقق من النماذج، والبيانات الثابتة (fixtures)، وبيانات التهيئة (seed data)، واختبارات الحمل، ولقطات الشاشة. استخدم عدة دول وليس دولتك وحدها، حتى تُختبر معالجة الطول والنمط؛ فالصيغ الطويلة مثل مالطا (31) والقصيرة مثل النرويج (15) حالات حدّية جيدة. ويعمل المولد افتراضياً في الوضع الواقعي: فهو يستخدم الأرقام فقط، ويضع حيثما أمكن رمز بنك حقيقي مع رقم حساب عشوائي، فيجد الكود الذي يبحث عن البنك هذا البنك. ومثل هذا الآيبان لم يُصدره أي بنك هو الآخر، لكنه قد يطابق حساباً حقيقياً بالصدفة. أوقف خيار «واقعية» لتحصل على أرقام آيبان عشوائية بالكامل: يصبح رمز البنك عشوائياً أيضاً، وهذا يفيد في اختبار بنك غير معروف، وقد تظهر حروف حيث تسمح الصيغة.

وكثيراً ما ينشر مزودو خدمات الدفع أرقام آيبان تجريبية خاصة بهم، تؤدي إلى نتائج محددة في بيئتهم التجريبية (sandbox)، مثل خصم ناجح أو خصم فاشل. وعندما تختبر مسار مزود ما من البداية إلى النهاية، استخدم أرقام الآيبان الواردة في توثيق ذلك المزود.

لا تستخدم أبداً آيبان شخص حقيقي في الاختبارات أو العروض التوضيحية أو التوثيق، ولا ترسل أبداً مالاً إلى آيبان مولَّد. احتمال أن يطابق آيبان عشوائي حساباً حقيقياً ضئيل جداً، لكنه ليس صفراً.

أرقام تجريبية في خط CI

يعرض المولد آيبان واحداً مع شرح أجزائه. ويولّد خيار «توليد قائمة» فيه من 5 إلى 100 آيبان لدولة واحدة دفعة واحدة، لتنسخها أو تنزّلها بصيغة CSV أو JSON أو SQL أو نص عادي، مع عمود لكل جزء. أما للاختبارات الآلية:

  • تعيد واجهة REST API ما يصل إلى 100 آيبان صالح في كل طلب لأي دولة مدعومة، وتتحقق من أرقام الآيبان أيضاً. وهي تتطلب مفتاح API؛ راجع توثيق API.
  • يتيح خادم MCP العام لوكلاء الذكاء الاصطناعي ومساعدي البرمجة توليد أرقام آيبان تجريبية والتحقق منها دون مفتاح.
  • التنزيل الذي يقف خلف «توليد قائمة» رابط عادي لا يحتاج إلى مفتاح، فيستطيع السكربت جلب ملف بيانات ثابتة مباشرة (30 تنزيلاً في الدقيقة).
  • للاختبارات التي يجب أن تعمل دون اتصال بالإنترنت، ولّد مجموعة من أرقام الآيبان مرة واحدة واحفظها في المستودع (commit) كبيانات ثابتة (fixtures).
# 50 Dutch IBANs as CSV, no key needed
curl -o fixtures.csv "https://generaterandomiban.com/export/nl?format=csv&count=50"

# 5 IBANs from the API, with a key
curl -H "X-API-Key: YOUR_KEY" \
  "https://generaterandomiban.com/api/v1/generate/NL?count=5"

المصادر

تحتاج إلى رقم آيبان تجريبي؟

ولّد رقم IBAN صالحاً لأي من 91 دولة، وانسخه بالصيغة التي تحتاجها، وتعرّف على معنى كل جزء فيه.

افتح المولد