确定信用卡/借记卡类型
Posted
技术标签:
【中文标题】确定信用卡/借记卡类型【英文标题】:Determining credit/debit card type 【发布时间】:2011-02-04 10:27:38 【问题描述】:我正在为 iPhone/iPod 组合编写一个 POS 应用程序,使用与 Apple Stores:: EasyPay 中使用的完全相同的硬件。
好的,我的障碍是:在 uitextfield 中输入文本时,如何识别正在使用的信用卡类型?
我假设我必须使用 textField:shouldChangeCharactersInRange:replacementString:
?但是,我有一些想法,但我无法将它们组合在一起形成代码:/
感谢任何帮助!
【问题讨论】:
【参考方案1】:也许我没有理解您的问题,但我认为您可以提供一个 BIN 列表(银行识别号)。例如,大多数以“4”开头的信用卡号都是 Visa。如果它们以“5”开头,它们可能是万事达卡。这只是一个例子,您应该有一个完整的列表来识别每张可能的卡片。不幸的是,完整且更新的列表是付费的,但您可以在网络上搜索免费信息的好列表,例如here。
【讨论】:
【参考方案2】:您可以从卡号的前六位数字中合理猜测卡类型,即Issuer Identification Number (IIN)
问题是,您很难获得完整的 IIN 列表。即使是主要收购方也难以保持最新列表,因为发行方经常添加或删除范围。
幸运的是,卡片类型通常不重要。您应该能够执行长度的基本验证,并luhn check digit,然后将卡提交给处理器进行验证和授权。
【讨论】:
我实际上没有想过使用 Luhn 校验位。如果用户不小心输入了错误的卡号,这可能会很有用。【参考方案3】:您可以联系 Visa/MC 并注册 BIN 列表更新。 Visa是免费的,但我相信MC是收费的。注册后,您将每月收到一张包含当前 BIN 范围的 CD 邮寄给您。
如果您正在使用处理器或 ISO(独立销售组织),您也可以通过它。我假设由于您有一个支付应用程序,因此您与为您的客户设置商家帐户的 ISO 有某种关系。 ISO 应该能够从处理器为您获取 BIN 列表,而且可能是免费的。
【讨论】:
【参考方案4】:我认为textField:shouldChangeCharactersInRange:replacementString:
是正确的,因为每次用户更改文本字段中的内容时都会调用它。听起来您实际上并不想更改 textField,而是想更改另一个标识卡片类型的相关控件。您可以使用Determine Credit Card Type By Number 中描述的算法作为辅助函数,在用户开始输入时相应地调整信用卡类型。
您可能希望跳过完整验证,直到输入字符串的字符数正确。
更新:一个有趣的response in the same thread 提到实际上让用户选择信用卡类型是个好主意,因为它至少向用户显示了您接受的信用卡列表。
【讨论】:
嗯,有趣,我看过手动输入卡类型,但规范说:必须“根据卡号数据字段的填充自动识别卡类型”。关于要使用的算法,你说的是哪一个,那个页面上有很多,但我似乎无法将它们转换为可可。以上是关于确定信用卡/借记卡类型的主要内容,如果未能解决你的问题,请参考以下文章