英国商家的信用卡验证资源
Posted
技术标签:
【中文标题】英国商家的信用卡验证资源【英文标题】:Credit Card Validation Resource for UK merchant 【发布时间】:2010-11-23 10:06:53 【问题描述】:我正在尝试根据标准检查参数设置信用卡号码,但我发现许多英国卡(Maestro / Visa Debit / Barclaycard Connect)的起始号码不符合其他卡验证脚本正则表达式;
I.e Maestro (Switch) 卡仍然存在并且以 4 开头,使用大量在线正则表达式会导致选择 Visa 信用卡。
有谁知道存储这些注册起始码的资源吗?
塔
任何人都在寻找英国信用卡验证表 (BIN TABLE)
http://www.barclaycard.co.uk/business/documents/pdfs/bin_rules.pdf
【问题讨论】:
在那个 BIN 表上做得很好。正是我一直在寻找的。span> 谢谢,找到有用的信息来验证是一场噩梦 :o) 【参考方案1】:这里是rules regarding credit card formatting and validation。
注意:切换卡实际上是借记卡而不是信用卡,因此具有不同的验证规则。事实上,Switch 卡通常会在号码中嵌入帐号。可能有一个校验和算法,但我还没有看到它(还)。
【讨论】:
是的,所有 Maestro 卡都是借记卡;并从第 7 位开始包含帐户代码。可能需要获取数据验证表。【参考方案2】:您不能依赖正则表达式来验证卡号。您需要一个最近的卡片验证表,其中包括范围的长度和范围到类型的映射。您的支付网关提供商应该能够为您提供最新的验证表。
您通常可以依靠 Luhn 进行 is-this-number-made-up 类型的验证,但为了通过网关的责任测试,您需要验证用户是否输入了号码的写卡类型,并且如果提供者需要开始日期,则必须输入,等等...
这是 C# 中的 Luhn 示例:
public static bool IsLuhnValid(string cardNumber)
if (string.IsNullOrEmpty(cardNumber))
return false;
Int64 cardNumberAsBigInt;
if (!Int64.TryParse(cardNumber, out cardNumberAsBigInt) || (cardNumberAsBigInt == 0))
return false;
int indicator = 1;
int firstNumberToAdd = 0;
int secondNumberToAdd = 0;
for (int i = cardNumber.Length - 1; i >= 0; i--)
int currentNumber = int.Parse(cardNumber[i].ToString());
if (indicator == 1)
firstNumberToAdd += currentNumber;
indicator = 0;
else
int doubleCurrentNumber = currentNumber + currentNumber;
if (doubleCurrentNumber >= 10)
int num1 = Convert.ToInt32(doubleCurrentNumber.ToString().Substring(0, 1));
int num2 = Convert.ToInt32(doubleCurrentNumber.ToString().Substring(1, 1));
secondNumberToAdd += num1 + num2;
else
secondNumberToAdd += doubleCurrentNumber;
indicator = 1;
return ((firstNumberToAdd + secondNumberToAdd) % 10 == 0);
【讨论】:
它作为一个先导选择;就像谷歌结帐一样,你输入你的号码,它会预先选择卡类型。 我们确实在验证类中内置了一个 LUHN 方法;就像使用目前每个会话只接受一个调用的网络服务一样(不要问),我们必须在发送信息之前尽可能多地进行验证。【参考方案3】:我不知道注册的起始代码,但我得到了一个可以很好地用于 cc 验证的脚本(它的 javascript):Determine credit card type by number?
这是经过大量测试并用于大量事务,因此它应该处理所有特殊情况(如果您将其更改为正则表达式,您可以分享它吗?)
【讨论】:
【参考方案4】:Wiki 上的 BIN(银行识别号)资源
【讨论】:
Ta,可惜上面的数据大多已经过时了; Visa Electron 是 Visa 借记卡,起始编号不再匹配。显然,使用借记卡,您不能简单地与 4 匹配(这很糟糕):op以上是关于英国商家的信用卡验证资源的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 paypal / ruby on rails / 活跃商家创建安全的信用卡网关