确定信用卡/借记卡类型

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 提到实际上让用户选择信用卡类型是个好主意,因为它至少向用户显示了您接受的信用卡列表。

【讨论】:

嗯,有趣,我看过手动输入卡类型,但规范说:必须“根据卡号数据字段的填充自动识别卡类型”。关于要使用的算法,你说的是哪一个,那个页面上有很多,但我似乎无法将它们转换为可可。

以上是关于确定信用卡/借记卡类型的主要内容,如果未能解决你的问题,请参考以下文章

通过卡号识别“信用卡”还是“借记卡”[重复]

用于安卓应用内购买的借记卡

PayPal 不会接受每张信用卡/借记卡 - 智能按钮结帐

PayPal 智能按钮借记卡或信用卡功能 - 显示金额

使用信用卡和借记卡的贝宝付款

信用卡/借记卡的 Paypal 支付网关