Atitit.会员卡(包括银行卡)api的设计
Atitit.会员卡(包括银行卡)api的设计
2.1. ●前六位是:发行者标识代码 Issuer Identification Number (IIN)。1
2.2. ●中间的位数是:个人账号标识(从卡号第七位开始)6-12位数字2
2.4. 将卡号前面的数字采用Luhn算法计算出信用卡或者借记卡的最后一位数字。2
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的设计的更多相关文章
- atitit.基于http json api 接口设计 最佳实践 总结o7
atitit.基于http json api 接口设计 最佳实践 总结o7 1. 需求:::服务器and android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通参数 meth,p ...
- Atitit 信用卡与会员卡(包括银行卡)的发展之路
Atitit 信用卡与会员卡(包括银行卡)的发展之路 实现跨机构卡片内金额的流动解决方案 1.1. 财务卡片本质上都是会员卡1 1.2. 卡片的发展阶段1 2. 实现跨机构卡片内金额的流动解决方案(加 ...
- Atitit.自定义存储引擎的接口设计 api 标准化 attilax 总结 mysql
Atitit.自定义存储引擎的接口设计 api 标准化 attilax 总结 mysql 1. 图16.1:MySQL体系结构1 2. 16.7. 创建表create()虚拟函数:2 3. 16.8 ...
- Atitit.跨语言系统服务管理器api兼容设计
Atitit.跨语言系统服务管理器api兼容设计 1. Common api,兼容sc ,service control??1 1.1. 服务创建,use sc1 1.2. 服务delete ,use ...
- API的设计与安全
前后端分离是个浪潮,原来只有APP客户端会考虑这些,现在连Web都要考虑前后端分离 . 这里面不得不谈的就是API的设计和安全性,这些个问题不解决好,将会给服务器安全和性能带来很大威胁 . API的设 ...
- Atitit Atitit.软件兼容性原理----------API兼容 Qa7
Atitit Atitit.软件兼容性原理----------API兼容 Qa7 1. 兼容性的重要性与反面教材1 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法 ...
- Atitit.加密算法ati Aes的框架设计
Atitit.加密算法ati Aes的框架设计 版本进化 c:\1t\aesC47.java c:\1t\aes.java 增加了public static byte[] encrypt(byte[] ...
- 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 ...
- Web API接口设计经验总结
在Web API接口的开发过程中,我们可能会碰到各种各样的问题,我在前面两篇随笔<Web API应用架构在Winform混合框架中的应用(1)>.<Web API应用架构在Winfo ...
随机推荐
- 计算机网路之动态NAT配置
配置路由端口的ip地址与打开(省略) 配置路由协议 router eigrp 100 network 211.1.1.0(网络号) 0.0.0.255(通配子掩) network 192.168.1. ...
- MySQL 分区表
转载自MySQL 分区表 今天统计数据的时候发现一张表使用了表分区,借此机会记录一下. 1. 什么是表分区? 表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分.从逻辑上看, ...
- 猜字符游戏之java
package days06; //需求......,问题,为什么要用do{}while???import java.util.Scanner;public class RepeatOfGussing ...
- INotifyPropertyChanged接口的PropertyChanged 事件
INotifyPropertyChanged 接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知. 例如,考虑一个带有名为 FirstName 属性的 Person 对象. 若要提供 ...
- 解决Android SDK Manager更新、下载速度慢
hosts文件里面原来的内容不做修改,只是添加内容 方法/步骤 先看看如何加快更新速度,再说如何更新. 首先更新host文件,如图,打开目录 C:\Windows\System32\drivers\e ...
- 修改centos启动项
centos7下修改启动项在路径/etc/grub.d/文件路径下,修改完成之后需要运行命令 grub2-mkconfig --output=/boot/grub2/grub.cfg
- Python 6 —— 异常
Python 6 —— 异常 异常分类 AttributeError:调用不存在的方法 EOFError:遇到文件末尾引发异常 ImportError:导入模块引发异常 IndexError:列表越界 ...
- Python socket (多线程)
Server 端 code import SocketServer class MyTCPHandler(SocketServer.BaseRequestHandler): ""& ...
- hdu 5106 组合数学+找规律
http://acm.hdu.edu.cn/showproblem.php?pid=5106 给定n和r,要求算出[0,r)之间所有n-onebit数的和,n-onebit数是所有数位中1的个数. 对 ...
- Java日期格式化及其使用例子收集
1 SimpleDateFormat担当重任,怎样格式化都行 import java.util.Date; import java.text.SimpleDateFormat; public clas ...