8583报文举例解读及推荐阅读

版权声明:好好学习,天天向上。青春飞扬,IT领航! https://blog.csdn.net/qq_28898309/article/details/82890770

一、推荐阅读

https://www.cnblogs.com/fenglan/p/6088690.html

这篇博客生动形象的解释了8583报文,首先推荐给之前一点都不了解8583报文的同学。

然后参照了下面博客,尝试自己理解

https://blog.csdn.net/cbacq/article/details/51495593

若阅读了以上篇博客,还有不懂的,再来看看本文,看能否有一些收获。

若还有不懂的,则需要你来补充了。

 

二、一个完整的8583报文

02 00 70 20 00 00 20 C0 82 00 19 06 20 51 32 00 00 00 02 61 20 60 00 00 00 00 00 02 00 00 00 00 73 37 06 20 51 32 00 00 00 02 61 20 d1 91 12 01 00 00 00 00 00 30 30 30 30 31 31 31 31 31 30 32 32 35 30 31 35 33 31 31 31 31 31 31 01 56 00 44 9f 26 08 92 b6 ae 9a 9b 10 2e d6 9f 27 01 80 9f 10 13 07 01 01 03 a0 a0 10 01 0a 01 00 00 00 10 37 51 3a 22 be

 

三、报文结构

 

8583报文=信息类型域+位图域+报文数据域

 

前面10个字节的BCD码(也就是20个BCD码,亦是20个数字)表示报头,在上面报文中报头是<02 00 70 20 00 00 20 C0 82 00>

其中前面四个数字表示 信息类型(MTI),上面报文的信息类型是<02 00>

后面的16个BCD码为 位图域。上面报文的信息类型是<70 20 00 00 20 C0 82 00>

后面N个数字表示报文数据

 

1、信息类型<02 00>

其中每位数字都有他的含义。不做翻译

第一位:8583 version number

第二位:message class

第三位:message sub-class

第四位:transaction originator

2、位图域<70 20 00 00 20 C0 82 00>

开头不为1,则表示64位的位图。

将上面的位图转换成二进制,为:

111000000100000000000000000000000100000110000001000000000000000

不足64位,前面补0,为:

0111000000100000000000000000000000100000110000001000000000000000

现在看是数了,能够看出2、3、4、11、 35、 41、 42、 49这些位置是1.则表示在8583报文中,的2、3、4、11、 35、 41、 42、 49域是传输了数据的。

3、报文数据域

在解读数据域之前,你应该先了解报文的数据类型和代表符

 

四、8583报文的相关知识

 

位:二进制中,一个0或1,表示位

Bcd码:四个位表示一个bcd码(可以理解成八进制数中1位)

字节:八个位表示个字节(可以理解成十六进制数中1位)

 

N..x 代表数字类型 x代表位数  ..代表变长,若x为技术,则自动补0,凑足一个bcd码

N4:4位定长数字

N6:6位定长数字

N..6:6位变长数字

 

AN..x AN代表数字或字母,用ANSCII码解析,;x代表位数; ..代表变长

AN4:4位定长数字或字符

AN6:6位定长数字或字符

AN..6:6位变长数字或字符

 

ANS 代表数字、字母或特殊字符,用ANSCII码解析

ANS4:4位定长数字或字符、特殊字符

ANS6:6位定长数字或字符、特殊字符

ANS..6:6位变长数字或字符、特殊字符

 

 五、举例解读

此时我们需要找一份8583报文的域列表来对照着解读了

可以参照百度百科:

https://baike.baidu.com/item/8583%E5%8D%8F%E8%AE%AE/5754381?fr=aladdin#4

https://baike.baidu.com/item/8583协议/5754381?fr=aladdin#5

接下来我们分别找到百度百科里,2、3、4、11、 35、 41、 42、 49的说明。

 

举个例,11域

百度百科里域的说明:

Bit11系统跟踪号(Systems Trace Audit Number)

位图位置:11

格式:定长

类型:N6

结合我们的报文<00 50 18>

field 11, 流水号, n6, 定长, 用6个BCD码(即3字节的BCD码)表示, 流水号为“005018”。

 

举个例,42域

百度百科里域的说明:

域42 受卡方标识码

变量属性

ans15,15位定长的字母、数字和特殊字符

域描述:受卡方的标识码,即商户代码。

结合我们的报文<30 31 31 30 30 30 30 30 31 30 30 30 30 30 31>

field 42, 商户号,ans15, 定长, ASCII码表示;这里的商户号为:“011000001000001”

这里30用ascii码解读就是0;31用ascii码解读就是1;(自己找一张ascii码对照表解读)

 

百度百科里域的说明:

Bit35二磁道数据(Track 2 Data)

位图位置:35

格式:LLVAR

类型:Z..37

结合我们的报文 <37 76 89 20 00 10 17 26 45 67 3d 13 08 20 14 78 00 00 00 00>

field 35, 二磁道数据, z..37(LLVAR), 第一个字节表示域的长度(37)。35域是个自定义域。

 

 z..37(LLVAR)  表示37变长字符. llvar表示用几位数字来表示后面数据的长度。一个L表示以为数此处有两个L,表示有该域的前两位用来表示数据的长度。若有三个L 则应该前面补0,用四位数表示数据的长度,若有四个L,自然也是用四位数字表示数据长度

如z..130(LLLVAR)  <01 30 31 31 30 30 30 30 30 31 30 30 30 30 30 31 ... ...>,则前面四位0130表示数据长度,后面有130位表示数据内容

 

 

猜你喜欢

转载自blog.csdn.net/qq_28898309/article/details/82890770
今日推荐