卡号识别完全指南:从前缀认出银行卡类型与卡组织
贴进一个卡号,靠开头几位的 BIN 前缀就能读出它属于哪个卡组织。本文讲清 Visa、Mastercard、银联、Amex 的前缀规律、卡号位数和支付页面自动识别的做法。
卡号识别完全指南:从前缀认出银行卡类型与卡组织
你在结账页面输入卡号,刚打了两三位,旁边那个小图标就翻成了 Visa 或者银联。它怎么这么快就知道这是哪家的卡?答案不在后台查询,而在卡号本身的开头几位。这几位叫 BIN,也叫 IIN,是发卡机构识别号,卡组织把固定区间分给各家发卡行,于是只看前缀就能认出品牌。
BIN 前缀是什么
一串卡号不是随机数字。前 6 到 8 位是 BIN(Bank Identification Number),由卡组织统一分配,映射到具体的发卡行和卡组织。再往后是发卡行自己排的账户序号,最后一位是 Luhn 校验位。所以识别卡种这件事,本质是拿开头几位去对各卡组织公开的区间表,完全不需要联网。
正因为前缀就藏着卡组织信息,识别可以在浏览器本地一瞬间完成。Toolora 的信用卡卡种识别器就是这个思路:贴进卡号,它读 BIN 前缀报出品牌,同时跑一遍 Luhn 校验,卡号一个字节都不会离开你的页面。
各家卡组织的前缀规律
记住几条主线,大部分卡你扫一眼开头就能认:
- Visa:以 4 开头,一位就能定。
- Mastercard:落在 51 到 55,加上较新的 2221 到 2720 区间。
- 银联 UnionPay:以 62 开头。国内的卡绝大多数都是这个头。
- American Express:34 或 37 开头。
- Discover:6011、65,以及 644 到 649。
- JCB:3528 到 3589。
- Diners Club:36、38,以及 300 到 305。
这里有个细节值得专门记一下:Visa 只要看到第一位是 4 就能确定,但 Mastercard 不行。老区间 51 到 55 看两位就够,新放出来的 2 字头区间(2221 到 2720)得看到第四位才能和别家区分开。所以做支付页面实时识别时,Visa 在第 1 位就能翻图标,Mastercard 得等到第 4 位才稳。
卡号位数也是线索
不同卡组织的卡号长度不一样,这是除前缀外的第二条校验线。Visa、Mastercard、银联和 Discover 通常是 16 位,Amex 是 15 位,Diners Club 经典卡是 14 位。位数和前缀要对得上:一个以 34 开头却有 16 位的号码就很可疑,因为正常 Amex 是 15 位,八成是多打或少打了一位。
一个真实的识别例子
我自己做收银表单时踩过这个坑。规格里给了一段 BIN 是 622126,我下意识以为 62 开头就是银联,差点写死成银联路由。把带这个前缀的测试号丢进识别器一跑,它报的是 Discover,不是 UnionPay。原因是 622126 到 622925 这段被划给了 Discover,和银联的 62 大头有重叠。要不是在测试号上提前抓到这个区间重叠,等到线上真实拒付才发现,排查成本高得多。
再举个最干净的例子:输入 4111 1111 1111 1111,识别器立刻报出 Visa,Luhn 校验通过,位数 16 位符合 Visa 常见长度。把最后一位改一个数字,品牌仍然显示 Visa(前缀没变),但 Luhn 会变成未通过。前缀识别回答的是"谁",Luhn 回答的是"这串数学对不对",两件事分得很清楚。
支付页面怎么用前缀做自动识别
在收银台里随用户输入实时标卡种,核心就是边输入边拿当前已输入的前缀去匹配区间表。实践上要注意几点:Amex 两位就能定 34/37,可以早早翻图标;Mastercard 的 2 字头区间要等够 4 位再判,否则会先误判成别家再跳变,体验很跳。Luhn 校验则放到用户输完整串卡号之后再跑,用来提示"是不是打错了一位",而不是用来当"卡是真的"的证据。
这里要划清一条红线:命中品牌加 Luhn 通过,绝不等于卡是真实开户、有效或有余额的。随便编一个以 4 开头、又恰好过模 10 校验的 16 位数字,识别器会老实显示成一张看起来合法的 Visa,但背后没有任何账户。识别和格式校验是前端的活,真正的扣款验证永远在持牌的支付网关那一侧。
测试时永远别用真卡
调支付逻辑时,用各卡组织公开的测试 PAN,比如 4111 1111 1111 1111(Visa)、5500 0055 5555 5559(Mastercard)、3400 0000 0000 009(Amex)。需要一批能过 Luhn 的新鲜样本时,可以用信用卡测试号生成器批量造,造出来的号码前缀正确、位数正确、Luhn 也对,直接拿去喂识别逻辑就行,不用从钱包里掏真卡。真卡留到真正结账时,走商户那个符合 PCI 规范的表单。
把这套规律记熟,你看一眼卡号开头就能说出卡组织,做支付页面时也能把实时识别的触发点设在对的位数上。识别靠前缀,校验靠 Luhn,二者各管一摊,分清楚了就不会再把格式合法误当成卡有效。
Made by Toolora · Updated 2026-06-13