粘贴一个卡号,逐位看它的校验位对不对。这一页更有用的其实是后半部分:通过了又能说明什么。
只证明一件事:这串数字自身是自洽的。Luhn 是 1950 年代设计的校验和,目标是抓住人抄号码时最常犯的两种错——打错一位,以及相邻两位写颠倒。它的职责就这么多。
Luhn 通过不能说明这张卡存在、发行过、还在有效期内、里面有钱,或者持卡人是本人。4111111111111111 能通过,而它从来不属于任何人。任意一串数字,只要挑对最后一位就能让它通过。
从右往左走。最右边那位不动,从它往左每隔一位乘 2;乘完超过 9 就减 9(8 乘 2 得 16,记 7)。然后全部相加,合计能被 10 整除就算通过。
最右边那位叫校验位,它不属于账号本身,存在的唯一目的就是把合计凑成 10 的整数倍。所以上面的工具会告诉你「校验位应为」几——如果只差一位,那里通常就是打错的地方。
Luhn 校验的是 PAN,走 DE2(DE35 的二磁道数据里也有一份)。大多数收单方在拼报文之前就先跑一遍 Luhn,所以卡号打错通常表现为表单报错,根本到不了发卡行。
真到了发卡行那一步,返回的是普通拒绝而不是格式错误,一般是 DE39 = 14 无效卡号。注意这里是不对称的:一个 Luhn 通过的号码照样可能返回 14,因为 14 的意思是没有这个账户,不是校验和不对。