`

(转载)解析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

 

第一步

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域,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。

分享到:
评论

相关推荐

    iso8583实例解析银联报文(java)

    总结,"iso8583实例解析银联报文(java)"是一个基于Java的示例项目,旨在帮助开发者理解和处理银联标准下的ISO8583报文。通过这个实例,我们可以深入学习ISO8583协议的结构,掌握在Java中解析位图和字段的方法,这...

    ISO8583报文规范

    提供的Unix C源码可能是一个ISO8583库,用于创建、解析和处理ISO8583报文。这样的库通常包含解析和构建报文的函数,处理二进制位图、转换数据类型、计算校验和等功能。通过阅读和理解源码,开发者可以深入学习ISO...

    8583报文解析工具源码

    标题中的“8583报文解析工具源码”指的是一个专门用于解析ISO8583报文的软件工具,其源代码是基于Qt Creator这一跨平台的C++集成开发环境编写的。ISO8583是一种广泛应用于金融交易系统的报文格式标准,主要用于银行...

    iso 8583 报文解析与封装C代码

    在这个“iso 8583 报文解析与封装C代码”压缩包中,包含的文件“iso8583.c”和“iso8583.h”很可能是实现ISO 8583报文处理的C语言源代码和头文件。 1. ISO 8583报文结构 ISO 8583报文由多个字段组成,每个字段都有...

    iso8583 报文解析 8583精髓

    ### ISO8583报文解析精要 ISO8583标准是国际标准化组织(ISO)制定的一个用于银行及金融系统之间的数据交换协议。它主要用于信用卡、借记卡等支付交易的信息传输,并且在很多国家和地区被广泛采用。ISO8583协议的...

    银联iso8583简单解析实例(java)

    本文将深入探讨如何在Java环境中解析银联ISO8583报文,以及如何通过提供的代码示例`Iso8583Util.java`和`Helloworld.java`进行实践。 ISO8583协议定义了一个固定长度的报文结构,包含了多个字段,每个字段都有其...

    全面掌握ISO8583报文

    ### 全面掌握ISO8583报文:金融行业的数据传输标准 ISO8583报文协议作为金融行业中的一项重要标准,自其诞生以来便深刻影响着全球的支付系统。这一协议的设计初衷是为了标准化金融交易数据的传输格式,确保不同系统...

    8583报文解析框架Simple8583.zip

    BitMap是ISO8583报文的精髓所在,ISO8583报文支持64域和128域两种,但是并非每次请求都会将所有域都请求过去,BItMap就起到了标识哪些域是有效的请求域,接收方也会根据BitMap中约定的值对域进行解析。 那么...

    银联8583报文解析工具

    VB做的一个比较实用的小工具,对银联终端8583报文进行解析(详细到各TLV的解析),还额外增加了相关的辅助功能,计算mac,解析清算文件等

    8583报文及各域的详解

    8583报文是ISO8583国际标准的报文格式,由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。8583报文的前面一段为位图,用来确定包的字段域组成情况。位图是8583包的灵魂,它是打包解包确定字段域的关键...

    解析8583报文工具源码

    8583标准源于ISO 8729,其报文结构主要由多个字段组成,每个字段都有特定的标识符和数据类型。这些字段包括交易类型、发卡机构标识、商户标识、交易金额等关键信息。报文的每个字段都按照固定的位置和长度编码,使得...

    ISO8583接口的详细资料,相信介绍ISO8583报文结构

    ISO8583报文结构是指8583包的组成结构,包括位图、字段域和数据域三个部分。其中位图是8583包的灵魂,用于确定字段域的组成情况;字段域是对具体数据的描述,包括字段名称、数据类型、长度和其他属性;数据域是实际...

    ISO8583报文解包工具

    这个“ISO8583报文解包工具”是一个专门用来解析和理解这些报文的软件,它允许用户自定义每个域的定义,以适应不同的业务需求和特定的报文结构。 ISO8583报文由多个域组成,每个域都有其特定的含义和数据类型。例如...

    java发送ISO8583报文接口框架

    在Java环境中,这个框架使得开发人员能够方便地构建和解析符合ISO8583标准的报文,以与银行或其他金融机构进行安全、高效的数据交换。 在"pingAnBank"这个测试类中,实现了平安银行的支付接口。平安银行是中国知名...

    iso8583报文c 代码

    在C语言中实现ISO 8583报文处理是一个关键的技术挑战,因为涉及到对复杂数据结构的解析、编码和解码。 ISO 8583报文的核心在于其消息结构,由多个字段组成,每个字段都有自己的类型、长度和值。这些字段包括交易...

    8583报文解析程序

    《深入理解8583报文解析程序》 在金融交易系统中,ISO8583报文标准占据着至关重要的地位。它是一种国际通用的金融消息传输协议,广泛应用于银行间、银行卡组织与成员银行之间的信息交互。本文将围绕“8583报文解析...

    iso8583的解析

    在Java环境中,处理ISO8583报文通常需要特定的解析工具类,以便从接收到的数据中提取关键信息。 在ISO8583报文中,每个字段都有固定的位数,并且按照特定的顺序排列。报文通常分为固定部分和可变部分,固定部分包括...

    iso8583报文mac、pin计算方式

    支付,金融iso8583报文mac计算、pin计算

    一个自动解析ISO8583报文的小程序,支持自定义报文域长度和数据类型,以适应不同机构的8583报文.zip

    如果您下载了本程序,但是该程序存在问题无法运行,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追加额外费用的)。另外,您不会使用资源的话(这种情况不支持退款),也可以找我们帮助(需要...

Global site tag (gtag.js) - Google Analytics