ISO8583报文手工拆解

发布时间:2020-05-23 16:59:16 作者:Linux_star
来源:网络 阅读:4152

                     ISO8583报文手工拆解

  8583报文大部分情况下用在POS终端与后台收单系统的数据交换,一般情况下一段完整的报文由以下几个部分组成:

  ——————————————————————————————————

       长度                         报文头                    8583数据

    ——————————————————————————————————

 长度部分一般两个字节,表示报文的总长度。(“报文头”+“数据”,部分的长度)

TPDU决定了终端与系统之间的网络协议。TPDU是一个10位的数字。

实际传输的报文,有些用ASCII码表示,有些用BCD码表示。

下面来段简单的报文,我给大家详细的解析一下(根据中国银联POS终端规范)

   ——————————————————————————————————

    005f600003000200302044c020c08810210009000000000001005018998802100006

    377689200010172645673d130820147800000000303130303030313230313130303

    030303130303030303131353626000000000000000011260001100000

   ——————————————————————————————————

<00 5f>

报文总长度 95字节

<60 00 03 00 00>

TPDU

<02 00>

这个是信息类型(MTI),是一个四位的数字,这里为&ldquo;0200&rdquo;(请求)

传输时用BCD码表示即为&ldquo;02h 00h&rdquo;,  每位都有它的意义

第一位:8583 version number

第二位:message class

第三位:message sub-class

第四位:transction originator

下面开始位图的详细解释:

<30 20 44 c0 20 c0 88 10>

bitmap域, 指示哪些域的存在    位图包括基本位图和扩展位图

位图利用BCD码分析。把BCD码的那一位置 &ldquo;1&rdquo;,就表示有哪些域。

解析位图如下:

0011000000100000010001001100000000100000110000001000100000010000

这个你就自己数的看吧。解析出来的域有:3,4,11,18,22,25,26,35,41,42,49,53,60。

接下来就是对应每个域的属性,开始对应相应的数据。

<21 00 09>

field 3, 交易处理码,n6, 定长, 用3个字节的BCD码表示。

<00 00 00 00 00 01>

field 4, 交易金额, n12, 定长, 用6个字节BCD码表示,这里金额是0.01元

若为人民币则交易金额的单位是人民币的分。

<00 50 18>

field 11, 流水号, n6, 定长, 用3字节的BCD码表示, 流水号为&ldquo;005018&rdquo;。

<99 88>

field 18, 商户类型,n4, 定长,用2字节的BCD码表示。 (商户类型代码行业查询)

<02 1>

field 22, 服务点输入方式, n3, 定长, 在服务终端定义PIN和PAN的输入方式。

<00>

field 25, 服务点条件代码, n2, 定长, 00表示正常交易

<06>

field 26, 服务点PIN获取码,n2,定长,该域描述了服务点设备所允许输入的个人密码明文的最大长度。 

<37 76 89 20 00 10 17 26 45 67 3d 13 08 20 14 78 00 00 00 00>

field 35, 二磁道数据, z..37(LLVAR), 第一个字节表示域的长度(37)

后面19个字节BCD码表示磁道数据,基数位补0或者跳过。

<30 31 30 30 30 30 31 32>

field 41, 终端号, ans8, 定长,ASCII码表示;这里终端号为:&ldquo;01000012&rdquo;。

<30 31 31 30 30 30 30 30 31 30 30 30 30 30 31>

field 42, 商户号,ans15, 定长, ASCII码表示;这里的商户号为:&ldquo;011000001000001&rdquo;

<31 35 36>

field 49, 货币代码,ans3,定长, ASCII码表示;人民币的代码为:&ldquo;156&rdquo;。

<26 00 00 00 00 00 00 00>

field 53, 安全控制信息,n16, 有安全要求时必选

<00 11 26 00 01 10 00 00>

field 60,自定义域, an..011(LLLVAR);两个字节表示长度(00 11),左补齐&ldquo;0&rdquo;。

 

ISO8583报文拆解代码见下期。

推荐阅读:
  1. OSPF报文详解
  2. http 请求报文和应答报文

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

更多

上一篇:css3中的重复渐变是什么?如何使用?

下一篇:java中exception和Error的不同

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》