ISO 8583 Parser
在线构造

ISO 8583 报文构造器

选 MTI、勾上要带的域、填值。位图、副位图和每个变长域的长度前缀都自动算,不用手数字符。

它构造出什么

一条完整的 ISO 8583 报文:4 位 MTI、主位图(勾到 64 以上的域时自动追加副位图),然后按域号从小到大排列每个勾选的域,变长域自带长度前缀。

报文显示出来之前,会先送回解析器页面所用的同一份解析代码解一遍。只要有一个字节对不上,页面给出的就是红色的失败提示,而不是报文。

从样例开始
0 / 0
域号数据域格式
2主账号 PANn LL(≤19)
3处理码 Processing Coden FIX(6)
4交易金额n FIX(12)
5清算金额n FIX(12)
6持卡人扣账金额n FIX(12)
7传输日期时间 MMDDhhmmssn FIX(10)
8持卡人扣账费用n FIX(8)
9清算折算率n FIX(8)
10扣账折算率n FIX(8)
11系统跟踪号 STANn FIX(6)
12本地交易时间 hhmmssn FIX(6)
13本地交易日期 MMDDn FIX(4)
14卡有效期 YYMMn FIX(4)
15清算日期 MMDDn FIX(4)
16折算日期n FIX(4)
17受理日期n FIX(4)
18商户类型 MCCn FIX(4)
19受理机构国家码n FIX(3)
20PAN扩展国家码n FIX(3)
21转发机构国家码n FIX(3)
22POS输入方式 Entry Moden FIX(3)
23卡片序列号n FIX(3)
24功能码/NIIn FIX(3)
25POS条件码n FIX(2)
26POS PIN输入能力n FIX(2)
27授权响应长度n FIX(1)
28交易费用x+n FIX(9)
29清算费用x+n FIX(9)
30交易处理费x+n FIX(9)
31清算处理费x+n FIX(9)
32受理机构标识码n LL(≤11)
33转发机构标识码n LL(≤11)
34PAN扩展ns LL(≤28)
35磁道2 Track 2z LL(≤37)
36磁道3 Track 3z LLL(≤104)
37检索参考号 RRNan FIX(12)
38授权标识响应码an FIX(6)
39响应码 Response Codean FIX(2)
40服务限制码an FIX(3)
41终端标识 Terminal IDans FIX(8)
42商户标识 Merchant IDans FIX(15)
43商户名称/地址ans FIX(40)
44附加响应数据an LL(≤25)
45磁道1 Track 1an LL(≤76)
46附加数据-ISOan LLL(≤999)
47附加数据-国家an LLL(≤999)
48附加数据-私有an LLL(≤999)
49交易货币代码n FIX(3)
50清算货币代码n FIX(3)
51扣账货币代码n FIX(3)
52PIN数据 PIN Blockb FIX(16)
53安全控制信息n FIX(16)
54附加金额 Additional Amountsan LLL(≤120)
55IC卡数据/EMVb LLL(≤999)
56预留 ISOans LLL(≤999)
57预留国家ans LLL(≤999)
58预留国家ans LLL(≤999)
59预留国家ans LLL(≤999)
60预留私有ans LLL(≤999)
61预留私有ans LLL(≤999)
62预留私有ans LLL(≤999)
63预留私有ans LLL(≤999)
64报文鉴别码 MACb FIX(16)
66清算码n FIX(1)
67扩展支付码n FIX(2)
68接收机构国家码n FIX(3)
69清算机构国家码n FIX(3)
70网络管理信息码 NMICn FIX(3)
71报文号n FIX(4)
72报文号(末)n FIX(4)
73动作日期 YYMMDDn FIX(6)
74贷记笔数n FIX(10)
75贷记冲正笔数n FIX(10)
76借记笔数n FIX(10)
77借记冲正笔数n FIX(10)
78转账笔数n FIX(10)
79转账冲正笔数n FIX(10)
80查询笔数n FIX(10)
81授权笔数n FIX(10)
82贷记处理费n FIX(12)
83贷记交易费n FIX(12)
84借记处理费n FIX(12)
85借记交易费n FIX(12)
86贷记金额n FIX(16)
87贷记冲正金额n FIX(16)
88借记金额n FIX(16)
89借记冲正金额n FIX(16)
90原始数据元素n FIX(42)
91文件更新码an FIX(1)
92文件安全码an FIX(2)
93响应指示器an FIX(5)
94服务指示器an FIX(7)
95替换金额an FIX(42)
96报文安全码b FIX(16)
97净清算金额x+n FIX(17)
98收款人 Payeeans FIX(25)
99清算机构标识码n LL(≤11)
100接收机构标识码n LL(≤11)
101文件名ans LL(≤17)
102账户标识1ans LL(≤28)
103账户标识2ans LL(≤28)
104交易描述ans LLL(≤100)
105预留ISOans LLL(≤999)
106预留ISOans LLL(≤999)
107预留ISOans LLL(≤999)
108预留ISOans LLL(≤999)
109预留ISOans LLL(≤999)
110预留ISOans LLL(≤999)
111预留ISOans LLL(≤999)
112预留国家ans LLL(≤999)
113预留国家ans LLL(≤999)
114预留国家ans LLL(≤999)
115预留国家ans LLL(≤999)
116预留国家ans LLL(≤999)
117预留国家ans LLL(≤999)
118预留国家ans LLL(≤999)
119预留国家ans LLL(≤999)
120预留私有ans LLL(≤999)
121预留私有ans LLL(≤999)
122预留私有ans LLL(≤999)
123预留私有ans LLL(≤999)
124预留私有ans LLL(≤999)
125预留私有ans LLL(≤999)
126预留私有ans LLL(≤999)
127预留私有ans LLL(≤999)
128报文鉴别码 MACb FIX(16)

每个域是怎么编出来的

字典里每个域记四件事:名称、定长(FIX)还是变长(LLVAR / LLLVAR)、最大长度、数据类型(n 数字、an 字母数字、ans 字母数字加特殊字符、b 二进制、z 磁道数据)。这四件事决定值怎么写到报文里,剩下的由你选的编码决定。

编码MTI长度前缀数字域与二进制域文本域
ASCII4 个字符2 或 3 个十进制字符1 位数字占 1 个字符1 个字符占 1 个字符
Hex / BCD4 个十六进制字符2 或 3 位十进制数字,写成十六进制字符压缩存放:1 字节放 2 位数字,长度按十六进制字符计1 个字符占 2 个十六进制字符
EBCDIC4 个 EBCDIC 字节2 或 3 位 EBCDIC 数字二进制域仍写十六进制1 个字符占 1 个 EBCDIC 字节

三种编码下位图都写成十六进制字符,这正是本站解析器读位图的方式。有些真实接口把位图按 8 个裸字节发送 —— 同样是 64 位,字符数少一半。

Hex / BCD 模式下长度怎么数

Hex / BCD 模式下数字域按 1 字节 2 位数字压缩存放,所以长度数的是数字位数不是字节数:19 位卡号的 LLVAR 前缀就是 19,占 19 个十六进制字符 —— 九个半字节。位数为奇数的域会让后面的数据错开半个字节,构造器会在报文下方提示。真实卡组规范会把这类域补齐到整字节,且各自规定补在哪一侧;补哪边属于接口约定,所以这里不替你补。

位图在做什么

64 位主位图的每一位代表一个域在不在:第 2 位是 DE2,第 3 位是 DE3,以此类推。勾上 64 以上的域,第 1 位就会置 1,表示后面还跟着第二个 64 位位图,管 65–128 号域。这也是手写报文最常错的地方 —— 带 DE90 的 0400 冲正必须有副位图,所以它的第一个十六进制字符是 F 不是 7。反过来拆位图用位图计算器

构造器不做的事

样例里的值是哪来的

六个起手样例逐域取自站上的ISO 8583 报文样例那篇文章。载入一条,改掉金额或流水号,你手里就是一条「和已知能解的报文只差你改的那一处」的测试报文。