開發者工具 / 024
信用卡檢查器
以 Luhn 檢查碼、卡號長度與常見前綴做格式檢查,並嘗試辨識卡別;不會查詢卡片是否真實或有效。
或帶入一組測試卡號
輸入卡號後會立即檢查,不需要按送出。
這個工具只檢查號碼的格式是否合法—— 也就是每個結帳表單都會做的同一道前端檢查。 它無法判斷卡片是否真實存在、是否還有效或有沒有額度,那些只有發卡行查得到。 建議用上面的測試卡號試玩就好。
為什麼做這個
開發付款表單時,常需要先在前端檢查明顯輸入錯誤。這個工具把 Luhn 檢查、長度與常見卡別辨識集中在一起,也可用來核對測試卡號格式。
這個工具怎麼用
把卡號輸入或貼進上方欄位,會立即檢查並依卡別自動排版。空格與連字號都會被忽略,所以從文件或截圖抄過來的格式可以直接貼上不用先整理。
Luhn 演算法(也叫模 10 演算法)是信用卡號的檢查碼機制:從最右邊往左,每隔一位就把數字乘以二,乘完超過 9 的話減掉 9,最後把所有數字加總,能被 10 整除就通過。它的用途是擋掉「打錯一個數字」或「兩個相鄰數字顛倒」這類輸入錯誤,成本極低又能過濾掉絕大多數的手誤,所以幾乎每個結帳表單都會在送出前先跑一次。
卡別是依開頭的 IIN(發卡機構識別碼)判斷的:4 開頭是 Visa,51–55 與 2221–2720 是 Mastercard,34 與 37 是 American Express,35 開頭是 JCB,62 開頭是銀聯。判斷出卡別後還會比對長度是否合理——Visa 是 13、16 或 19 位,Amex 固定 15 位,Mastercard 固定 16 位。
最重要的一點:這個工具只檢查號碼的「格式」對不對。通過檢查不代表這張卡真的存在、還有效或有額度,那些只有發卡行查得到。實務上前端做完 Luhn 檢查,真正的授權仍然要送到金流服務商那邊處理。
常見問題
通過檢查就代表卡片可以刷嗎?
不代表。Luhn 檢查只確認號碼的檢查碼與長度符合規則,任何人都能隨便編一串通過檢查的數字。卡片是否真實存在、有沒有過期、額度夠不夠,都只有發卡行查得到,前端做不到也不應該做到。
Luhn 演算法是怎麼運作的?
從卡號最右邊往左,每隔一位把該數字乘以二,乘完大於 9 就減 9,然後把所有數字加總。總和能被 10 整除就通過。它的設計目的是抓輸入錯誤而不是防偽——打錯一個數字或把相鄰兩個數字顛倒,幾乎都會被它抓到。
為什麼我的卡別顯示「未知」?
代表開頭的數字不在這個工具收錄的 IIN 範圍內。目前支援 Visa、Mastercard、American Express、JCB、Discover、Diners Club 與銀聯,地區性的卡別或較新配發的號段可能還沒收錄。這種情況下 Luhn 檢查仍然會照常執行。
可以拿來產生測試卡號嗎?
這個工具只做驗證,不提供產生功能。需要測試卡號的話,各家金流服務商(Stripe、PayPal 等)的官方文件都有公開的測試號碼,工具裡也內建了四組可以一鍵帶入,那些是設計來給人測試用的。
為什麼 American Express 的排版跟別家不一樣?
因為 Amex 的卡號是 15 位而不是 16 位,實體卡上的分組方式是 4-6-5。工具偵測到 34 或 37 開頭時會自動改用這個排版,這樣跟手上的卡片對照比較不容易看錯位。