谈谈8583报文的使用及测试
转自: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