• 银行卡信用卡的支付测试


    一、银行卡

    (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

     

  • 相关阅读:
    使用lua给wireshark编写uTP的Dissector
    Win32下 Qt与Lua交互使用(四):在Lua脚本中自由执行Qt类中的函数
    Win32下 Qt与Lua交互使用(三):在Lua脚本中connect Qt 对象
    Win32下 Qt与Lua交互使用(二):在Lua脚本中使用Qt类
    C# 自动部署之附加数据库
    机器码农:深度学习自动编程
    Oracle 记录插入时“Invalid parameter binding ”错误
    Visual Studio 在调试时启用编辑功能
    航摄比例尺与成图比例尺
    maven引用net.sf.json-lib
  • 原文地址:https://www.cnblogs.com/tangbohu2008/p/9430293.html
Copyright © 2020-2023  润新知