我正在为iPhone / iPod组合编写一个POS应用程序,使用Apple Stores :: EasyPay中使用的相同硬件。
好的,我的障碍是这样的:如何在uitextfield中输入文字时识别使用哪种信用卡类型?
我假设我要使用textField:shouldChangeCharactersInRange:replacementString:
?但是,我有很多想法,但我很简单,不能将它们组合在一起形成代码:/
感谢任何帮助!
答案 0 :(得分:1)
也许我没有理解你的问题,但我认为你可以有一个BIN的清单(银行识别码)。例如,大多数以“4”开头的信用卡号码是Visa。如果他们以'5'开头,他们可能是万事达卡。这只是一个例子,你应该有一个完整的清单来识别每张可能的卡片。遗憾的是,我们已经支付了完整且更新的列表,但您可以在网上搜索免费信息,例如here。
答案 1 :(得分:1)
您可以合理地从卡号的前六位数猜测卡片类型,这被称为Issuer Identification Number (IIN)
麻烦的是,你很难获得完整的IIN列表。即使主要收购方也难以保持最新清单,因为发行人经常添加或移除范围。
幸运的是,卡片类型通常不重要。您应该能够对长度进行基本验证,并luhn check digit,然后将卡提交给处理器进行验证和授权。
答案 2 :(得分:1)
您可以联系Visa / MC并注册BIN列表更新。签证是免费的,但我相信MC收取费用。注册后,您将获得一张以每月当前BIN范围邮寄给您的CD。
如果您正在使用处理器或ISO(独立销售组织),也可以通过处理器或ISO(独立销售组织)。我假设您有一个支付应用程序,您与ISO建立了某种关系,为您的客户设置商家帐户。 ISO应该能够从处理器获得BIN列表,并且可能是免费的。
答案 3 :(得分:0)
我认为您使用textField:shouldChangeCharactersInRange:replacementString:
走在正确的轨道上,因为每次用户更改文本字段中的内容时都会调用此方法。听起来您实际上并不想更改textField,而是想要更改另一个标识卡类型的相关控件。您可以使用Determine Credit Card Type By Number中描述的算法作为帮助函数,在用户开始输入时相应地调整信用卡类型。
您可能希望跳过完整验证,直到输入字符串具有正确的字符数。
更新:一个有趣的response in the same thread提及实际上让用户选择信用卡类型是一个好主意,因为它至少会向用户显示您接受的信用卡列表。