8583报文

8583报文背景知识,来源与应用

资料

8583设计原理参考

轻松掌握ISO8583报文协议

8583实例解析(我认为有部分失误,标记为ASN/AS的字段,实际上是ASIC码,而不是BCD码)

8583报文的使用和解析

8583字段文档下载

POS应用规范(QCUP009.1-2014).pdf 百度网盘 ,提取码 waff

银联常用8583报文域说明--个人整理20160322

8583报文详解

一些预备知识

进制转换

2进制转8421BCD码

2进制转十进制,十进制再转成8421BCD码

例如  1000 1000(2进制)   136(十进制)  01H 36H(16进制BCD)

2进制转16进制

首先补足位数为4的倍数,小数点左边,在左边补0,小数部分,在右边补零,然后每四位合并为1位16进制数(0-f)

例如1000 0100 0010 0001.0100 (2进制) 8421.4H(16进制,H后缀表示16进制,0x前缀也表示16进制)

2进制转ASCII码

先转十进制,再根据十进制字符转对应的ASCII码,

例如:0110 0001 0002(2进制) 612(十进制)  54 49 50(ASCII)

文档中字段说明

Ax    A..x,如果x为奇数,则右靠补零,凑足偶一个BCD码

A代表用ASCII码表示,否则用正常2进制

A8 8字节定长ASCII码

A..8最长8字节的变长ASCII码

报文中16进制,BCD码,ASIC码的使用

放在报文前头的长度信息,一般是正常16进制表示长度,报文内容需要查询文档,数字域一般为压缩BCD码(长度字段也是数字域),数据标记带A开头的,一般为ASIC码

自己动手解析报文

解析报文,这里推荐资料来源2中的描述

报文长度(2字节)+TPDU(5字节)+报文头(6字节)+域数据(指令码(0域 2字节 消息类型)+位图(8字节)+其他域数据

这里采用资料来源2中的报文,按照上面的组成,开始解析

007b600016000060220000000002007020048020c08811165477666265921222000000000000014959555556022000375477666265921222d25085060000012600000033333333333333333232323232323232323232323232323135361000000000000000000822000001001500000100100000103133394343433842

007b

报文长度 16进制

007b(16进制)=7*16^1+b*16^0=123

报文长度取123字节

按照上面的报文构成,2+123=125字节.对整个报文长度计算长度,125字节,长度验证符合.

6000160000

TPDU头,5个字节

602200000000

报文头,6个字节

0200

0域指令码,2字节

查询文档P87,消息类型,可以看到0200支持的交易

7020048020c08811

主位图信息8字节

转换为二进制

0111 0000 0010 0000 0000

0100 1000 0000 0010 0000

1100 0000 1000 1000 0001

0001

结果域2,3,4,11,22,25,35,41,42,49,53,60,64有数据存在

165477666265921222

域2 主账号 
N..19(LLVAR),BCD表示,一个字节长度+最长10个字节左靠BCD码;

先取长度字节16,再按长度取8字节(16压缩为8字节)5477666265921222

000000

域3 交易处理码

N6 定长6个字节,传输时压缩为3字节BCD码
,具体含义需要查询文档P91

000000014959

域4 交易金额

N12 定长12字节,传输时压缩为6字节BCD码

币种需要查询49域,这里是人民币,拆线呢文档,代表金额149.59元

555556

域11 受卡方系统跟踪号

N6 定长6字节,传输压缩3字节BCD码

0220

域22 服务点输入方式码

N4 定长4个字节,传输压缩2个字节BCD码

查询文档,0220代表磁条交易不含pin

00

域25 服务点条件码

N2 定长2个字节,传输压缩1个字节BCD码

查询文档,00代表正常提交

375477666265921222d250 850600000126000000

域35 2磁道数据

Z..37(LLVAR)2个字节长度值,最大37字节变长数据 传输压缩1个字节长度+最大19字节左靠BCD码

33333333 33333333

域41 受卡机终端标识码

ANS8 8位ASCII码

ASCII码转字符表示 3333 3333

32323232 32323232 32323232 323232

域42 受卡方标识码

ANS15 15位ASCII码

字符表示 2222 2222 2222 222

313536 

域49 交易货币代码

AN3 3位ASCII码

人民币代码156

10000000 00000000 

域53 安全控制信息

N16 16字节定长信息,传输压缩8字节BCD码

0008 22000001

域60 自定义域

N..17(LLLVAR) 3个字节表示长度,最大17个字节的数字域.传输压缩为2字节右靠BCD码+最大9字节的左靠BCD码

长度值8,具体含义查询文档

60.1 N2  22 消费/冲正

60.2 N6 000001 批次号

0015 0000 0100 1000 0010 

域61 原始信息域(位图中没有,但是实际上在60和64域中有一段数据,没有对应的信息,这里我只能牵强附会,认为实际上是61域数据,位图在61位应该置1)

N..029(LLLVAR) 3字节长度+最长29字节的数字 压缩传输时,右靠2字节BCD码+左靠最大15字节BCD码表示

61.1原始交易批次号 N6 000 001

61.2 原始交易pos流水号 N6 001 000

61.3 原始交易时间 N4 0010

31333943 43433842

域64 报文鉴别码  MAC

B64 8个字节的定长域

报文来源正确性鉴别码

每次信息传输,都要重新计算MAC值,以鉴别信息在传送中是否被篡改

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值