تبدو أرقام البطاقات متبادلة للوهلة الأولى، لكن تنسيق رقم البطاقة ليس شكلا واحدا متكررا؛ فالطول يتغير مع الشبكة، والأرقام الأولى تحمل معنى، والرقم الأخير حساب لا تخصيص. ومعرفة كيف تتركب الأجزاء هي ما يمكنك من التمييز بين رقم محكم البناء ورقم يبدو معقولا فقط، وهي تفسر معظم سلوكيات التحقق الغريبة التي تلقاها في نماذج الدفع.
تقسم المقاطع التالية الرقم إلى أجزائه، وتشرح كيف تقرأ رقما مجمعا كما يطبع، وتنتهي بالتفاصيل العملية التي تحدد ما إذا كان تعاملك مع المدخلات سينجو من لقاء المستخدمين الحقيقيين.
الأجزاء الثلاثة لرقم البطاقة
كل رقم بطاقة هو تسلسل لثلاثة حقول، مكتوبة دون فواصل عند حفظها:
- بادئة المصدر. كانت تسمى تاريخيا رقم تعريف البنك، وتعرف الآن برقم تعريف المصدر، وهي الكتلة الأولى التي تخبر نظام التوجيه بأي شبكة تنتمي إليها البطاقة، وبأي مؤسسة أصدرتها في معظم الحالات. وليست بعرض ثابت؛ فالصيغ الأقصر والأطول كلتاهما مستخدمة، والطول مسجل لا مخمن.
- أرقام الحساب. هذا هو الجزء الذي تخصصه الجهة المصدرة. وشرطه الوحيد أن يكون فريدا داخل نطاق تلك الجهة. وهو ليس رقم عميل يمكنك فك شفرته، ولا توجد علاقة بين رقمي حساب متتاليين.
- رقم التحقق. رقم واحد محسوب من كل الأرقام الأخرى بـخوارزمية Luhn. وهو موجود لكشف أخطاء الكتابة لا لشيء آخر.
ومقروءة معا، الصورة بسيطة: مقدمة الرقم تقول من أين أتت البطاقة، ووسطه تخصيص حر، ونهايته حارس ضد الأخطاء المطبعية.
لماذا تختلف أطوال أرقام البطاقات؟
لم يوحد الطول على قيمة واحدة لأن ترقيم البطاقات نشأ من عدة أنظمة وطنية وصناعية ثم نسق بدل أن يعاد كتابته. ويضع المعيار الدولي المنظم للتنسيق حدا أعلى هو تسعة عشر رقما، ويترك الطول الدقيق لكل شبكة ومنتج.
وعمليا تلقى مجموعة صغيرة من الأطوال. ستة عشر رقما هي الأكثر شيوعا وهي التي يتخيلها الناس عند سماع كلمة بطاقة. وخمسة عشر رقما هي المعيار في بعض الشبكات. وتوجد أيضا صيغ من ثلاثة عشر وأربعة عشر رقما، في منتجات أقدم أو إقليمية، وتستخدم بعض الشبكات ترتيبا أطول لأنواع بطاقات معينة.
والنتيجة المهمة للتحقق أن القاعدة المكتوبة على أساس ستة عشر رقما بالضبط قاعدة خاطئة. فهي ترفض بطاقات حقيقية، وترفض أيضا بيانات اختبار سليمة تماما. والقاعدة الصحيحة تقبل نطاقا، وتفحص البادئة مقابل توقعات تلك الشبكة، ثم تشغل مجموع التحقق فقط بعد ذلك.
ماذا يخبرك الرقم الأول؟
الرقم الأول علامة على القطاع الصناعي لا اسم شبكة، والتخطيط منشور. وهو يضيق نطاق نوع الجهة المصدرة قبل أن يحدد بقية البادئة البرنامج المحدد.
| الرقم الأول | القطاع |
|---|---|
| 1 و 2 | شركات الطيران |
| 3 | السفر والترفيه |
| 4 و 5 | الخدمات المصرفية والمالية |
| 6 | التجارة والخدمات المصرفية |
| 7 | النفط |
| 8 | الاتصالات |
| 9 | التخصيص الوطني |
الرقم الأول وحده لا يحدد شبكة أبدا. فنطاقات البطاقات تقع داخل هذه القطاعات: الرقم أربعة ينتمي إلى القطاع المصرفي، ونطاق داخل هذا القطاع يرتبط بشبكة ما، بينما ينتمي نطاق آخر في القطاع نفسه إلى شبكة أخرى. ولهذا يحتاج كشف العلامة التجارية إلى أكثر من رقم واحد، ولهذا يخطئ الكاشف المبني على الحرف الأول وحده في نسبة مفاجئة من المدخلات.
كيف تقرأ رقم بطاقة مجمعا؟
على البطاقة وفي معظم الواجهات تظهر الأرقام في مجموعات، والتجميع يتبع الشبكة لا قاعدة عالمية. وأربع مجموعات من أربعة هي الترتيب المألوف لبطاقة من ستة عشر رقما؛ أما بعض الشبكات فتعرض تقليديا بمجموعات غير متساوية تطابق أرقامها الخمسة عشر. وتفصل بعض الواجهات المجموعة الأولى لتظهر بادئة المصدر، وتترك أخرى الرقم متصلا.
بالنسبة للقارئ، التجميع وسيلة تذكر. وبالنسبة للمطور، إنه عرض فقط، وهذا التمييز يسبب أخطاء حقيقية: فالحقل الذي يرفض رقما ملصوقا لأن اللصق احتوى مسافات يرفض التنسيق الذي تطبع به البطاقة نفسها. احفظ الأرقام، واعرض المجموعات، وحول بين الصيغتين عند الأطراف.
التنسيق ليس تحققا
من المغري أن تعامل شكلا معروفا كدليل أصالة. وهو ليس كذلك. فأي بادئة يمكن أن تدمج مع أي أرقام وسطى، ثم يحسب رقم ختامي يطابقها، فتبدو السلسلة تماما كبطاقة مألوفة وهي صناعية بالكامل.
كل ما في هذه المقالة يصف البنية. ولا يقول شيئا عن وجود حساب، ولا عن صلاحية بطاقة، ولا عن إتمام عملية دفع، لأن أيا من هذه الأسئلة لا يمكن الإجابة عنه بفحص الأرقام. وكل الأرقام التي تنتجها الأداة على هذا الموقع تقع في هذه الفئة بالضبط: صحيحة الشكل، ولم تصدر قط.
للمطورين: تنظيف المدخلات دون فقدان معلومة
الحقيقة المزعجة بشأن حقول أرقام البطاقات أن المستخدمين يكتبونها بطرق غير متوقعة. يلصقونها من بريد إلكتروني مع مسافات، ويدرجون محرفا زائدا من حقل سابق، ويكتبون شرطة حيث يجب أن تكون مسافة. وتنظيف ذلك ضروري، لكن إنجازه بإهمال هو الطريق إلى تدمير مدخلات سليمة.
التسلسل القابل للعمل يبدو هكذا. اقطع الأطراف. وأزل محارف الفصل التي تعتزم تحملها لا كل ما ليس رقما، حتى ينتج الحرف خطأ واضحا بدل أن يحذف بصمت. وأبق الناتج سلسلة نصية طوال عمره، لأن النوع الرقمي سيسقط صفرا أوليا ويغير معنى القيمة. وقارن الطول المنظف بنطاق الشبكة الخاصة بالبادئة المكتشفة. وشغل مجموع التحقق أخيرا.
ثم قرر كيف ستعرض ما استقبلته. فالحقل الذي يعيد التنسيق أثناء الكتابة لطيف على لوحة مفاتيح الحاسوب وقد يكون عدائيا على الهاتف، حيث يقفز المؤشر ويتصرف الرجوع بغرابة. وإذا جمعت الأرقام أثناء الكتابة، فاختبر حالة تصحيح خطأ في وسط السلسلة لا في نهايتها فقط.
وأبق رسائل الفشل منفصلة أيضا. فالقصر عن الحد، والمحارف غير المدعومة، والبادئة المجهولة، وفشل مجموع التحقق مشكلات أربع مختلفة، والنموذج الذي يبلغ عنها كلها برسالة واحدة يجعل التصحيح بطيئا على المستخدم وعليك.
فحص رقم في أداة البطاقات
إذا احتجت رقما بشكل معين، أي شبكة واحدة وطول واحد وبادئة واحدة، فإن أداة إنشاء رقم البطاقة تنتجها دون حساب وتدعك تختار الشبكة صراحة أو تترك الاختيار عشوائيا. ووضع الإكمال مفيد عندما يكون لديك جزء من قيمة وتريد ملء الأرقام المجهولة بما يتسق مع الباقي.
وهناك صفحتان مرتبطتان تتعمقان أكثر. فـمقارنة الشبكات تسرد النطاقات المنشورة والأطوال المرتبطة بها، وشرح التحقق في الكود يحول نصيحة الترتيب أعلاه إلى تسلسل ملموس من الفحوص.
الخطوات التالية
دقق نموذجا قائما مقابل الترتيب الموصوف هنا، أي الطول ثم المحارف ثم البادئة ثم مجموع التحقق، وتأكد أن كل فشل ينتج رسالته الخاصة. ثم أنشئ مجموعة صغيرة من الأرقام تمتد عمدا على أكثر من طول واحد، ليجد من يعدل قاعدة التحقق لاحقا ما يختبر به تغييره.