ISO 8583 Parser
在线速查

ISO 8583 MTI 报文类型速查

拿到一条报文,第一眼看的就是 MTI。输入四位数字,下面会逐位拆开告诉你它是什么。

0
第 1 位 · 版本
1987 版
4
第 2 位 · 消息类
冲正 / 退单
2
第 3 位 · 功能
通知
0
第 4 位 · 来源
受理方发起
MTI含义说明
0100授权请求刷卡时的实时授权,只冻结不扣款
0110授权请求响应DE39 带回批准或拒绝
0120授权通知已成事实的通知,发卡行不能拒绝
0130授权通知响应
0200金融请求授权加请款一步完成
0210金融请求响应
0220金融通知脱机交易或代授权后的补送
0230金融通知响应
0320批文件通知
0400冲正请求撤销原交易,等待对方应答
0410冲正请求响应实践中几乎总是回 00
0420冲正通知我方已撤,对方必须跟着撤
0430冲正通知响应
0500对账请求
0510对账请求响应
0520对账通知
0800网络管理请求签到、签退、回显、密钥交换
0810网络管理响应
0820网络管理通知

四位分别代表什么

MTI 是四位数字,每一位都有独立含义,合起来才是这条报文的身份。第 1 位是标准版本,第 2 位是消息类(授权、金融、冲正、网络管理…),第 3 位是功能(请求、响应、通知),第 4 位是来源方以及是不是重发

第 3 位:请求和通知的区别

这一位决定了对方能不能拒绝你。功能码 0请求——"我想这么做,你同不同意",对方可以拒绝。功能码 2通知(advice)——"我已经这么做了,你必须跟上",对方只能确认收到,不能拒绝。

所以 04000420 不是同义词:前者是请求撤销,后者是通知"我已经撤了"。选错的典型后果是发了 0400 却被拒绝,而你本地已经作废了交易,卡在中间无法收场。

第 4 位:重发标记,最容易踩的坑

第 4 位的奇数值表示重发0400 是首次,0401 就是同一笔的重发。重发的铁律是除了这一位,其它一个字节都不许改——尤其 DE11(STAN)和 DE7(传输时间)必须沿用原值。很多"重复扣款"事故的根因,就是重发时顺手生成了新的 STAN,接收方看到的就成了两笔独立交易。


第一位是版本号,而两个版本都活着

MTI 的第一位标的是这条报文按 ISO 8583 的哪个版本写的:0 是 1987 版, 1 是 1993 版。很容易把这读成沿革,以为数字大的取代了小的。并没有。

两个版本同时在生产跑,在同一个卡组织里,对同一笔交易。授权报文是 1987 格式、以 0 开头 —— 0100011002000400; 清算报文是 1993 格式、以 1 开头,比如首次提出的 1240。 所以一笔消费在授权那一腿产生一条 0100,在清算文件里产生一条 1240, 这两条不是两笔交易。

要在意它的原因是:两个版本不共用同一套字段字典。同一个数据域号可以装不同的内容, 内容也可以在域号之间搬 —— 比如商户类别码在授权里是 DE18、在清算里是 DE26。 按其中一个版本配好的解析器读另一个版本时不会报错,只会给你看起来合理的胡话。 对照在授权与清算的差异

要处理真实报文?本工具和另外 13 个工具也提供可从本地磁盘直接运行的 HTML 文件,不用安装、不连网络。适用于「生产数据不许贴到网站上」这条规定。离线版,US$39 一次性买断。