iso8583报文解析

1 8583报文数据类型

整个报文内容包括:报文长度+TPDU+报文头+交易数据。上一章解释了报文长度、TPDU和报文头信息。这里我们详细说下交易数据部分。在这之前需要简单介绍下报文中的数据类 
这里写图片描述 
举个例子:变量a类型是N4,那么表示a是最多4个有效数字填充,如果内容不够4位,那么用0左边填充。如a=’\0x01’,那么实际上填充的内容是:“\0x00 \0x00 \0x00 \0x01”(这里抛开BCD先)。

2 8583消息类型 
消息类型是在银联规范中已经规定给你,表示该报文的交易类型,通俗说就是“你是干啥的”。比如0800表示签到,0200表示消费。 
N4, 4个字节的定长数字字符域。压缩时用BCD码表示的2个字节的定长域。十六进制即:0x08 0x00。关于BCD上一章简单介绍过,后面会开一张专门介绍下并附带算法。

3 8583位图 
位图在整个报文中占8个字节,位图的作用就是分析出来该报文有那些域参与。网上有专门的位图解析工具。原理比较简单,8个字节就是8*8=64个bit位,也就是代表64个域。如果哪个bit位为1,则表示该报文中该域是存在数据的,否则表示该域为空。还是拿签单报文举例: 
这里写图片描述 
位图是00 20 00 00 00 C0 00 12。用位图工具可以看到域信息是:11 41 42 60 63。

4 域解析 
那么就看位图以后的数据: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。 
我们先去银联规范中查看11域介绍: 
这里写图片描述 
看图,上面已经表明占3个字节,那么11域内容是: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。那么再看下41域定义: 
这里写图片描述 
占8个字节,那么从剩下的报文内容中拿取8位:35 38 44 30 31 31 31 35 38。依次42域: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。看60域定义: 
这里写图片描述 
2个字节表示长度:00 11,这里是BCD之前的长度信息,那么如果BCD后则是(11+1)/2=6,所以数6个字节:00 11 00 00 00 01 00 30。63域一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值