8583协议理解

ISO8583报文(简称8583包)又称8583报文是一个国际标准的包格式,最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。

8583包前面一段为位图,用来确定包的字段域组成情况。参考文档

其中位图是8583包的灵魂,它是打包解包确定字段域的关键,而了解每个字段域的属性则是填写数据的基础。在POS机的开发上时经常要用到,例如回头客会员管理系统在POS机上的应用就是采用8583报文。

报文的类型有很多种,比如:sale,reversal,settlement等等,不同的类型组包也是不一样的, 下面是“消费”类型报文的测试和组8583报文的过程,针对我们日常使用POS机系统来说的,这里主要是模拟的POS终端发向POSP系统的8583报文。其基本业务流程图如下所示

基础知识:

1byte = 8bit

1byte = 2个16进制数

2个字节=1个字符

BCD码:用4位二进制数来表示1位十进制数中的0~9这10个数码,即1bcd码=4bit

报文结构:

TPDU头 =  ID(60H) + 目的地址(N4) + 源地址(N4),长度为10字节,压缩时用BCD码表示为5个字节长度的数值。

 

报文头 = 应用类别定义(N2 )+软件总版本号(N2) + 终端状态(N1) + 处理要求 (N1)+ 软件分版本号(N6),总长度为12字节,压缩时用BCD码表示为6个字节长度的数值。

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

POS终端上送POS中心的消息报文结构包括TPDU、报文头和应用数据三部分:

16进制报文:

007b 6000160000 602200000000 0200 7020048020c08811

600016000060220000000002007020048020c08811165477666265921222000000000000014959555556022000375477666265921222d25085060000012600000033333333333333333232323232323232323232323232323135361000000000000000000822000001001500000100100000103133394343433842

 

青色背景:报文长度 007b  如上是246个字节->123个字符->长度是123(10进制)->7b(16进制)->占用两个字节007b

 

黄色背景:TUDU头 6000160000

 

红色背景:报文头 602200000000

磁条卡金融支付类应用为:60

软件版本号              22

终端状态                0(正常交易状态)

处理要求                0(无处理要求)

保留使用                000000

 

灰色背景:消息类型 0200

 

绿色背景:bitmap位图,转成bit显示, 7020048020c08811

根据文档我们可以轻易的得到需要的域为2,3,4,11,22,25,35,41,42,49,53,60,64域

 

(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

转载于:https://www.cnblogs.com/zhengweifang/p/11550205.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值