1报文格式定义
POS终端上送POS中心的消息报文结构包括TPDU、报文头和应用数据三部分:
—— TPDU说明:长度为10个字节, 压缩时用BCD码表示为5个字节长度的数值。
—— 报文头说明:总长度为12字节,压缩时用BCD码表示为6个字节长度的数值。
在POS上送的请求/通知报文中,该数值由POS终端应用程序在打包上送时根据POS终端参数和当前状态填入应用类别、软件总版本号、终端状态和软件分版本号(具体指各厂商的程序版本号),用于POS中心根据数值进行相应的处理。
在POS中心返回的应答报文中,由POS中心填入处理要求,其他域保持原值返回,POS将根据收到报文头中的处理要求进行相应处理。
2 看懂8583报文需要知道的概念
BCD码:用4位二进制数来表示1位十进制数中的0~9这10个数码。举个列子,’0x03 0x02’的BCD码表示为0X32,将前一个的低四位转移到后一个的高四位,具体实现会单独开一章。这里知道如何用即可。
3实例报文解析
这里举个签到报文的例子。原始报文: 00 3B 60 00 06 00 00 60 22 00 00 00 00 08 00 00 20 00 00 00 C0 00 12 00 12 47 35 38 44 30 31 31 31 35 38 38 37 35 38 44 30 34 38 31 36 35 35 35 35 00 11 00 00 00 01 00 30 00 02 30 31
拿到原始报文后我们来拆分一下。根据上面的报文格式定义,我们先拆分出来TPDU和报文头:TPDU占5个字节,报文头占6个字节,还有报文的前两个字节是报文长度,那么:
报文长度:00 3B=59个字节
TPDU:60 00 06 00 00
Header:60 22 00 00 00 00
剩下的就是ISO8538的内容。看下签到报文内容:
重要的是找到位图信息,
消息头2个字节:08 00
位图8个字节:00 20 00 00 00 C0 00 12
用位图分析工具分析出域的信息:
从图上看域是11 41 42 60 63,到了这里就去看下规范中的域信息定义。
11域:00 12 47
41域:35 38 44 30 31 31 31 35
42域:38 38 37 35 38 44 30 34 38 31 36 35 35 35 35
60域:00 11 00 00 00 01 00 30——长度是00 11 值是00 00 00 01 00 30
63域:00 02 30 31——长度是0002 值是30 31
如下图:
如有什么地方不正确欢迎指出,共同学习