转自:http://blog.sina.com.cn/s/blog_4c925dca010178pt.html
ISO8583报文在金融行业可谓是声名显赫,8583报文是一个国际标准的包格式,其重要性阿堂就不用多说了,网上有很多的介绍,不过对于一个从未接触过8383报文的新手来说,还是很有难度的。它主要是用来解决金融系统之间的报文交换的。本文适合有一定8583报文基础的网友阅读!阿堂目前对于8583报文也是略有认识,之所以写这篇文章,一来是为了作为学习笔记,二来是为了能给其它对8583报文的使用和测试想加深理解的网友提供一些帮助。
下面,阿堂就主要分享“消费”类型报文的测试和组8583报文的过程,说明一下,我这里是针对我们日常使用POS机系统来说的,这里主要是模拟的POS终端发向POSP系统的8583报文。其基本业务流程图如下所示
下面,阿堂是用的发包工具模拟的pos终端发8583报文到posp终端的过程
ok,通过上面的图示,网友们应该有了一个直观的认识了,下面阿堂就来详解上面的报文是如何生成了
007b600016000060220000000002007020048020c08811165477666265921222000000000000014959555556022000375477666265921222d25085060000012600000033333333333333333232323232323232323232323232323135361000000000000000000822000001001500000100100000103133394343433842
第一步:先要查看中国银联8583规范文档,确定消费类需要哪些域组成的
根据文档我们可以轻易的得到需要的域为2,3,4,11,22,25,35,41,42,49,53,60,64域
第二步:根据位图工具,得到相应域的位图,此位图数字在下面会用到
第三步根据 字节长度+TPDU+报文头+报文数据 这样的规则即可得到完整的 报文数据了
(说明,下述内容的取值长度及规则,请参考中国银联pos终端规范文档,网上有很多的文档可以自行下载)
(1) 字节长度
报文长度007b
如下是246个字节->123个字符->长度是123(10进制)->7b(16进制)->占用两个字节007b
600016000060220000000002007020048020c08811165477666265921222000000000000014959555556022000375477666265921222d25085060000012600000033333333333333333232323232323232323232323232323135361000000000000000000822000001001500000100100000103133394343433842
(2) TPDU(每个银行,对应的TPDU值各不相同,接入银行时,相应的银行会提供相应值的)
6000160000
(3) 报文头(12位)
60 22 0 0 000000
磁条卡金融支付类应用为:60
软件版本号 22
终端状态 0(正常交易状态)
处理要求 0(无处理要求)
保留使用 000000
(4) 消息类型
0200 (消费类型,0800是签到类型)
(5) 位图
7020048020C08811
(6) 2域
165477666265921222(16个字节,最大是19个字节) 主账号
N..19(LLVAR),2个字节的长度值+最大19个字节的主账号,
压缩时用BCD码表示的1个字节的长度值+用左靠BCD码表示的最大10个字节的主账号。
(7) 3域
000000 交易处理码
(8) 4域
000000014959 (149.59CNY 49域可以看出来)
(9) 11域
555556 (系统跟踪号 定长3个字节)
(10) 22域
0220 (服务点输入方式码 刷卡无PIN)
(11) 25域
00 (服务点条件码 00正常提交)
(12) 35域
375477666265921222d250850600000126000000
2磁道数据(Track 2 Data)
2个字节的长度值+最大37个字节的第二磁道数据(数字和分隔符)
压缩时用BCD码表示的1个字节的长度值+用左靠BCD码表示的最大19个字节的第二磁道数据
(13) 41域
受卡机终端标识码
3333333333333333 (33333333 BCD码)
(14) 42域
受卡方标识码
323232323232323232323232323232 (222222222222222 BCD码)
(ANS15,15个字节的定长域)
(15) 49域
交易货币代码
313536(AN3) (156 BCD码)
(16) 53域
安全控制信息
1000000000000000 (16 BCD个字节)
(17) 60域
60.1交易类型码 22:消费类型
60.2批次号 000001
长度:8个字节
000822000001
压缩时用右靠BCD码表示的2个字节的长度值+用左靠BCD码表示的最大7个字节的数据
(18) 64域
报文鉴别码(Message Authentication Code) MAC
B64,8个字节的定长域
3133394343433842