เครื่องมือสร้างหมายเลขบัตรเครดิตคือเครื่องมือที่ให้ชุดตัวเลขสำหรับทดสอบฟอร์มชำระเงินโดยที่ตัวเลขนั้นไม่ผูกกับบัญชีหรือบัตรของผู้ใด ความต้องการนี้เกิดขึ้นเพราะการทดสอบระบบชำระเงินด้วยบัตรจริงเป็นสิ่งที่ทำไม่ได้ ทั้งผิดข้อกำหนดของเครือข่ายบัตรและเสี่ยงเกินกว่าประโยชน์ที่ได้ ทีมจึงต้องมีชุดตัวเลขที่ระบบยอมรับตามกฎของตัวเอง แต่ไม่สามารถใช้เรียกเก็บเงินได้จริง บทความนี้จะอธิบายว่าหมายเลขบัตรสำหรับทดสอบต่างจากหมายเลขบัตรจริงอย่างไร โครงสร้างคำนำหน้าหมายเลขบอกอะไรได้บ้าง หลักตรวจสอบท้ายหมายเลขทำงานอย่างไร ทำไมรหัสความปลอดภัยและวันหมดอายุต้องสอดคล้องกับหมายเลขบัตร ขอบเขตของข้อกำหนดด้านความปลอดภัยในการชำระเงิน และรายการที่ควรตรวจในฟอร์มชำระเงิน เมื่ออ่านจบคุณจะออกแบบชุดทดสอบการชำระเงินได้ครบขึ้น และรู้ว่าข้อมูลประเภทนี้มีเส้นแบ่งอยู่ตรงไหน
หมายเลขบัตรสำหรับทดสอบต่างจากหมายเลขบัตรจริงอย่างไร?
ความต่างข้อแรกคือที่มา หมายเลขบัตรจริงออกโดยผู้ออกบัตรและผูกกับบัญชีที่มีผู้ถือบัตรเป็นเจ้าของ ส่วนหมายเลขสำหรับทดสอบถูกสร้างขึ้นให้ผ่านกฎการตรวจรูปแบบเท่านั้น ไม่มีบัญชีรองรับอยู่เบื้องหลัง และไม่มีใครออกให้
ความต่างข้อที่สองคือผลลัพธ์เมื่อนำไปใช้ หมายเลขทดสอบจะถูกปฏิเสธเมื่อพยายามเรียกเก็บเงิน ทั้งเพราะไม่มีบัญชีรองรับ และเพราะผู้ให้บริการชำระเงินส่วนใหญ่กำหนดช่วงหมายเลขที่สงวนไว้สำหรับงานทดสอบโดยเฉพาะ หากมีหมายเลขทดสอบหลุดเข้าไปในระบบจริง ผลลัพธ์ที่ได้คือรายการที่ถูกปฏิเสธ ไม่ใช่เงินที่ถูกเรียกเก็บ
ความต่างข้อที่สามคือหน้าที่ หมายเลขบัตรจริงถูกออกแบบมาเพื่อการชำระเงินเป็นหลัก การตรวจสอบรูปแบบเป็นเพียงด่านแรก ส่วนหมายเลขทดสอบถูกออกแบบมาเพื่อทดสอบด่านตรวจเหล่านั้นโดยเฉพาะ จึงเลือกได้ว่าจะให้ผ่านหรือไม่ผ่านในจุดใด
สิ่งที่ต้องเข้าใจให้ตรงกันคือการตรวจสอบว่าหมายเลขบัตรถูกต้องตามรูปแบบเป็นเพียงการยืนยันว่าตัวเลขนั้นเป็นไปได้ ไม่ได้ยืนยันว่ามีบัตรอยู่จริงหรือบัตรนั้นใช้งานได้ การทดสอบที่ผ่านการตรวจรูปแบบจึงไม่ได้แปลว่าระบบเรียกเก็บเงินได้จริง
คำนำหน้าหมายเลขบัตรบอกอะไรได้บ้าง?
หมายเลขบัตรขึ้นต้นด้วยตัวเลขที่บอกผู้ออกบัตรและเครือข่ายของบัตร ชุดตัวเลขช่วงต้นนี้มีชื่อเรียกรวมกันว่าหมายเลขประจำตัวผู้ออกบัตร และมีบทบาทในการบอกระบบว่ากำลังจัดการบัตรของเครือข่ายใด โดยไม่ต้องถามผู้ใช้
เครือข่ายบัตรแต่ละแห่งมีช่วงหมายเลขของตัวเอง และมีหลักที่หลากหลายไม่เท่ากัน หมายเลขบัตรรวมมีความยาวสิบสามถึงสิบเก้าหลัก บัตรเครือข่ายหนึ่งมักยาวสิบหกหลัก แต่อีกเครือข่ายหนึ่งอาจมีทั้งแบบสิบสามหลักและสิบเก้าหลัก ระบบที่กำหนดความยาวตายตัวไว้เพียงค่าจึงปฏิเสธบัตรที่ถูกต้องจำนวนมาก
ช่วงหมายเลขยังใช้ตรวจว่าช่องที่ผู้ใช้กรอกสอดคล้องกับเครือข่ายที่เลือกหรือไม่ ถ้าผู้ใช้เลือกเครือข่ายหนึ่งแต่หมายเลขที่กรอกเป็นของอีกเครือข่าย ระบบที่ดีควรแจ้งเตือนทันที เพราะเป็นความผิดพลาดที่เกิดจากความเข้าใจผิดของผู้ใช้ ไม่ใช่การโจมตี
รายละเอียดเรื่องช่วงหมายเลขและความยาวของแต่ละเครือข่ายมีอธิบายไว้ในบทความรูปแบบหมายเลขบัตร ซึ่งรวบรวมหลักการที่ใช้ได้กับทุกเครือข่าย พร้อมชี้จุดที่ระบบมักกำหนดกฎผิดจนปฏิเสธบัตรจริง
หลักตรวจสอบท้ายหมายเลขบัตรทำงานอย่างไร?
หมายเลขบัตรใบสุดท้ายคือหลักตรวจสอบที่คำนวณจากหลักอื่นทั้งหมด หลักนี้ทำหน้าที่จับความผิดพลาดจากการพิมพ์ผิด เช่นการสลับตำแหน่งตัวเลขสองตัวที่อยู่ติดกัน หรือการพิมพ์ตัวเลขผิดหนึ่งตัว ความผิดพลาดประเภทนี้ผู้ใช้มองไม่เห็นด้วยตา แต่หลักตรวจสอบจับได้เกือบทั้งหมด
วิธีคำนวณที่ใช้กันทั่วไปเรียกว่าขั้นตอนการตรวจสอบตามชื่อของนักคณิตศาสตร์ผู้คิดวิธีนี้ โดยเริ่มจากหลักขวาสุดแล้วไล่ไปทางซ้าย สลับกันระหว่างการเก็บค่าตัวเลขไว้ตามเดิมและการคูณสอง เมื่อคูณสองแล้วได้ค่ามากกว่าสิบให้เอาสองหลักมาบวกกัน จากนั้นนำค่าทั้งหมดมาบวกกันและตรวจว่าผลรวมหารด้วยสิบลงตัวหรือไม่ ถ้าลงตัวหมายเลขนั้นผ่านการตรวจ
จุดที่ทีมมักเข้าใจผิดคือคิดว่าหลักตรวจสอบทำหน้าที่ตรวจความถูกต้องของบัตร ความจริงคือมันตรวจแค่ความสอดคล้องภายในของตัวเลขเท่านั้น หมายเลขที่ผ่านการตรวจอาจไม่มีบัตรอยู่จริง และหมายเลขที่มีบัตรอยู่จริงต้องผ่านการตรวจนี้เสมอ ความไม่สมมาตรนี้เองที่ทำให้หลักตรวจสอบมีประโยชน์กับงานทดสอบ
สำหรับงานทดสอบ หลักตรวจสอบคือเครื่องมือที่ช่วยให้สร้างชุดข้อมูลทั้งที่ควรผ่านและควรไม่ผ่านได้อย่างแม่นยำ โดยไม่ต้องพึ่งตัวอย่างจากภายนอก และช่วยให้ตรวจได้ว่าระบบของทีมใช้วิธีคำนวณถูกต้องตามมาตรฐานหรือไม่ รายละเอียดของวิธีคำนวณพร้อมกรณีขอบเขตอยู่ในบทความวิธีตรวจสอบหลักท้ายหมายเลขบัตร
ทำไมรหัสความปลอดภัยและวันหมดอายุต้องสอดคล้องกัน?
รหัสความปลอดภัยคือตัวเลขสั้นที่พิมพ์อยู่บนบัตร ใช้ยืนยันว่าผู้กรอกมีบัตรอยู่ในมือ ไม่ได้เป็นข้อมูลที่เก็บไว้ที่ฝั่งผู้ออกบัตรในลักษณะเดียวกับหมายเลขบัตร ความยาวของรหัสนี้แตกต่างกันตามเครือข่าย โดยเครือข่ายหนึ่งใช้สามหลักและอีกเครือข่ายหนึ่งใช้สี่หลัก
ความสอดคล้องที่ต้องมีคือจำนวนหลักของรหัสต้องตรงกับเครือข่ายที่เลือก ระบบที่บังคับให้กรอกสามหลักเสมอจะปฏิเสธบัตรบางเครือข่ายทั้งหมด และระบบที่รับสี่หลักเสมอจะยอมรับค่าที่ไม่ควรผ่านสำหรับบัตรเครือข่ายอื่น นี่คือกรณีทดสอบที่ตรงไปตรงมาแต่ถูกละเลยบ่อย
วันหมดอายุคือช่องที่มีรายละเอียดมากกว่าที่เห็น ระบบต้องตีความว่าบัตรใช้ได้จนถึงสิ้นเดือนที่ระบุ ไม่ใช่ต้นเดือน ถ้าตีความผิด ระบบจะปฏิเสธบัตรที่ยังใช้ได้ในเดือนสุดท้าย และจะยอมรับบัตรที่หมดอายุแล้วในกรณีกลับกัน
อีกจุดที่ควรทดสอบคือการจัดการเดือนที่ขึ้นต้นด้วยศูนย์ และปีที่ผู้ใช้กรอกเป็นสองหลักหรือสี่หลัก ทั้งสามรูปแบบพบได้จริงในอุปกรณ์และเบราว์เซอร์ที่ต่างกัน ระบบที่ยอมรับรูปแบบเดียวจะทำให้ผู้ใช้บางกลุ่มกรอกไม่ได้เลย รายละเอียดและกรณีขอบเขตอยู่ในบทความวันหมดอายุของบัตร และรหัสความปลอดภัยของบัตร
หมายเลขทดสอบอย่างเป็นทางการของผู้ให้บริการมีข้อดีอะไร?
ผู้ให้บริการชำระเงินรายใหญ่ทุกรายเผยแพร่ชุดหมายเลขสำหรับทดสอบของตัวเอง หมายเลขกลุ่มนี้มาจากช่วงที่สงวนไว้สำหรับงานทดสอบโดยเฉพาะ จึงรับประกันได้ว่าไม่มีบัญชีจริงอยู่เบื้องหลัง และถูกออกแบบมาให้กระตุ้นผลลัพธ์ที่ต้องการได้ด้วย เช่นบัตรที่ควรถูกปฏิเสธด้วยสาเหตุเรื่องวงเงินไม่พอ
ข้อดีที่สำคัญที่สุดคือการจำลองกรณีล้มเหลว บัตรทดสอบส่วนหนึ่งถูกกำหนดให้ถูกปฏิเสธเสมอ ระบบทดสอบจึงตรวจเส้นทางที่เกิดข้อผิดพลาดได้จริง ทั้งข้อความที่ผู้ใช้เห็น การบันทึกความล้มเหลว และการกู้คืนสถานะของคำสั่งซื้อ เส้นทางเหล่านี้ตรวจด้วยบัตรที่ผ่านตลอดไม่ได้
ข้อดีข้อที่สองคือความสอดคล้องกับเอกสารของผู้ให้บริการ เมื่อผลการทดสอบไม่ตรงกับที่คาด ทีมสามารถอ้างอิงเอกสารของผู้ให้บริการได้โดยตรง และแยกได้เร็วว่าปัญหาอยู่ที่การตั้งค่าบัญชีทดสอบหรืออยู่ที่โค้ด
ข้อจำกัดที่ต้องรู้คือหมายเลขเหล่านี้ใช้ได้กับสภาพแวดล้อมทดสอบของผู้ให้บริการนั้นเท่านั้น ไม่ใช่หมายเลขที่ใช้ได้กับทุกที่ และใช้ได้เฉพาะในบัญชีทดสอบ ไม่ใช่บัญชีจริง เอกสารชุดบัตรทดสอบของ Stripe ระบุทั้งหมายเลขและผลลัพธ์ที่ควรได้ และทีมที่ใช้ผู้ให้บริการรายอื่นควรหาเอกสารเทียบเคียงของรายนั้น บทความบัตรทดสอบของผู้ให้บริการ เปรียบเทียบภาพรวมของแต่ละเครือข่ายไว้ด้วย
ขอบเขตของข้อกำหนดความปลอดภัยในการชำระเงินคืออะไร?
ข้อกำหนดด้านความปลอดภัยของข้อมูลการชำระเงินกำหนดวิธีที่ระบบต้องจัดการข้อมูลบัตร เพื่อลดโอกาสที่ข้อมูลบัตรจะรั่วไหล ข้อกำหนดนี้ใช้กับทุกระบบที่จัดเก็บ ประมวลผล หรือส่งต่อข้อมูลบัตร ไม่ว่าธุรกรรมนั้นจะเป็นธุรกรรมจริงหรือธุรกรรมทดสอบที่ใช้ข้อมูลจริง
นี่คือจุดที่ทีมมักเข้าใจผิด คิดว่าสภาพแวดล้อมทดสอบได้รับการยกเว้น ทั้งที่การนำหมายเลขบัตรจริงเข้าไปในระบบทดสอบคือการขยายขอบเขตที่ต้องปฏิบัติตามข้อกำหนดออกไปโดยไม่ได้ตั้งใจ และทำให้ความเสี่ยงเพิ่มขึ้นโดยไม่มีประโยชน์อะไรตอบแทน เพราะงานทดสอบไม่ต้องใช้หมายเลขจริงอยู่แล้ว
แนวปฏิบัติที่ถูกคือใช้หมายเลขทดสอบที่ผู้ให้บริการจัดให้เท่านั้น และกำหนดให้เป็นข้อบังคับที่เขียนไว้ในขั้นตอนการทำงาน ห้ามคัดลอกหมายเลขจริงจากไฟล์บันทึก ภาพหน้าจอ หรือฐานข้อมูลจริงเข้ามาในระบบทดสอบไม่ว่าในกรณีใด
สิ่งที่ควรทำเพิ่มคือตรวจว่าข้อมูลบัตรไม่ถูกบันทึกลงไฟล์บันทึกของระบบโดยไม่ตั้งใจ ซึ่งเป็นจุดที่พบบ่อยที่สุดในการตรวจสอบ และกำหนดสิทธิ์การเข้าถึงข้อมูลที่เกี่ยวข้องให้แคบที่สุด หลักการเหล่านี้อยู่ในบทความข้อมูลทดสอบกับข้อกำหนดความปลอดภัยในการชำระเงิน
ฟอร์มชำระเงินควรมีกรณีทดสอบใด?
กรณีแรกคือหมายเลขที่ผ่านการตรวจหลักท้ายหมายเลขและหมายเลขที่ไม่ผ่าน เพื่อยืนยันว่าระบบตรวจถูกต้องทั้งสองทาง ไม่ใช่ยอมรับทุกอย่างหรือปฏิเสธทุกอย่าง
กรณีที่สองคือหมายเลขที่มีจำนวนหลักต่างกันตามเครือข่าย ทั้งแบบสั้นที่สุดและยาวที่สุดที่เครือข่ายนั้นรองรับ เพื่อยืนยันว่าระบบไม่ได้ตรึงความยาวไว้เพียงค่าเดียว
กรณีที่สามคือรหัสความปลอดภัยที่ความยาวไม่ตรงกับเครือข่าย และวันหมดอายุที่อยู่ในเดือนปัจจุบัน ซึ่งเป็นกรณีขอบเขตที่ตัดสินว่าบัตรยังใช้ได้หรือไม่
กรณีที่สี่คือการตรวจว่าเมื่อคำขอชำระเงินล้มเหลว ระบบบันทึกอย่างไร และแสดงข้อความกับผู้ใช้อย่างไร ต้องไม่มีหมายเลขบัตรทั้งชุดปรากฏในไฟล์บันทึก และข้อความที่แสดงต้องอธิบายสาเหตุได้โดยไม่เปิดเผยข้อมูลบัตร
กรณีที่ห้าคือการนำเข้าข้อมูลซ้ำ ตรวจว่าระบบไม่สร้างรายการซ้ำเมื่อผู้ใช้กดปุ่มเดิมหลายครั้ง ซึ่งเป็นข้อบกพร่องที่เกิดจริงบ่อยในหน้าชำระเงิน และตรวจได้โดยไม่ต้องใช้ข้อมูลบัตรใด ๆ เพิ่มเติม
ก้าวต่อไป
เริ่มจากตรวจว่าระบบทดสอบของคุณมีหมายเลขบัตรจริงตกค้างอยู่หรือไม่ ทั้งในไฟล์ข้อมูลทดสอบ ในไฟล์บันทึก และในภาพหน้าจอที่แปะไว้ในช่องทางพูดคุยของทีม ถ้ามี การล้างข้อมูลชุดนั้นเป็นงานที่ต้องทำก่อนงานอื่นทั้งหมด
ถ้าต้องการชุดตัวเลขสำหรับทดสอบ ลองใช้เครื่องมือสร้างหมายเลขบัตรเครดิต ของเว็บไซต์นี้ ซึ่งสร้างหมายเลขที่ผ่านการตรวจหลักท้ายหมายเลขและตรงกับช่วงหมายเลขของเครือข่ายที่เลือก พร้อมรหัสความปลอดภัยและวันหมดอายุที่สอดคล้องกัน และถ้าคุณกำลังจัดทำรายการตรวจสำหรับหน้าชำระเงิน มีฉบับละเอียดอยู่ในบทความรายการตรวจสอบฟอร์มชำระเงิน
หมายเลขบัตรทุกรายการที่เครื่องมือสร้างให้เป็นข้อมูลที่สังเคราะห์ขึ้นเพื่อการทดสอบ ไม่ผูกกับบัญชี บัตร หรือบุคคลจริงใด ไม่สามารถเรียกเก็บเงินได้ และไม่ควรนำไปใช้กับระบบจริงหรือเพื่อกระทำการใดที่เป็นการฉ้อโกง การทดสอบต้องทำเฉพาะกับระบบของทีมเองหรือระบบที่ได้รับอนุญาตอย่างชัดเจนเท่านั้น