【问题标题】:Determining credit/debit card type确定信用卡/借记卡类型
【发布时间】:2011-02-04 10:27:38
【问题描述】:

我正在为 iPhone/iPod 组合编写一个 POS 应用程序,使用与 Apple Stores:: EasyPay 中使用的完全相同的硬件。

好的,我的障碍是:在 uitextfield 中输入文本时,如何识别正在使用的信用卡类型?

我假设我必须使用 textField:shouldChangeCharactersInRange:replacementString:?但是,我有一些想法,但我无法将它们组合在一起形成代码:/

感谢任何帮助!

【问题讨论】:

    标签: iphone objective-c nsstring e-commerce


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

        【讨论】:

        • 嗯,有趣,我看过手动输入卡类型,但规范说:必须“根据卡号数据字段的填充自动识别卡类型”。关于要使用的算法,你说的是哪一个,那个页面上有很多,但我似乎无法将它们转换为可可。
        猜你喜欢
        • 2014-03-07
        • 2012-07-22
        • 2015-09-25
        • 2021-05-12
        • 2010-12-01
        • 2019-02-25
        • 2016-09-28
        • 2015-01-26
        • 1970-01-01
        相关资源
        最近更新 更多