ISO8583银联报文规范分析

ISO8583银联报文规范

本篇文章参考了中国银联POS终端规范
现在我们有ISO8583报文如下(十六进制表示法):

60 00 03 00 00 60 31 00 31 07 30 02 00 30 20 04 C0 20 C0 98 11 00 00 00 00 00 00 00 00 01 00 03 49 02 10 00 12 30 62 25 82 21 12 99 63 01 5D 15 11 10 10 00 00 35 36 38 35 32 33 31 34 32 33 35 32 31 34 35 32 36 38 35 39 32 33 36 31 35 36 C6 24 83 4D 36 7E 9E 9E 20 00 00 00 00 00 00 00 00 13 22 00 00 08 00 05 00 36 37 41 32 32 39 39 41

报文工具

报文类型 = 【0200】
TPDU = 【6000030000】
MSGHEAD = 【603100310730】
F000.位图             = 【016】【302004C020C09811】
F003.交易处理码       = 【006】【000000】
F004.交易金额         = 【012】【000000000001】
F011.系统跟踪号       = 【006】【000349】
F022.服务点输入方式码 = 【003】【021】
F025.服务点条件码     = 【002】【00】
F026.服务点PIN获取码  = 【002】【12】
F035.第二磁道数据     = 【030】【62258221129963015D151110100000】
F041.受卡机终端标识码 = 【008】【56852314】
F042.受卡方标识码     = 【015】【235214526859236】
F049.交易货币代码     = 【003】【156】
F052.个人标识码数据   = 【016】【C624834D367E9E9E】
F053.安全控制信息     = 【016】【2000000000000000】
F060.自定义域         = 【013】【2200000800050】
F064.MAC              = 【008】【67A2299A】

第一步

POS终端上送POS中心的消息报文结构包括TPDU、报文头和应用数据三部分:
——TPDU说明:长度为10个字节,压缩时用BCD码表示为5个字节长度的数值。
——报文头说明:总长度为12字节,压缩时用BCD码表示为6个字节长度的数值。
——应用数据说明:一般长度都是4个字节,压缩时用BCD码表示为2个字节的长度的数值。

所以上述报文中前五个字节为TPDU,即60 00 03 00 00
报文头占用六个字节,即 60 31 00 31 07 30
应用数据占用2个字节,即 02 00 也就是"0200"
——0200金融类请求消息:
●  POS查询请求。
●  POS消费请求。
●  POS消费撤销请求。
●  POS预授权完成(请求)请求。
●  POS预授权完成撤销请求。
●  电子现金脱机消费请求。
●  分期付款消费请求。
●  分期付款消费撤销请求。
●  基于PBOC电子钱包/电子现金的IC圈存类交易请求。
●  磁条卡现金充值请求。

第二步

分析位图:

在这里插入图片描述
首先取第十四个字节,即0x30 ,转化为二进制为0011 0000,在该字节的第一位为0(从左往右)表示当前报文中只需包括64个域,也就是从当前字节开始连续8个字节为位图(包括当前字节),如要包括128个域,该位为1。

现在进入关键的位图分析,现在我们取到了表示位图的8个字节即30 20 04 C0 20 C0 98 11,转为二进制为

00110000 00100000 00000100 11000000 00100000 11000000 10011000 00010001

位图中为1的位置即代表相应的域,在上面的二进制位中从左往右有第3位、第4位、第11位、第22位、第25位、第26位、第35位、第41位、第42位、第49位、第52位、第53位、第60位、第64位。

下面开始这些域中的数据:

  • 3域为交易处理码,压缩成BCD码后占定长3个字节,我们从位图所占的8个字节后开始连续取3个字节,即 00 00 00,解压后即为“000000”,具体代表含义这里就不叙述了。

  • 4域为交易金额,压缩成BCD码后占定长6个字节,同理取6个字节,即00 00 00 00 00 01,也就是金额0.01元,具体转换参考银联规范。

  • 11域为受卡方系统跟踪号(流水号),压缩成BCD码占定长3个字节,同理取3个字节,即00 03 49,即000349。

  • 22域为服务点输入方式码,压缩成BCD码占定长2个字节,同理取2个字节,即02 10,由于22域本身只占3个字节,压缩时左靠,右补0,所以转换为“021”,具体含义不再叙述。

  • 25域为服务点条件码,压缩成BCD码占定长1个字节,同理取1个字节,即00,转换为“00”,“00”代表正常提交。

  • 26域为服务点PIN获取码,压缩成BCD码占定长1个字节,同理取1个字节,即12,转换为“12”,表示服务点设备所允许输入的个人密码明文的最大长度为12。

  • 35域由于不是定长,所以处理方法不同,先取一个字节,即30,转换为“30”,表示第二磁道的数据占用30个字节,取连续15个字节即62 25 82 21 12 99 63 01 5D 15 11 10 10 00 00,这里不对这串数据进行说明了。

  • 41域为受卡机终端标识码,占8个字节的定长域,取35 36 38 35 32 33 31 34。

  • 42域为受卡方标识码,占15个字节的定长域,取32 33 35 32 31 34 35 32 36 38 35 39 32 33 36。

  • 49域为交易货币代码,占3个字节的定长域,取31 35 36。

  • 52域为个人标识码数据,占8个字节的定长二进制数域,取C6 24 83 4D 36 7E 9E 9E。

  • 53域为安全控制信息,压缩成BCD码占8个字节定长域,取20 00 00 00 00 00 00 00。

  • 60域为自定义域,为不定长域,先取长度(压缩成BCD码占两个字节),即00 13,转换为13即占60域占13个字节,压缩成BCD码占7个字节,取22 00 00 08 00 05 00。

  • 64域为报文鉴别码,占定长8个字节,取最后八个字节36 37 41 32 32 39 39 41。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值