银行卡信用卡的支付测试

一、银行卡

(1)卡号规则

银行卡卡号长度一般是15-19位,常见的是18位、19位。最后一位是校验位,它是怎么校验的呢??如果你学会了该算法,可以在Excel中设置一个校验公式,当用户输入了错误的银行卡时,给予提示,如果你是软件开发者,学会改算法,可以校验用户输入的银行卡是否正确。

(2)方法/步骤

  1. 除去校验位后,从右至左,将卡号按位编码,从0开始。
  2. 将偶数位×2,得到的结果按位相加,比如偶数为6,×2=12,则将1和2相加=3;奇数位则直接参与相加;
  3. 重复步骤2得到总和,该总和加上校验位应能被10整除,否则校验位不正确。

(3)图解方法

图解:

设卡号:

            1    3    8     6    2    6     7    1     8     check

×2  = 2        16           4          14        16

--------------------------------------------------------------

            2 +3+1+6+6+4+6+1+4+1+1+6 = x

判断 (( x + check )%10 == 0 )表达式是否为真即可。

(4)代码

  1.  

    BOOL LuhmCheck( LPCSTR lpszCard, BOOL bCheck = TRUE )  

    {  

        int nLength = strlen( lpszCard );  

        if( nLength != 16 && nLength != 19 )  

            return FALSE;  

      

        if( !bCheck )  

            return TRUE;  

      

        int nCheck = ( lpszCard[ nLength - 1 ] - '0' );  

        int sum = 0;  

        nLength -= 2;  

        for( int i = 0; i <= nLength; ++ i )  

        {  

            int j = nLength - i;  

            int w = lpszCard[ j ] - '0';  

            if( i % 2 == 0 )  

            {  

                int n = w * 2;  

                if( n > 9 )  

                {  

                    sum += ( n % 10 );  

                    sum += ( n / 10 );  

                }  

                else  

                    sum += n;  

            }  

            else  

            {  

                sum += w;  

            }  

        }  

        if(( sum + nCheck ) % 10 == 0 )  

            return TRUE;  

        else  

            return FALSE;  

    }  

二、信用卡

(1)卡号规则:

信用卡卡号规则及识别办法:

发卡银行

卡种

位数  

特征

中国银行

长城卡

16

首位数字为‘8’(8030为上海卡)或前6位为‘547766’、‘558868’、‘518378’、‘518379’、‘518474’、

‘518475’、‘518476’、‘424106’、‘424107’、‘424108’、‘424109’、‘424110’、‘424111’ 、

‘438088’、‘438089’、‘356833’、‘356835’

中国工商银行

牡丹卡

16

前5位‘45806’、‘53098’、‘42701’、‘42702’、‘42703’、‘55836’、‘53099’、‘53097’,

前6位‘451804’、‘451810’、‘451811’、‘458071’,

第6位至第9位‘0348’和第7位至第10位‘0348’、‘0350’为上海卡

15

前6位‘370246’、‘370247’

中国建设银行

龙卡

16 18

前5位:53242(后3位‘269--289’为上海卡),

前6位:544033、453242(后3位‘226--289’为上海卡)、491031

前6位:553242,前7位4033、5453242、5491031

前六位:526410,524094,552245,421349,434061,434062

龙卡国际普通卡VISA

16

4367 4500、4367 4502(需提供背面7位校验码后3位)

龙卡国际金卡 VISA

16

4367 4800、4367 4802(需提供背面7位校验码后3位) 436718、436738

龙卡国际普通卡MASTER

16

5324 5000、5324 5050、5324 5002(需提供背面7位校验码后3位)

龙卡国际金卡 MASTER

16

5324 5800、5324 5850、5324 5802(需提供背面7位校验码后3位)

中国农业银行

金穗卡

16

前五位:49102,53591

中国交通银行

太平洋卡(上海地区)

16

53783,49104 (第7到9位为011) 62225(第7到9位为011)(需提供背面7位校验码后3位)

中国招商银行

国际卡

16

前5位:439188,(VISA)439225,439226,(MASTER)518710,518718

广东发展银行

广发卡

 

前六位:491032, 491033, 491034, 491035, 491036, 491037, 491038, 493427,

436768, 436769, 436770, 436771, 428911, 406365, 406366, 548844,

518364, 541709, 541710, 520152, 520382

光大银行

阳光卡

16

前七位:4062540,4062520,4062521

前八位:40625220,40625221,40625222,40625223,40625224

民生银行

信用卡

16

前六位:421869, 421870, 421871, 407405, 517636,

512466, 528948, 552288, 556610

中信银行

信用卡

16

前六位:403391, 403392, 403393, 404157, 404158, 404159,

518212, 520108, 514906, 556617, 558916, 433667, 433666

上海浦东发展银行

信用卡

16

前六位:407438, 404739, 498451(需提供背面7位校验码后3位)

外卡

VISA(威士)

13,16

4

外卡

MASTER(万事达)

16

51-55

外卡

AMEX(运通)

15

34,37

外卡

DINNERS(大来)

14

300-305,36,38

外卡

JCB

16 15

3 2131,1800

 

例如:Test VISA credit card number: 4005550000000019

Test Credit Card Numbers   
  Card Type     Card Number     Number Characters  
     
   Master Card 5105105105105100 (16) Characters
   Master Card 5555555555554444 (16) Characters
   Master Card 4222222222222 (13) Characters
   VISA 4111111111111111 (16) Characters
   VISA 4012888888881881 (16) Characters
       
   American Express 378282246310005 (15) Characters
   American Express 371449635398431 (15) Characters
   Amex Corporate 378734493671000 (15) Characters
   Dinners Club 38520000023237 (14) Characters
   Dinners Club 30569309025904 (14) Characters
       
   Discover 6011111111111117 (16) Characters
   Discover 6011000990139424 (16) Characters
   JCB 3530111333300000 (16) Characters
   JCB 3566002020360505 (16) Characters
       

Test Credit Card Numbers:
Visa: 4111-1111-1111-1111
MasterCard: 5431-1111-1111-1111
Amex: 341-1111-1111-1111
Discover: 6011-6011-6011-6611
   
   
Credit Card Prefix Numbers:
Visa: 13 or 16 numbers starting with 4
MasterCard: 16 numbers starting with 5
Discover: 16 numbers starting with 6011
AMEX: 15 numbers starting with 34 or 37

 

 三、支付流程图:

 四、支付接口

银行卡校验算法,hex上有库luhn,各种银行卡都适用,不限于信用卡。

# mix.exs
defp deps do
  [
    {:luhn, "~> 0.3.0"}
  ]
end

辨别银行卡,只需知道卡号前几位。

 判断银行卡类型, hex仓库有:

{:credit_card, "~> 1.0"}

 

国内提供银行卡认证的网站(主要是一些数据服务公司):

  1. 聚合数据 https://www.juhe.cn/docs/api/id/188
  2. 易源数据 https://www.showapi.com/api/lookPoint/1072
  3. 阿凡达数据 http://avatardata.cn/Docs/Api/fd78bda0-4561-4e0f-8e0e-48b2022a5d59
  4. APIX https://www.apix.cn/services/show/190

信用卡相关支付系统:

  1. https://www.pingxx.com/
  2. https://www.yeepay.com/
  3. https://stripe.com/
  4. https://www.fhtpay.com/

来源:http://www.infomerchant.net/creditcardprocessing/credit_card_test_numbers.html

 

原文地址:https://www.cnblogs.com/tangbohu2008/p/9430293.html