เมนู

รูปแบบหมายเลขบัตรเครดิต แต่ละส่วนบอกอะไรบ้าง

รูปแบบหมายเลขบัตรเครดิตประกอบด้วยคำนำหน้า กลุ่มหลักบัญชี และหลักตรวจสอบ บทความนี้อธิบายความหมายของแต่ละส่วนและกับดักตอนรับข้อมูลจากผู้ใช้

เผยแพร่เมื่อ

  • ข้อมูลทดสอบ
  • การชำระเงิน
  • ฟอร์ม

รูปแบบหมายเลขบัตรเครดิตไม่ใช่เพียงตัวเลขเรียงต่อกัน แต่เป็นโครงสร้างที่มีความหมายซ่อนอยู่ในทุกช่วงหลัก ตั้งแต่หลักแรกที่บอกว่าบัตรอยู่ในกลุ่มการใช้งานใด ไปจนถึงหลักสุดท้ายที่เป็นหลักตรวจสอบ บทความนี้จะพาคุณอ่านหมายเลขบัตรทีละส่วน ทำความเข้าใจว่าทำไมความยาวจึงไม่เท่ากันเสมอ และชี้จุดที่ฟอร์มรับข้อมูลมักทำพลาดจนผู้ใช้กรอกบัตรที่ถูกต้องไม่ได้

รูปแบบหมายเลขบัตรเครดิตประกอบด้วยกี่ส่วน?

โดยหลักการ หมายเลขบัตรหนึ่งหมายเลขประกอบด้วยสามส่วนเรียงต่อกัน ส่วนแรกคือหมายเลขระบุผู้ออกบัตร ซึ่งเป็นคำนำหน้าที่ยาวหลายหลัก ทำหน้าที่บอกระบบเส้นทางว่าบัตรใบนี้อยู่ในเครือข่ายใด ส่วนที่สองคือกลุ่มหลักบัญชีที่ผู้ออกบัตรกำหนดขึ้นเองเพื่อไม่ให้ซ้ำกับบัตรใบอื่น และส่วนที่สามคือหลักตรวจสอบหนึ่งหลักที่คำนวณจากหลักทั้งหมดข้างหน้า

คำนำหน้าของผู้ออกบัตรเคยถูกเรียกกันทั่วไปว่าหมายเลขระบุธนาคาร แต่การเรียกแบบนั้นทำให้เข้าใจผิดในปัจจุบัน เพราะคำนำหน้าบอกได้ในระดับเครือข่ายบัตรและบางครั้งบอกได้ในระดับผลิตภัณฑ์ ไม่ได้แปลว่าคำนำหน้าหนึ่ง ๆ ต้องผูกกับธนาคารเดียวตลอดไป ธนาคารหลายแห่งใช้คำนำหน้าร่วมกัน และบางช่วงคำนำหน้าก็ถูกใช้โดยสถาบันหลายรายพร้อมกัน

ด้วยเหตุนี้จึงไม่ควรสรุปว่าตัวเลขที่ผ่านการตรวจชุดหนึ่ง “เป็นของ” ธนาคารใด เป็นเพียงการเดาจากช่วงหมายเลขที่รู้จักเท่านั้น และการเดานั้นผิดได้เสมอ

ตัวเลขหลักแรกบอกอะไรเกี่ยวกับบัตร

หลักแรกของหมายเลขบัตรคือตัวบ่งชี้กลุ่มการใช้งานตามแผนการจัดสรรหมายเลขที่เป็นสาธารณะ ไม่ใช่ความลับของระบบใด ตารางต่อไปนี้สรุปความหมายกว้าง ๆ ที่พบได้บ่อย

หลักแรก กลุ่มการใช้งานโดยทั่วไป
4 และ 5 บัตรชำระเงินของเครือข่ายขนาดใหญ่
3 กลุ่มท่องเที่ยวและบันเทิง ซึ่งมีทั้งบัตรเครดิตและบัตรเดบิต
6 บัตรของเครือข่ายที่เน้นหลายตลาดรวมถึงบัตรเดบิต
1 และ 2 ใช้ในอุตสาหกรรมการบินเป็นหลัก
7 ใช้ในธุรกิจน้ำมันและสถานีบริการเชื้อเพลิง
8 ใช้ในกลุ่มโทรคมนาคม
9 สงวนไว้สำหรับการจัดสรรในระดับประเทศ

การรู้ว่าหลักแรกหมายถึงกลุ่มใดช่วยให้คุณอ่านข้อความแจ้งเตือนของระบบได้เข้าใจขึ้น เช่น เมื่อหน้าเว็บบอกว่าไม่รองรับเครือข่ายบัตรของหมายเลขที่กรอก คุณจะพอเดาได้ว่าปัญหาอยู่ที่ตัวเลขหลักใด ไม่ใช่ที่ช่องกรอกอื่น

ทำไมความยาวของหมายเลขบัตรจึงไม่เท่ากัน?

ภาพจำที่คนส่วนใหญ่มีคือหมายเลขสิบหกหลัก แต่ความจริงคือความยาวที่ใช้จริงมีตั้งแต่สิบสามหลักไปจนถึงสิบเก้าหลัก ขึ้นอยู่กับเครือข่ายบัตรและชนิดผลิตภัณฑ์ มาตรฐานหมายเลขบัญชีที่เกี่ยวข้องกำหนดเพดานความยาวไว้ที่สิบเก้าหลัก ส่วนกลุ่มที่พบบ่อยที่สุดคือสิบสาม สิบสี่ สิบห้า และสิบหกหลัก

การยึดติดกับความยาวเดียวจะทำให้ระบบของคุณปฏิเสธบัตรที่ถูกต้องบางประเภทโดยไม่จำเป็น และปัญหาแบบนี้มักไม่ถูกพบตอนพัฒนา เพราะทีมใช้ตัวอย่างจากบัตรที่ตนเองถืออยู่เป็นหลัก

แนวปฏิบัติที่ปลอดภัยคือยอมรับช่วงความยาวที่กว้างตามเครือข่ายบัตรที่คุณรองรับ แล้วปล่อยให้การตรวจคำนำหน้าและการอนุมัติเป็นตัวตัดสินขั้นสุดท้าย รายละเอียดของแต่ละเครือข่ายพร้อมช่วงคำนำหน้าอยู่ในบทความเรื่องบัตรทดสอบแยกตามเครือข่าย

พิมพ์ช่องว่างหรือขีดกลางในหมายเลขบัตรได้ไหม?

ในทางเทคนิค ตัวคั่นไม่ใช่ส่วนหนึ่งของหมายเลขบัตรเลย ไม่ว่าจะเป็นช่องว่าง ขีดกลาง หรือจุด พวกมันมีไว้เพื่อให้คนอ่านตัวเลขยาว ๆ ได้สะดวกขึ้นเท่านั้น เมื่อหมายเลขถูกส่งเข้าระบบประมวลผล ตัวคั่นทั้งหมดต้องถูกตัดออกก่อน

แต่ในทางประสบการณ์ผู้ใช้ ผู้คนพิมพ์ตัวคั่นเข้ามาเป็นปกติ เพราะคัดลอกจากใบเสร็จ จากอีเมล หรือจากหน้าเว็บของธนาคารที่จัดกลุ่มตัวเลขไว้แล้ว ฟอร์มที่ปฏิเสธทันทีเพียงเพราะเจอช่องว่างจึงสร้างความหงุดหงิดโดยไม่จำเป็น

แนวทางที่สมดุลคือตัดตัวคั่นออกเงียบ ๆ แล้วตรวจว่าส่วนที่เหลือเป็นตัวเลขล้วนหรือไม่ ถ้ามีอักขระอื่นปนอยู่จึงค่อยแจ้งเตือน การจัดกลุ่มตัวเลขให้อ่านง่ายระหว่างพิมพ์ก็เป็นวิธีที่ดี แต่ต้องเป็นการจัดกลุ่มเพื่อการแสดงผลเท่านั้น ไม่ใช่ค่าที่เก็บจริง

หมายเลขที่เห็นบนบัตรไม่เหมือนที่ระบบเก็บ

มีอีกจุดหนึ่งที่อ่านแล้วมักประหลาดใจ คือรูปแบบที่พิมพ์บนหน้าบัตรกับรูปแบบที่ระบบเก็บไว้ภายในไม่จำเป็นต้องเหมือนกัน หน้าบัตรแสดงตัวเลขให้มนุษย์อ่าน ส่วนระบบเก็บค่าที่เป็นตัวเลขล้วนไม่มีตัวคั่น เพื่อให้เปรียบเทียบและค้นหาได้แม่นยำ

ความต่างนี้ไม่ใช่ความผิดพลาด แต่เป็นเรื่องปกติของการออกแบบระบบ และเป็นสาเหตุที่ต้องระวังเวลาเขียนไฟล์ส่งออก เพราะตัวคั่นที่หลุดเข้าไปในคอลัมน์จะทำให้การจับคู่ข้อมูลล้มเหลวแบบเงียบ ๆ

สำหรับนักพัฒนา: ทำความสะอาดข้อมูลนำเข้าก่อนตรวจความยาว

ลำดับการทำงานที่แนะนำในส่วนรับข้อมูลมีดังนี้

  • ตัดอักขระที่ไม่ใช่ตัวเลขออกก่อน แล้วจึงตรวจว่ามีอะไรเหลืออยู่หรือไม่
  • ปฏิเสธสตริงว่างหลังการทำความสะอาดทันที โดยไม่ต้องรอถึงขั้นตอนอื่น
  • ตรวจความยาวโดยยึดช่วงตามเครือข่ายบัตร ไม่ใช่ยึดค่าคงที่ค่าเดียว
  • ตรวจคำนำหน้าเทียบกับรายการเครือข่ายที่ระบบรองรับจริง และแจ้งให้ชัดว่าไม่รองรับเครือข่ายใด
  • คำนวณหลักตรวจสอบด้วยขั้นตอนวิธี Luhnเป็นด่านสุดท้ายของการตรวจรูปแบบ
  • เก็บค่าที่ทำความสะอาดแล้วลงฐานข้อมูลเสมอ ไม่เก็บสำเนาที่มีตัวคั่น

ข้อควรระวังอีกเรื่องคือการจัดกลุ่มตัวเลขเพื่อแสดงผลต้องไม่ย้อนกลับไปแก้ค่าที่ผู้ใช้กรอกจริง เพราะจะทำให้เกิดการนับตำแหน่งผิดเมื่อระบบต้องจัดการกับข้อมูลจำนวนมากในเวลาเดียวกัน

สร้างหมายเลขตามเครือข่ายที่ต้องการ

เมื่อคุณต้องทดสอบว่าฟอร์มรองรับความยาวและคำนำหน้าครบทุกแบบ เครื่องมือสร้างหมายเลขบัตรบนเว็บไซต์นี้ให้คุณเลือกเครือข่ายบัตรและจำนวนที่ต้องการ แล้วได้ชุดตัวเลขที่โครงสร้างถูกต้องพร้อมใช้ทันที ตัวเลขทุกใบเป็นข้อมูลสมมติที่ไม่ผูกกับบัญชีใดและไม่เคยถูกออกให้กับใคร จึงเหมาะสำหรับการทดสอบซอฟต์แวร์เท่านั้น

หากงานของคุณต้องเทียบพฤติกรรมระหว่างช่องกรอกวันหมดอายุกับหมายเลขบัตรไปพร้อมกัน ควรอ่านรูปแบบวันหมดอายุบัตรเครดิตเพิ่มเติม เพราะทั้งสองช่องมีกับดักด้านการจัดรูปแบบที่คล้ายกัน

ก้าวต่อไป

เมื่อคุณเข้าใจโครงสร้างของหมายเลขบัตรแล้ว ขั้นถัดไปที่ให้ผลชัดที่สุดคือตรวจสอบว่าระบบของคุณยอมรับความยาวทุกแบบที่ควรยอมรับ ไม่ใช่แค่สิบหกหลักที่คุ้นเคย จากนั้นจึงทดลองสร้างชุดตัวเลขตามเครือข่ายที่คุณรองรับ แล้วไล่ป้อนเข้าฟอร์มจริงด้วยมือสักสองสามรอบ ความผิดพลาดด้านรูปแบบส่วนใหญ่จะโผล่ขึ้นมาทันทีในขั้นตอนนี้ และถ้าต้องการข้อมูลตั้งต้นจำนวนมากสำหรับงานทดสอบ เครื่องมือบนเว็บไซต์นี้ก็สร้างให้ได้ครั้งละหลายสิบใบเช่นกัน

อ่านต่อ

บทความเกี่ยวกับ เครื่องมือสร้างหมายเลขบัตรเครดิตปลอม

บทความเกี่ยวกับ เครื่องมือสร้างหมายเลขบัตรเครดิตปลอม

รายการนี้แสดงเฉพาะบทความในหัวข้อของหน้านี้