القائمة

إنشاء رقم بطاقة ائتمان: أرقام اختبار تتوافق مع قواعد الشبكات

أداة إنشاء رقم بطاقة ائتمان تبني أرقاما بادئتها صحيحة ورقم تحقق سليم لاختبار نماذج الدفع. تعرف على تشريح الرقم وحدود بيانات البطاقات.

تاريخ النشر

  • بيانات اختبار
  • مدفوعات
  • التحقق

تنتج أداة إنشاء رقم بطاقة ائتمان أرقاما تستوفي القواعد البنيوية التي يفحصها نموذج الدفع، بحيث يمكن تشغيل تدفق دفع كامل دون أن تدخل بطاقة حقيقية في أي خطوة. والرقم ليس بيانات اعتماد، وليس مرتبطا بحساب، ولن يأذن بأي عملية، لكنه سيجتاز فحوص التنسيق وقواعد بادئة الجهة المصدرة ورقم التحقق التي يطبقها النموذج قبل أن يمرر أي شيء إلى الطبقة التالية.

يشرح هذا الدليل ما تعنيه أجزاء الرقم، ولماذا يوجد رقم التحقق وما لا يفعله، ولماذا يجب أن يتوافق رمز الأمان وتاريخ الانتهاء مع الرقم في سجل الاختبار، وأين تقف الحدود بين بيئة الاختبار وبيئة بيانات حامل البطاقة. وبحلول النهاية ستعرف ما ينبغي تأكيده في اختبار نموذج الدفع وما ينبغي إبعاده عن المستودع تماما.

ماذا تعني أجزاء رقم البطاقة؟

رقم البطاقة سلسلة أرقام ثابتة الطول تتكون من ثلاثة أجزاء. الأرقام الأولى تحدد الجهة المصدرة والشبكة، والأرقام الوسطى تحدد الحساب الفردي داخل تلك الجهة، والرقم الأخير قيمة تحقق محسوبة من بقية الأرقام. والطول الكلي يختلف بحسب الشبكة وبحسب نوع المنتج، والنموذج الذي يفترض طولا واحدا سيرفض مدخلات صحيحة تماما.

رقم تعريف الجهة المصدرة هو البادئة، وهو ما يسمح للنموذج بعرض الشعار الصحيح وتطبيق القواعد الصحيحة قبل إرسال الطلب. وبادئات الشبكات الرئيسية تشغل نطاقات رقمية متمايزة، وهذه النطاقات منشورة حتى يستطيع أي نظام توجيه رقم دون الاتصال بأحد. وعندما تحمل بادئة منشأة نطاقا من شبكة أخرى، فإما يرفض النموذج الرقم مباشرة وإما يسمي الشبكة خطأ في الواجهة.

القسم الأوسط هو الجزء الذي تخترعه الأداة. وفي السجل الصناعي لا يوجد حساب خلفه، وهذا هو المقصود بالضبط. أما في بطاقة حقيقية فهو يشير إلى حساب محدد لدى جهة محددة، ولهذا بالذات يجب ألا يظهر أبدا في ملف اختبار.

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

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

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

لماذا يوجد رقم التحقق وماذا يثبت؟

الرقم الأخير محسوب بوزن تراكمي على الأرقام السابقة له، وهي قاعدة تعرف باسم خوارزمية Luhn. والغرض منها التقاط أخطاء النسخ: فخانة واحدة مكتوبة خطأ، أو رقمين متجاورين انقلبا، سينتجان في الغالب رقما يفشل في الفحص. وهذا الفحص هو نفسه الذي يشرحه دليل التحقق في سياق بقية خوارزميات أرقام التحقق المستخدمة في الحسابات والباركود.

ما يثبته رقم التحقق محدود، وسوء فهم هذه النقطة ينتج عيوبا حقيقية. فهو يثبت أن الأرقام متسقة داخليا. وهو لا يثبت شيئا عن وجود الحساب، ولا عن كون البطاقة نشطة، ولا عن توفر الرصيد، ولا عن كون الرقم يخص أحدا. والنموذج الذي يعامل نجاح رقم التحقق كتحقق من أي شيء يتجاوز الحساب هو نموذج سيقبل كل رقم مكتوب خطأ لكنه سليم البنية.

وهذا هو سبب نفاسة الرقم المنشأ في الاختبار. فهو يحمل بالضبط الخصيصة التي يفحصها النموذج، أي الاتساق الداخلي، ولا يحمل أيا من الخصائص التي لا يستطيع النموذج فحصها. والفجوة بين المجموعتين هي المكان الذي تعيش فيه معظم أخطاء نماذج الدفع.

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

ويستحق الترتيب الذي يفحص به النموذج التتبع. فبعض النماذج تفحص رقم التحقق في المتصفح أولا، وبعضها تفحص البادئة أولا، وبعضها لا تفحص شيئا حتى يضغط المستخدم زر الدفع. وترتيب الفحوص يحدد أي رسالة خطأ يراها المستخدم في أي حالة، وهو ترتيب يستحق حالة اختبار خاصة به لأن اختلافه عن الترتيب المتوقع ينتج رسائل مضللة.

لماذا يجب أن يتوافق رمز الأمان وتاريخ الانتهاء مع الرقم؟

سجل البطاقة مجموعة صغيرة من الحقول يقيد بعضها بعضا، ونموذج الدفع سيقبل تركيبات لا تصدرها أي جهة. فطول رمز الأمان يعتمد على الشبكة، لذلك فر رمز من ثلاثة أرقام ملحق بشبكة تستخدم أربعة أرقام تعارض صريح. وتاريخ الانتهاء يجب أن يقع في المستقبل حتى تقبله معظم التدفقات، ويجب أن يقع الشهر داخل شهور السنة الاثني عشر.

وكون البطاقة منتجا مدينا أو منتجا ائتمانيا يؤثر أيضا في السلوك في بعض التدفقات. فبعض أنظمة الدفع تعاملهما بالتساوي وبعضها تطبق قواعد مختلفة، ومجموعة اختبارات لا تجرب إلا نوعا واحدا من المنتجات لن تكتشف الفرق. والأداة القادرة على إنتاج النوعين، مع بادئات تطابق شبكاتهما، تمنحك التنوع الذي تكشف به هذه المسارات.

وبادئة الجهة المصدرة وعلامة الشبكة في الواجهة بينهما العلاقة نفسها. فإذا عرض النموذج اسم شبكة بينما تنتمي البادئة إلى شبكة أخرى، كان التعارض حالة اختبار قائمة بذاتها، وهو عيب قلما يقع فيه مختبر يدوي لأنه يكتب الأرقام التي يحفظها.

ولا يقف التوافق عند الحقول الظاهرة في النموذج. فبعض تدفقات الدفع تطلب عنوان الفوترة وتقارنه برقم البطاقة، وتلك المقارنة هي التي تجعل عنوانا متسقا شرطا لنجاح الاختبار، وهو ما يجعل أداة العنوان جزءا من مجموعة الاختبار نفسها لا إضافة إليها.

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

هل بطاقات الاختبار الرسمية أفضل من المنشأة؟

ينشر مزودو الدفع أرقام بطاقات اختبار لبيئاتهم التجريبية، وهذه الأرقام هي الخيار الصحيح لغرض واحد محدد: تشغيل سلوك المزود نفسه. فر رقم اختبار منشور مرتبط بنتائج موثقة، مثل عملية ناجحة أو عملية مرفوضة أو رمز خطأ محدد، وإعادة إنتاج تلك النتائج تعتمد على استخدام ذلك الرقم بعينه.

والأرقام المنشأة تخدم غرضا مختلفا. فهي مخصصة للأجزاء التي تملكها أنت: التحقق في العميل، وكشف البادئة، والتنسيق، ورسائل الخطأ، والتخزين، ومعالجة الأطوال غير المعتادة. والبيئة التجريبية لن يكون لها نتيجة موثقة لرقم لم تره من قبل، لذلك فالأرقام المنشأة مخصصة لكل ما يحدث قبل أن يغادر الطلب تطبيقك.

والمنهجان يجتمعان جيدا. استخدم الأرقام المنشأة للمصفوفة العريضة من حالات التحقق، ومجموعة صغيرة من أرقام المزود المنشورة لاختبارات التكامل القليلة التي تؤكد على استجابات المزود. وكلما كان الفصل واضحا بين المجموعتين قل الالتباس عند مراجعة سبب فشل اختبار بعينه.

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

وثمة خصيصة أخرى تستحق التصميم لها: تاريخ انتهاء لا يقدم أبدا. فالملف الذي يحمل تاريخا مثبتا سيشير يوما إلى بطاقة انتهت الشهر الماضي، ويبدأ الاختبار بالفشل لسبب لا علاقة له بالتغيير قيد المراجعة. والأداة التي تحسب الانتهاء بالنسبة إلى التاريخ الحالي تبقي الملف صالحا إلى أجل غير مسمى، وتزيل صنفا كاملا من الأعطال المربكة من المجموعة.

ماذا تعني معايير أمن بيانات المدفوعات لشركة لا تملك بطاقات حقيقية؟

معيار أمن بيانات صناعة البطاقات يحكم طريقة تخزين بيانات حامل البطاقة ومعالجتها ونقلها. وقاعدته الجوهرية سهلة الصياغة وسهلة الاستهانة بها: يجب ألا تحتوي بيئة الاختبار على أرقام بطاقات حقيقية. لا في ملف ثابت، ولا في سكربت بذرة، ولا في تعليق، ولا في سجل.

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

وبالنسبة إلى فريق لا يملك بطاقات حقيقية، يصبح الالتزام أبسط نسبيا. فإذا كان كل رقم في البيئة صناعيا ولم تستطع أي بطاقة حقيقية أن تصل، أجاب سؤال النطاق عن نفسه إلى حد كبير. والانضباط المطلوب هو الحفاظ على ذلك الوضع: ألا تلصق رقما حقيقيا في تقرير عيب، وألا تلتقط صورة لصفحة دفع مباشرة، وألا تستورد مستخرجا إنتاجيا لتجعل بيانات الاختبار تبدو واقعية.

والنمط التنظيمي الذي يحدث فعلا هو النية لا الإهمال. فشخص يحتاج إلى إعادة إنتاج عيب إنتاجي، فيستورد شريحة من الإنتاج ليفعل ذلك، ويترك الشريحة في مكانها بعد انتهاء المهمة. والقاعدة التي تنص على أن بيانات الاختبار تولد لا تنسخ سهلة الإمساك بها ما دامت لم ترتخ يوما.

ويستحق الأمر مراجعة عند كل إعداد بيئة جديدة. فالنسخ من الإنتاج إلى بيئة اختبار هو اللحظة التي تدخل فيها البيانات الحقيقية، وهي اللحظة التي ينبغي أن يمر بها إجراء موثق لا قرار فردي. وكل بيئة أنشئت دون ذلك الإجراء هي بيئة يحتمل أن تخالف القاعدة دون أن يدري أحد.

أي حالات تستحق الكتابة في اختبار نموذج الدفع؟

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

واختبر رقم التحقق صريحا بأخذ رقم صحيح وتغيير خانة واحدة في منتصفه، ثم أكد أن النموذج يرفضه. وهذه الحالة قيمة لأنها تميز بين النماذج التي تشغل الحساب فعلا والنماذج التي تعد الأرقام فقط، والنوع الثاني أكثر شيوعا مما ينبغي أن يكون، كما يشرح دليل بطاقات الاختبار على هذا الموقع.

واختبر التنسيق واللصق. فالمستخدمون يلصقون أرقاما تحمل مسافات وتحمل شرطات وتحمل مسافة في البداية أو في النهاية، والحقل الذي يخزن هذه الأحرف كما هي سيفشل في الطبقات التالية. واختبر حقل رمز الأمان مقابل الطول المتوقع للشبكة، واختبر تاريخ انتهاء للشهر الماضي وللشهر الحالي، لأن الحد الفاصل بين الاثنين هو مكان أخطاء الفرق بواحد.

ثم اختبر ما يحدث بعد الفشل. فالمستخدم الذي كتب خانة خطأ ينبغي أن يستطيع تصحيحها دون إعادة إدخال النموذج كله، وينبغي ألا تمسح رسالة الخطأ بقية الحقول. وهذا السلوك قلما يؤكد عليه وكثيرا ما يكون مكسورا، وهو من الحالات القليلة التي يلاحظها المستخدم فورا ويكتشفها الاختبار متأخرا.

وأضف الحالات التي تتعلق بالحفظ بعد النجاح. فحقل يبقي الرقم كاملا في المتصفح بعد الإرسال، أو يظهره في سجل التصحيح، أو يمرره في معامل عنوان، كلها عيوب تظهر في الاختبار ولا تظهر في الاستخدام العادي. وحالات هذا الصنف أدق من حالات الإدخال لأنها لا تحتاج مستخدما لينتبه إليها.

ما هو رقم البطاقة المنشأ وما ليس هو؟

رقم البطاقة المنشأ هو بيانات اختبار صناعية. له بادئة سليمة البنية، وطول صحيح لشبكته، ورقم تحقق سليم، وهو مصمم لتشغيل البرمجيات. وهو ليس بيانات اعتماد دفع، ولا تصدره أي جهة أو شبكة، ولا يرتبط بأي حساب، ولا يجوز استخدامه لإتمام عملية شراء، ولا لتفويض معاملة، ولا لتجاوز أي تحقق حقيقي.

ولا يجوز استخدامه للحصول على سلع أو خدمات، ولا لاختبار نظام دفع مباشر بقصد تنفيذ معاملة، ولا لانتحال شخصية حامل بطاقة، ولا لتجاوز أي ضابط موجود لحماية حسابات حقيقية. وهو موجود لاختبار نماذجك ومحللاتك ومنطق التحقق لديك، ولا شيء غير ذلك.

وعندما يجتمع رقم البطاقة مع اسم وعنوان وتاريخ ميلاد في سجل واحد، فالحديث عن سجل صناعي بالكامل. وبنية صحيحة واتساق داخلي هما الخصيصتان اللتان تجعلانه نافعا، وهما ليستا ادعاء عن أي شيء حقيقي، ولا ينبغي تقديم أي جزء من سجل كهذا كأنه تفاصيل مالية تخص أحدا.

وكل رقم ينتج بهذه الطريقة ينتمي إلى اختبار البرمجيات وحده، ولا يجوز استخدامه لانتحال هوية أي شخص، ولا للحصول على أي خدمة، ولا لتجاوز أي خطوة تحقق أو ضابط حماية.

تابع القراءة

أدوات شائعة ومقالات استخدام