我所知道的验证是:

  • 校验和整个卡号加起来应该为零。 (范围是 0-9)
  • 根据卡类型检查第一位数字
  • 根据卡片类型检查长度
  • 根据卡片类型检查 CCV 长度(我认为所有主要类型都是 3)
  • 当然要确保它是可接受的卡类型以及未过期。

  • 是否还有其他验证:)(我希望很多人都不知道所有这些)

    我问的原因是因为我无意中听到有一个针对过期或 CCV 的校验和编号。我只是想检查一下。

    最佳答案

  • 卡号 (又名 PAN ,主账号)
    不要把任何建议当作福音。卡号由 6 位发卡行识别码 (IIN)、帐号和 luhn 校验位组成。 IIN 范围不断变化,依赖此信息的行业部门(例如支付处理器)通常会随着变化的发生而更新。假设卡号应该在 16 到 19 位之间并以 3、4、5 或 6 开头是相当安全的。除此之外,尝试从 IIN 识别卡类型很容易出错,除非您经常更新。
  • Luhn/Mod10 校验位
    卡号的最后一位是校验位,用于检测运算符(operator)输入卡号时可能发生的换位错误。 wikipedia article 是获取更多信息和代码示例的好来源。
  • 磁条
    如果您可以物理访问卡和磁条读卡器,则轨道 2 包含银行卡信息。详细信息包括卡号、有效期、LRC(校验位)和服务代码。服务代码(仅在磁条上可用)告知如何使用该卡,例如仅用于国家支付、仅用于在 ATM 上使用(不是作为支付卡)、是否应提供现金返还等。
  • CCV/CSC/CV2
    安全数字永远不会压印在卡上,或记录在磁条上。除了美国运通卡外,所有的都应该是三位数(总是 4 位数)
  • 发行日期
    仅用于手动(健全性)检查。授权请求期间未发送
  • 有效期
    一个常见的误解是不能使用过期的卡。他们经常可以,但他们必须先通过在线授权(以便收单行对是否允许有最终决定权)。到期日期最长可达 future 20 年(在某些极少数情况下甚至更长)
  • 问题编号
    仅适用于某些卡类型。应该在授权请求中被捕获和使用。
  • 关于algorithm - 不需要连接到金融机构的信用卡校验和验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4514430/

    10-11 12:41