银联8583理解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交易时卡片与终端产生的数据按照一定规律组成一个数据包,这个规律即是8583规范。
该数据包被终端用来与银行系统通信,银行与银行之间的通信。
目前国内金融用的是银联8583规范,与ISO8583稍微有些出入。
它规定了报文结构,格式,内容以及数据元的位置和数据元的值。
一些概念:
1.报文:用于机构之间交换信息的数据元集合;
2.报文结构:按如下顺序排列
报文类型标识符| 一个或两个位元表| 数据元序列
3.报文类型标识符:四位数字型数据字段,1位2位表示报文类别,当它们都在1到8之间时,3/4位表示报文传输方式和功能
4.位元表:分为基本位元表和扩展位元表
基本位元表的01位取值1则表示扩展位元表存在,为0则表示基本位元表;
位元表结构如下:
基本位元表:
01 位元位置64
数据元
扩展位元表:
01 64 128
数据元
举例:
位元位置也叫位图
20 00 38 00 00 00 00 34
把它解开,排列一下
20 = 1010 0000
00 = 0000 0000
38 = 0011 1000
依次类推,得到一串数字
0010 0000 0000 0000 0011 1000 0000 0000 0000 0000 0000 0000 0000 0000 0011 0100然后从左到右数一下里头含有1的是那几位,上面的例子我们得到
3 19 20 21 59 60 62 ,这几位含有1。
也就是说接下来的报文包含有这几个域。
数据元的数据存放则是按顺序依次存放,查询时按照位图的位置将数据元的数据依次对应相应的域。
数据元格式为:长度+数据(该长度不包含长度字节,仅仅是数据的长度)
V AR:表示可变字段的长度
LL:表示长度小于100
LLL:表示长度小于1000
做一个简单的例子比如消费交易,需要上送交易类型,卡号等等,定义如下
卡号第2域LLV AR BCD 5309987876545342
交易类型第3域长度6 BCD 900000
金额第4域长度12 BCD 100分
时间第7域长度8 BCD 20030802
2磁道信息第35域LLV AR ASCII 123456
3磁道信息第36域LLLV AR BCD 123456001
商户号第41域LLVAR ASCII 98765432
现在开始打包,首先按照长度和类型把上面的数据处理一下
卡号165309987876545342
交易类型900000
金额000000000100
时间20030802
2磁道06313233343536
3磁道0009123456001
商户号083938373635343332
接下来按照域信息生成位图
因为有第2域,所以第二个位置是1,由第三域,所以第三个位置
是1,。
依此类推得到一串数字
0111 0010 0000 0000 0000 0000 0000 0000 0011 0000 1000 0000 0000 0000 0000 0000
转换过来,就是
72 00 00 00 30 80 00 00 这个就是BITMAP了
然后把上面的数据按照BITMAP+每个域的内容,依次排列
就得到这个包的内容了7200000030800000165309987876545342900000000000000100 20030802063132333435360009123456001083938373635343332
前头再加上TPDU和MSGID就是最后的数据包。