今天主要是讲解下银联8583报文规范的一些知识。
本文适合从事银联收单,pos行业,金融行业开发从业者阅读。
一.什么是8583报文规范?
1.8583全称:
ISO8583包(简称8583包)是一个国际标准的包格式,最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。
2.8583位图:
8583包前面一段为位图,用来确定包的字段域组成情况。
其中位图是8583包的灵魂,它是打包解包确定字段域的关键, 而了解每个字段域的属性则是填写数据的基础。
3.8583数据域:
8583的报文总共有64个域,每个域都有各自不同的含义和作用,一些自定义域里面还可以分成其他数据域。
一条完整的8583报文格式可以看如下图所示:
简单的讲:
8583报文=tpdu(这个是固定的,报文接收放提供)+报文头+数据域
其中,位图包含在数据域当中,指明改数据域是由什么内容组成。
底下这段16机制的数据是位图元素:
702404C03CC09939
根据银联给我们的规定:
位图位置:1 域(在数据域的编号为1的域中)
格式:定长
类型:B16(二进制16位,16*8=128bit)
描述:
如将位图的第一位设为'1',表示使用扩展位图(128个域),否则表示只使用基本位图(64个域)。
如使用某数据域,应在位图中将相应的位设位'1',如使用41域,需将位图的41位设为'1'。
选用条件:如使用65到128域,需设位图域第一位为'1'
根据上面提示可以把位元素 转化如下:
| 2 || 3 || 4 || 11 || 14 || 22 ||25 || 26 || 35 || 36 || 37 || 38 || 41 || 42 || 49 || 52 || 53 || 56 || 59 || 60 || 61 || 64 |
可以从上面就可以得到改数据域是由哪些域组成。
4.详细数据域
请参考销售点终端(POS)应用规范(QCUP009.X-2015)
二.详细例子
临时找了个某厂商对接文档报文,作为例子讲解下如何手动进行解析8583报文内容:
余额查询:
内容描述比较多,我把55域给截掉。
原报文:
01 08 60 00 03 00 00 61 32 00 00 00 00 02 00 60 24 06 c0 20 c0 9a 11 16 e5 c5 7a f2 c1 b6 b2 7a 91 78 53 bd 46 12 48 6d 31 00 00 00 00 76 23 08 07 10 00 01 00 12 24 06 f4 9b 97 e5 bf 2a 81 a3 8f ed 27 6d 7a 12 4d e8 c7 09 a3 1a e5 f3 01 30 30 30 30 30 30 30 39 38 35 30 32 39 30 30 35 33 31 31 31 39 36 32 31 35 36 aa a7 71 b4 4a 71 a6 a1 26 00 00 00 00 00 00 00 01 23 9f 26 08 02 25 0b c9 9f c9 24 0d 9f 27 01 80 9f 10 13 07 01 01 03 a0 00 00 01 0a 01 00 00 00 00 00 f4 9c d5 f5 9f 37 04 a7 1b cb 45 9f 36 02 03 bc 95 05 00 00 00 00 00 9a 03 18 02 01 9c 01 31 9f 02 06 00 00 00 00 00 00 5f 2a 02 01 56 82 02 7c 00 9f 1a 02 01 56 9f 03 06 00 00 00 00 00 00 9f 33 03 e0 e1 c8 9f 34 03 00 00 00 9f 35 01 22 9f 1e 08 31 31 36 30 39 30 30 36 00 19 01 00 00 03 00 06 00 00 00 00 34 39 41 41 33 32 45 39
根据8583的规范:
01 08 60 00 03 00 00 61 32 00 00 00 00 报文头
02 00 消息类型(0)
60 24 06 c0 20 c0 9a 11 位元素
解析后的内容
位图:
01100000 00100100 00000110 11000000 00100000 11000000 10011010 00010001
分别对应:
| 2 || 3 || 11 || 14 || 22 || 23 || 25 || 26 || 35 || 41 || 42 || 49 || 52 || 53 || 55 || 60 || 64 |
总共存在以上域内容
16 e5 c5 7a f2 c1 b6 b2 7a 91 78 53 bd 46 12 48 6d 2域加密后的卡号,前面16为长度
31 00 00 3域处理码,上图所指31xxxx
00 00 76 11域POS终端交易流水号
23 08 14域卡的有效期,这个域是卡片信息存在时出现
07 1 22域服务点输入方式码,指密码的输入方式
00 00 1 23域卡片序列号,出现方式同14域
00 25域固定00
12 26域内容,当22域指明PIN可输入且持卡人输入了PIN
24 35域二磁道加密数据长度24
06 f4 9b 97 e5 bf 2a 81 a3 8f ed 27 6d 7a 12 4d e8 c7 09 a3 1a e5 f3 01 35域数据
30 30 30 30 30 30 30 39 41域8位ASCII码即:00000009,pos终端代码
38 35 30 32 39 30 30 35 33 31 31 31 39 36 32
42域商户代码,15位ASCII码即:850290053111962
31 35 36 49域货币代码,RMB代码156
aa a7 71 b4 4a 71 a6 a1 52域加密后的密码
26 00 00 00 00 00 00 00 53域安全信息
01 23 9f 26 08 02 25 0b c9 9f c9 24 0d 9f 27 01 80 9f 10 13 07 01 01 03 a0 00 00 01 0a 01 00 00 00 00 00 f4 9c d5 f5 9f 37 04 a7 1b cb 45 9f 36 02 03 bc 95 05 00 00 00 00 00 9a 03 18 02 01 9c 01 31 9f 02 06 00 00 00 00 00 00 5f 2a 02 01 56 82 02 7c 00 9f 1a 02 01 56 9f 03 06 00 00 00 00 00 00 9f 33 03 e0 e1 c8 9f 34 03 00 00 00 9f 35 01 22 9f 1e 08 31 31 36 30 39 30 30 36 00
以上55域IC参数
19 01 00 00 03 00 06 00 00 00 00 60域数据,前面的19为长度
34 39 41 41 33 32 45 39 64域mac校验值
三.结束
以上解析的例子不是银联标准规范,而是其他第三方牌照公司对接文档的例子,银联规范的内容大体和上面相同。
相关8583具体内容请查看文档:销售点终端(POS)应用规范(QCUP009.X-2015)
这是一份归纳文档,如有不足,请见谅