首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >针对英国商家的信用卡验证资源

针对英国商家的信用卡验证资源
EN

Stack Overflow用户
提问于 2009-08-27 14:58:28
回答 4查看 3.2K关注 0票数 1

我正在尝试设置基于标准检查参数的信用卡号码,但我发现许多英国卡(Maestro / Visa Debit / Barclaycard Connect)的起始号码不符合其他卡验证脚本正则表达式;

即Maestro (Switch)卡仍然存在,并且以4开头,使用大量的在线正则表达式会导致Visa信用卡被选中。

有没有人知道存储这些注册开始代码的资源?

标签

任何寻找英国信用卡验证表(BIN表)的人

http://www.barclaycard.co.uk/business/documents/pdfs/bin_rules.pdf

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-27 15:03:55

这是rules regarding credit card formatting and validation

注意:交换卡实际上是借记卡,而不是信用卡,因此有不同的验证规则。事实上,开关卡通常在号码中嵌入帐号。可能有一个校验和算法来解决这个问题,但我还没有看到它(现在)。

票数 1
EN

Stack Overflow用户

发布于 2009-08-27 15:05:36

您不能依赖正则表达式来验证卡号。您需要一个最近的卡片验证表,其中包括范围和范围到类型映射的长度。您的支付网关提供商应该能够为您提供最新的验证表。

您通常可以依赖Luhn进行is -this- number虚构类型的验证,但为了通过网关的可靠性测试,您需要验证用户是否输入了该号码的写入卡类型,如果提供商需要开始日期,则必须输入开始日期,等等……

下面是一个用C#编写的Luhn示例:

代码语言:javascript
运行
复制
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);
}
票数 1
EN

Stack Overflow用户

发布于 2009-08-27 15:03:08

我不知道注册的启动代码,但我有一个脚本可以很好地用于cc验证(它的javascript):Determine credit card type by number?

它经过了严格的测试,并与相当多的事务一起使用,因此它应该处理所有特殊情况(如果您将其更改为regexp,您可以共享它吗?)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1341648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档