本篇文章参考了中国银联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。

c#8583_解析ISO8583报文实例相关推荐

  1. java 传送解析8583报文_java发送ISO8583报文接口案例

    [实例简介] java发送ISO8583报文实现平安银行支付接口 [实例截图] [核心代码] pingAnBank └── pingAnBank ├── build.xml ├── client │  ...

  2. J8583CN解析ISO8583协议报文注意点

    最近在做POS接入涉及到如何正确解析ISO8583协议的问题,遇到了一些很讨厌的问题今天将他们总结一 下写在博客中,供大家参考. 1.  对于小白首先要了解什么是ISO8583协议,请参考该文章htt ...

  3. ISO8583报文工具类(组装和解析报文)

    很久没来csdn了.现在的工作地点在银行,妈的,不让上网啊. 写写博客其实是对自己知识的总结,这么长时间了,也该写点东西了.接触银行的项目,避免不了 遇上8583报文.具体介绍就不细讲了,这个网上一大 ...

  4. java发送iso8583报文接口框架,ISO8583报文工具类(组装和解析报文)

    package com.lsy.common.util; import java.io.FileInputStream; import java.io.UnsupportedEncodingExcep ...

  5. ISO8583报文格式解析

    我刚进入金融行业时,就知道了IS08583报文协议,我想可能我还没进入这个行业都已经听过了,可知ISO8583的影响力有多大了.最初刚接触它时,确实对其中的一些细节概念不是很清晰,对有些地方比较迷惑. ...

  6. ISO8583报文组装解析工具和定义器示例

    8583报文组装和解析工具类(Send8583Util),代码如下: import com.alibaba.fastjson.JSONObject; import org.apache.commons ...

  7. 浅谈128位ISO8583报文的组装和解析

    ISO8583报文的常用的几种方式 8583报文的组成样式 8583报文的组成样式 一般而言8583的报文组成各式都是16进制的字符编码组成的,当然也不排除存在ASCII的不规则特例,具体的需要根据不 ...

  8. c#8583_简单聊聊ISO8583报文

    网上应该有不少关于8583的文章,这个算是属于老生常谈了,但是要找一篇细致的,容易理解的可能还真不太好找,那我们今天就来简单的聊聊. 8583协议是基于ISO8583报文国际标准的包格式的通讯协议,8 ...

  9. 轻松掌握ISO8583报文协议

    我刚进入金融行业时,就知道了IS08583报文协议,我想可能我还没进入这个行业都已经听过了,可知ISO8583的影响力有多大了.最初刚接触它时,确实对其中的一些细节概念不是很清晰,对有些地方比较迷惑. ...

最新文章

  1. 天顶角Zenith方位角Azimuth
  2. mvvm command的使用案例
  3. 从源码分析DEARGUI之add_plot和add_scatter_series
  4. 你还不知道mysql中空值和null值的区别吗?
  5. auot lisp 选择集处理_离散量的计算机处理64_1Cvs
  6. 烂泥:为KVM虚拟机添加网卡
  7. 机器学习实战-集成学习-23
  8. netbeans7.4_NetBeans 7.2 beta:更快,更有用
  9. [代码]Delphi实现双击左CTRL键调用记事本
  10. Ubuntu16.04显卡驱动安装和Cuda安装
  11. CSS中Position定位属性的使用
  12. 用python写一个程序来验证每个数字的生成概率是否相同_Python实现简单生成验证码功能【基于random模块】...
  13. 如何远程配置DHCP服务器
  14. RoboMaster电机驱动
  15. 银行管理系统实例(C语言版)
  16. qqxml图片代码_QQxml卡片代码合集超大图
  17. 在CSDN年收入竟达五位数?----大学生技术自媒体成长之路
  18. 服务器防火墙部分指令
  19. 华为交换机ARP防网关冲突
  20. mysql字段是问号_Mysql数据库中文字段显示问号怎么解决?

热门文章

  1. 商业银行接口自动化测试结果分析方法与装置
  2. 产业合作打造中国云计算实践通途
  3. 成吉思汗大都会灯谜答题器
  4. xp锁定计算机快捷方式,XP系统怎么锁定界面快捷方式到任务栏
  5. 51nod 1153 选择子序列
  6. 2010年史上最简单的做母盘教程
  7. typroa md文件缩小行间距
  8. Photoshop CC Coloring Comic Characters Photoshop CC漫画人物着色教程 Pluralsight课程中文字幕
  9. 前端小游戏2048(一步步详解附带源代码,源码上传到csdn,可以免费下载)
  10. Angular 4 Http