Atitit.会员卡(包括银行卡)api的设计

1. 银行卡的本质是一种商业机构会员卡1

2. 会员卡号结构组成1

2.1. ●前六位是:发行者标识代码 Issuer Identification Number (IIN)。1

2.2. ●中间的位数是:个人账号标识(从卡号第七位开始)6-12位数字2

2.3. ●最后一位位数是校验位2

2.4.  将卡号前面的数字采用Luhn算法计算出信用卡或者借记卡的最后一位数字。2

3. 银行卡号校验 (Luhn算法)2

4. LUHN公式2

4.1. 计算步骤3

5. 工具卡号判断银行3

5.1. 有效期4

5.2. 银行归属地查询4

1. 银行卡的本质是一种商业机构会员卡

第一张信用卡就是加油站 和餐厅 发行的。。

不过一般商业银行的会员卡可以提现,单也少部分不可或者有限制。。

其他机构发行的会员卡,根据各个机构不同而不同,有的可以提现,大部分不可提现。。

2. 会员卡号结构组成

其实我们的银行卡号一般是16位或者19位。由如下三部分构成。

2.1. ●前六位是:发行者标识代码 Issuer Identification Number (IIN)。

注意:当前已经用IIN替换了之前的发卡行识别码 Bank Identification Number (BIN).

其中第一位数字是主要产业标识符(Major Industry Identifier (MII)),下表列出了MII每个数字代表的卡号行业。

卡号首位

适用的目录

0

ISO/TC 68 和其他行业使用

1

航空

2

航空和其他未来行业使用

3

运输、娱乐和金融财务

4

金融财务

5

金融财务

6

商业和金融财务

7

石油和其他未来行业使用

8

医疗、电信和其他未来行业使用

9

由本国标准机构分配

下表列出了,不同卡号对应的发行机构。因此“中国银联”发行的卡一定是62开头;而国内使用Visa信用卡的人士其卡号会是4开头,而使用万事达(Matercard)的人士卡号一般以51、52、53、54、55打头。

2.2. ●中间的位数是:个人账号标识(从卡号第七位开始)6-12位数字

中间位数由发卡行自定义,一般由6-12位数字组成。最多可以使用12位数字。

每个银行的个人账号标识规则有所不同。有的银行在这部分内容中会包含分行、支行、储蓄网点等代码信息。有得银行可能就没有这么详细,会使用自然流水顺序码。

2.3. ●最后一位位数是校验位

2.4. 
将卡号前面的数字采用Luhn算法计算出信用卡或者借记卡的最后一位数字。

3. 银行卡号校验 (Luhn算法)

4. LUHN公式

编辑

本词条缺少信息栏名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!

LUHN公式(LUHN formula)也叫模数10(modulus 10),它是简单的数学运算,用来验证信用卡的编号。几乎所有的主要的信用卡发行公司的卡都是用它,这里面包括American Express、Visa、Master Card、Discover和Diner's Club。

它最初是在二十世纪六十年代由一群数学家创造出来的,LUHN公式是公开的,任何人都可以使用。

4.1. 计算步骤

编辑

LUHN公式通过一些简单的数学运算用信用卡号计算出一个校验数,它出现在信用卡号的最后一位。下面是这个公式的三个步骤:

1. 从倒数(右边的)第二个数字开始,把下一个数乘二并加在一起。

2. 从右到左,把跳过的数加到第一步的结果里。如果第一步中一个数字乘二之后结果导致出现两位数(如7+7=14),那么按照第二步在把出现的数字(1和4)加到第二步中。

3. 从下个高位以零结尾的数减去第二步得到的结果。结果将和校验位一致。

LUHN公式(LUHN formula)可以在给借方授权的时候把卡号发送前确保信用卡的有效性。在加拿大,它用来验证个人保险号。它并不检查信用卡的其他信息,包括卡是否过期。[1]

5. 工具卡号判断银行

位数少于14的卡号基本是外资银行,或小银行。

***496748***        **     HSBC                               HSBCHKHHHKH

***430259***        **     HSBC                               HSBCHKHHHKH

***51878018***     **    Bank of East Asia Limited      BEASHKHHXXX

位数多于23的卡号大多是卡号包含字母或空格。

62270014 **** 0045 ***      CHINA CONSTRUCTION BANK **

601382700 **** 9077 **      BANK OF CHINA FOSHAN BRANCH **

如果是国内的主流银行(中、农、工、建、招、交等)基本都是基于16位或者19位的卡号。

来看看提现成功(clear_success)里面的卡有多少满足Luhn规则

5.1. 有效期

5.2. 银行归属地查询

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )

汉字名:艾提拉(艾龙),   EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

6. 参考资料

银行卡号编码规则.html

银行卡号编码规则_昕中的世界_新浪博客.html

Atiend

Atitit.会员卡(包括银行卡)api的设计的更多相关文章

  1. atitit.基于http json api 接口设计 最佳实践 总结o7

    atitit.基于http  json  api 接口设计 最佳实践 总结o7 1. 需求:::服务器and android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通参数 meth,p ...

  2. Atitit 信用卡与会员卡(包括银行卡)的发展之路

    Atitit 信用卡与会员卡(包括银行卡)的发展之路 实现跨机构卡片内金额的流动解决方案 1.1. 财务卡片本质上都是会员卡1 1.2. 卡片的发展阶段1 2. 实现跨机构卡片内金额的流动解决方案(加 ...

  3. Atitit.自定义存储引擎的接口设计 api 标准化 attilax 总结  mysql

    Atitit.自定义存储引擎的接口设计 api 标准化 attilax 总结  mysql 1. 图16.1:MySQL体系结构1 2. 16.7. 创建表create()虚拟函数:2 3. 16.8 ...

  4. Atitit.跨语言系统服务管理器api兼容设计

    Atitit.跨语言系统服务管理器api兼容设计 1. Common api,兼容sc ,service control??1 1.1. 服务创建,use sc1 1.2. 服务delete ,use ...

  5. API的设计与安全

    前后端分离是个浪潮,原来只有APP客户端会考虑这些,现在连Web都要考虑前后端分离 . 这里面不得不谈的就是API的设计和安全性,这些个问题不解决好,将会给服务器安全和性能带来很大威胁 . API的设 ...

  6. Atitit Atitit.软件兼容性原理----------API兼容 Qa7

    Atitit Atitit.软件兼容性原理----------API兼容 Qa7 1. 兼容性的重要性与反面教材1 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法 ...

  7. Atitit.加密算法ati Aes的框架设计

    Atitit.加密算法ati Aes的框架设计 版本进化 c:\1t\aesC47.java c:\1t\aes.java 增加了public static byte[] encrypt(byte[] ...

  8. Atitit.加密算法ati Aes的框架设计v2.2

    Atitit.加密算法ati Aes的框架设计v2.2 版本进化1 V2.2   add def decode key api1 v1版本1 Aes的历史2 Atitit.加密算法 des  aes  ...

  9. Web API接口设计经验总结

    在Web API接口的开发过程中,我们可能会碰到各种各样的问题,我在前面两篇随笔<Web API应用架构在Winform混合框架中的应用(1)>.<Web API应用架构在Winfo ...

随机推荐

  1. 高性能 CSS3 动画

    注:本文出自腾讯AlloyTeam的元彦,文章也可以在github上浏览.请尊重版权,转载请注明来源,多谢-- 高性能移动Web相较PC的场景需要考虑的因素也相对更多更复杂,我们总结为以下几点: 流量 ...

  2. 将 project.json 项目转换为 Visual Studio 2015 解决方案

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  3. Python :open文件操作,配合read()使用!

    python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...

  4. 《python核心编程》笔记——杂项

    python语句默认会给每一行添加一个换行符,只要在最后加一个逗号就能改变这种行为 若函数里没有return就自动返回None对象 PEP(python增强提案简称)http://python.org ...

  5. Core Audio(一)

    Core Audio APIs core audio apis是vista之后引入的,不使用与之前的windows版本:core audio apis提供访问endpoint devices,比如耳机 ...

  6. 网络流EK

    #include <iostream> #include <queue> #include <string.h> #define MAX 302 using nam ...

  7. JAVA设计模式--工厂方法模式

    工厂方法设计模式 抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关.是具体工厂角色必须实现的接口或者必须继承的父类.在java中它由抽象类或者接口来实现.具体工厂角色:它含有和具体业务逻辑有关 ...

  8. 使用printf输出各种格式的字符串( 转载)

    1. 原样输出字符串:    printf("%s", str); 2. 输出指定长度的字符串, 超长时不截断, 不足时右对齐:    printf("%Ns" ...

  9. Pair Project:电梯控制程序

    12061160刘垚鹏 & 12061166宋天舒 1.1结对编程的优缺点结对编程相对于个人编程有很多优点.首先,督促作用,在讨论过程中能够很快投入工作,为了不耽误对方时间,我们会尽快完成各自 ...

  10. .net(C#)访问Oracle数据库的几种免安装组件的对比

    Oracle 数据存取组件(ODAC) 库为Borland Delphi,C++ Builder 以及 Kylix提供了一些非可视化的组件.它们用来存取Oracle关系数据库系统.与BDE类似, OD ...