【发布时间】:2026-01-20 04:40:02
【问题描述】:
我正在开发一个移动支付应用程序。用户可以将他的所有卡添加到应用程序中,包括支付卡(例如信用卡/借记卡/现金卡)和非支付卡(赚取积分的会员卡)。
在添加卡片时,我想区分这两种类型的卡片,并希望在应用内的单独列表中显示它们。
虽然 Luhn 算法可以,但即使是非支付卡也碰巧按照 Luhn 算法计算校验位。
请建议是否有任何其他机制可以实用地区分这两种类型的卡片。
谢谢
【问题讨论】:
-
我建议让您的应用程序用户根据需要对卡片进行分组,或者使用正则表达式来快速分析常见范围的卡片编号。有很多现成的例子,只是谷歌。通常的正则表达式不是 100% 正确的。由于此类表的大小和永久更新,对 Card BIN 表的支持将更加复杂。
-
除了上面的评论之外,ISO/IEC 7812 是大多数支付卡的标准,因此您可以相当确定支付卡号从 4/5/6 开始.不过,这些范围内可能有一些会员卡,特别是在 6 范围内。此外,一些发卡机构(其中之一是 JCB)完全遵循不同的标准(JCB 卡以 3 开头)。总而言之——让用户自己整理吧!
-
@PaulG - 实际上,7812 适用于 所有 信用卡,包括 JCB。 This table 具有所有主要的 BIN 范围(前几位数字)。值得注意的是,美国运通卡也是以 3 开头,但根据第二位数字很容易与 JCB 区分开来。
-
github.com/card-io/card.io-Android-SDK CardIO 实现根据前 4 位区分卡。可能有帮助
标签: android payment credit-card