1.ISO8583简介
8583协议是基于ISO8583报文国际标准的包格式的通讯协议,8583包最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。8583包前面一段为位图,用来确定包的字段域组成情况。其中位图是8583包的灵魂,它是打包解包确定字段域的关键, 而了解每个字段域的属性则是填写数据的基础。8583协议多在POS机的开发上使用,例如回头客会员管理系统在POS机上的应用就是采用8583报文。
——摘自百度百科
2.ISO8583结构
ISO8583一般由三部分构成:头部+BitMap+域。
上一个ISOUtil报文解组包工具的解码图:
其中,长度是由头部信息决定,头部制定长度用16进制表示,解码的长度转成10进制表示。例如,头部制定长度:006C,则长度为108.
TPDU内有10位数字,即5个字节,以图中 “60 0145 0000”为例,60是一个ID标识符,0145一般对应24域的值(NII即Network International ID),0000为目的地址。决定目的地址发到银行去后,则银行返回:“60 0000 0145”,会将后面两个做一个位置交换。
MTI的值表示一种交易类型。
BitMap(比特地图)里的值,决定了解析出的域Field[ ]里的值。
解析方法:将值中每一个数化成4位二进制,从左往右数,“1”在第几位,则域的[ ]填几。
eg:
2 0 8 1
0010 0000 1000 0001
[3] [9] [16]
报文中有的是字符串,有的是二进制,有的是ASCII码。field所对应的value值主要通过ASCII码转换,也根据文档注释决定域值转化。
3.8583发送方式
通过使用socket将报文发送到目标服务器。
新手入门,欢迎指正~