ISO 8583 Parser
免费 · 实例详解 · 12 分钟 · 最后更新 2026-08-10
iso 8583:1987 · 全注释样例

ISO 8583 报文示例:8 条可以直接解析的完整样例

网上搜到的"ISO 8583 示例报文"大多过不了第一关:贴进解析器,域就对不齐。本页的每一条都不一样——先构造、再放进本站解析器实跑,下面的逐域表格就是解析器的真实输出。共五组场景:0100/0110 授权0200/0210 金融交易带 DE90 的 0400 冲正0800/0810 回声测试,以及带真实结构 DE55 的芯片交易
本页数据全部为合成数据。卡号取自预留的测试号段(400000…510000…),仅校验位按 Luhn 算法配平;终端号、商户号是 TERM0001 这类明显的占位值;密文和 PIN 块是随手编的十六进制。不含任何真实持卡人、真实商户或真实银行的信息。

先看编码约定(一分钟,能省一小时)

下面每条报文都是纯 ASCII 文本:4 个字符的 MTI,位图写成 16 个十六进制字符(有副位图时 32 个),然后按域号升序排数据域。这是最适合学习和粘贴给工具的表示法——不用先跟字节编码搏斗。但有三件事要先说清:

示例一:0100 / 0110 授权请求与响应

这条报文在讲什么:一笔 50.00 美元的超市(MCC 5411)消费授权请求。卡是刷的——DE22 902:完整读磁、终端没有密码键盘——所以走签名。二磁道数据放在 DE35 里一起上送。

0100723C448028C08000164000001234567899000000000000005000081009302100012309302108102812541190200334000001234567899=2812101123450000622209000123TERM0001TESTMERCH000001840

在解析器里打开这条 →

MTI 0100 · 主位图 723C448028C08000 · 置位 16 个域:2、3、4、7、11、12、13、14、18、22、25、35、37、41、42、49。(位图可以用位图计算器自己复算。)

DE域名原始值在这条报文里的含义
2主账号 PAN4000001234567899测试号段卡号(LLVAR,前缀 16),Luhn 校验通过
3处理码000000普通消费、默认账户——任意值都能用 DE3 速查拆开看
4交易金额0000000050005000 个最小货币单位;配合 DE49=840(USD,2 位小数)→ 50.00 美元
7传输日期时间0810093021MMDDhhmmss,GMT:8 月 10 日 09:30:21
11系统跟踪号 STAN000123请求和 0110 响应就靠它配对
12本地交易时间093021受理方当地 hhmmss
13本地交易日期0810受理方当地 MMDD
14卡有效期2812YYMM:2028 年 12 月——与二磁道里的有效期一致
18商户类型 MCC5411超市 / 杂货店
22POS 输入方式90290 = 完整读磁;2 = 终端不能输 PIN——见 DE22 速查
25POS 条件码00正常有卡交易
35磁道 2 数据4000001234567899=2812101123450000卡号 = 有效期(2812)+ 服务码(101)+ 自定义数据;LLVAR,前缀 33
37检索参考号 RRN622209000123常见拼法(并非标准强制):儒略日 6222(2026 年第 222 天)+ 小时 09 + STAN
41终端标识TERM0001占位终端号
42商户标识TESTMERCH000001占位商户号,定长 15 位
49交易货币代码840美元——DE4 的小数点就是它给的

0110 响应

这条报文在讲什么:发卡行批准了这笔 50.00 美元的消费。DE39 00 是结论,DE38 654321 是打印在小票上的授权码。注意响应回了什么:配对用的关键域(STAN、RRN、金额)原样回显,只在请求里有意义的域(磁道、输入方式、MCC)则不再出现。

0110723800000EC080001640000012345678990000000000000050000810093023000123093021081062220900012365432100TERM0001TESTMERCH000001840

在解析器里打开这条 →

MTI 0110 · 主位图 723800000EC08000 · 置位 13 个域:2、3、4、7、11、12、13、37、38、39、41、42、49。

DE域名原始值在这条报文里的含义
2主账号 PAN4000001234567899回显请求值
3处理码000000回显:消费
4交易金额000000005000回显:50.00 美元——若这里变小,就是部分批准
7传输日期时间0810093023比请求晚两秒——这是响应自己的时间戳
11系统跟踪号 STAN000123与请求相同——配对键
12本地交易时间093021回显请求值
13本地交易日期0810回显请求值
37检索参考号 RRN622209000123请求响应共用同一参考号
38授权标识响应码654321发卡行分配的授权码
39响应码00批准——其余取值都是拒绝原因,见 DE39 查询
41终端标识TERM0001回显
42商户标识TESTMERCH000001回显
49交易货币代码840美元

示例二:0200 / 0210 金融交易请求与响应

这条报文在讲什么:ATM 上从储蓄账户取现 200.00 美元。DE3 011000 拆开读:交易类型 01(取现)、借记方账户 10(储蓄)。卡在 ATM 上刷磁(DE22 901——磁条、可输 PIN),持卡人输了密码,所以 DE52 带着加密 PIN 块。和上面的 0100 不同,0200 批准即记账——这个差别正是下一节 0400 冲正存在的前提。

02007238448128C090001640000012345678990110000000000200000810093045000124093045081060119010006424242334000001234567899=2812101123450000622209000124ATM00001TESTATM000000018409A8B7C6D5E4F3210

在解析器里打开这条 →

MTI 0200 · 主位图 7238448128C09000 · 置位 17 个域:2、3、4、7、11、12、13、18、22、25、32、35、37、41、42、49、52。

DE域名原始值在这条报文里的含义
2主账号 PAN4000001234567899同一张合成测试卡
3处理码01100001 取现 · 借记方 10 储蓄账户 · 贷记方 00 未指定
4交易金额00000002000020000 个最小单位 → 200.00 美元
7传输日期时间08100930458 月 10 日 09:30:45 GMT
11系统跟踪号 STAN000124本笔交易的新跟踪号
12本地交易时间093045当地 hhmmss
13本地交易日期0810当地 MMDD
18商户类型 MCC6011ATM 取现
22POS 输入方式901刷磁读卡,终端可输 PIN
25POS 条件码00正常
32受理机构标识码424242ATM 所属机构(LLVAR,前缀 06)——冲正的 DE90 里会再次出现
35磁道 2 数据4000001234567899=2812101123450000磁条原样读出的内容
37检索参考号 RRN622209000124跟着这笔交易走完清算与差错处理全程
41终端标识ATM00001占位 ATM 终端号
42商户标识TESTATM00000001占位 ATM 所有方
49交易货币代码840美元
52PIN 数据9A8B7C6D5E4F32108 字节加密 PIN 块,写成 16 个十六进制字符——合成值,解不出任何真密码

0210 响应

这条报文在讲什么:批准,出钞。多出来的一笔是 DE54:发卡行把可用余额带回来,供 ATM 打印。1002840C000000098500 拆开读:账户 10(储蓄)· 金额类型 02(可用余额)· 币种 840 · C 贷方 · 000000098500 → 余额 985.00 美元。(DE54 的子域布局各网络不尽相同,这里只作演示。)

0210723800000EC084001640000012345678990110000000000200000810093047000124093045081062220900012465432200ATM00001TESTATM000000018400201002840C000000098500

在解析器里打开这条 →

MTI 0210 · 主位图 723800000EC08400 · 置位 14 个域:2、3、4、7、11、12、13、37、38、39、41、42、49、54。

DE域名原始值在这条报文里的含义
2主账号 PAN4000001234567899回显
3处理码011000回显:储蓄账户取现
4交易金额000000020000回显:200.00 美元
7传输日期时间0810093047响应自己的时间戳
11系统跟踪号 STAN000124配对键,不变
12本地交易时间093045回显
13本地交易日期0810回显
37检索参考号 RRN622209000124回显
38授权标识响应码654322授权码
39响应码00批准
41终端标识ATM00001回显
42商户标识TESTATM00000001回显
49交易货币代码840美元
54附加金额1002840C000000098500可用余额 985.00 美元(LLLVAR,前缀 020

示例三:0400 冲正(带 DE90 原始数据元素)

这条报文在讲什么:ATM 没等到(或没能处理)上面那条 0210,超时后要求发卡行把这笔 200.00 美元取现撤销。冲正有自己的 STAN(000125)和时间戳,但沿用原交易的 RRN——DE90 里装的则是被冲正那笔交易的"指纹"。

0400F238048108C080000000004000000000164000001234567899011000000000020000081009354500012509354508109010006424242622209000124ATM00001TESTATM00000001840020000012408100930450000042424200000000000

在解析器里打开这条 →

MTI 0400 · 主位图 F238048108C08000 + 副位图 0000004000000000 · 置位 15 个域:2、3、4、7、11、12、13、22、25、32、37、41、42、49、90。位图第一个字符是 F,因为 bit 1 置位:DE90 的域号超过 64,主位图后面必须紧跟副位图——手工拼冲正报文最容易漏的就是这一步。

DE域名原始值在这条报文里的含义
2主账号 PAN4000001234567899与原交易同卡
3处理码011000与原 0200 相同
4交易金额000000020000全额 200.00 美元——全额冲正;部分冲正会改这里(并用 DE95)
7传输日期时间0810093545比原交易晚五分钟——超时计时器到点才发出
11系统跟踪号 STAN000125 STAN:冲正是一条独立报文,不是重发
12本地交易时间093545冲正自己的当地时间
13本地交易日期0810MMDD
22POS 输入方式901沿用原交易
25POS 条件码00正常
32受理机构标识码424242与原交易同一受理机构
37检索参考号 RRN622209000124原交易的 RRN——留着它,下游系统才能把两笔串起来
41终端标识ATM00001同一台 ATM
42商户标识TESTATM00000001同一所有方
49交易货币代码840美元
90原始数据元素02000001240810093045000004242420000000000042 位数字、五个紧排子域——下表逐段拆开

DE90 是定长 42 位数字的拼接,用来唯一指认被冲正的原交易。切开看:

位置子域对应
1–4原 MTI0200被冲正的金融请求
5–10原 STAN000124原 0200 的 DE11
11–20原 DE70810093045原 0200 的传输时间戳
21–31原受理机构标识00000424242原 0200 的 DE32,左补零到 11 位
32–42原转发机构标识00000000000全零——原交易没有 DE33

冲正为什么存在、什么时候升级成 0420 通知、重发(0401/0421)怎么用,单独一篇讲透:冲正、超时与重发

示例四:0800 / 0810 网络管理(回声测试)

这条报文在讲什么:"你还活着吗?"——回声测试。没有卡、没有钱:只有 DE7、一个 STAN 和 DE70 301(回声测试)。签到用 DE70 001、签退 002——同样的骨架,换个代码而已。这是你能见到的最短的真实 ISO 8583 报文,恰好也是学副位图的最佳教材。

0800822000000000000004000000000000000810120000000200301

在解析器里打开这条 →

MTI 0800 · 主位图 8220000000000000 + 副位图 0400000000000000 · 置位 3 个域:7、11、70。DE70 的域号是 70,超过 64,所以哪怕这么小的报文也得把 bit 1 置上、再挂一张副位图——于是 32 个十六进制字符的位图,包着的只有 19 个字符的数据。

DE域名原始值在这条报文里的含义
7传输日期时间08101200008 月 10 日 12:00:00 GMT
11系统跟踪号 STAN0002000810 靠它对上这条 0800
70网络管理信息码301回声测试;001 = 签到,002 = 签退,101 = 换密钥

0810 响应

这条报文在讲什么:"活着。"应答方回显 STAN 和 DE70,再加一个 DE39 00

081082200000020000000400000000000000081012000100020000301

在解析器里打开这条 →

MTI 0810 · 主位图 8220000002000000 + 副位图 0400000000000000 · 置位 4 个域:7、11、39、70。

DE域名原始值在这条报文里的含义
7传输日期时间0810120001一秒之后
11系统跟踪号 STAN000200回显——配对键
39响应码00受理成功
70网络管理信息码301回显:应答的正是这次回声测试

签到时序、心跳间隔、密钥交换的完整讲解见0800 / 0810 网络管理报文

示例五:带 DE55 的芯片交易(EMV TLV)

这条报文在讲什么:一笔 25.00 美元的餐厅(MCC 5812)接触式芯片消费,联机输入 PIN,卡片生成了 ARQC——一枚"请发卡行来决定"的密文。芯片贡献的所有数据以 BER-TLV 格式装进 DE55。

0100723C468008C08200165100001234567895000000000000002500081010153300020110153308102812581205100100622210000201TERM0002TESTMERCH00000284017482023C00950500000480009A032608109C01005F2A0208409F02060000000025009F100706010A03A000009F1A0208409F2608A1B2C3D4E5F607189F2701809F3303E0F8C89F34030200009F3602003C9F37041A2B3C4D

在解析器里打开这条 →

MTI 0100 · 主位图 723C468008C08200 · 置位 17 个域:2、3、4、7、11、12、13、14、18、22、23、25、37、41、42、49、55。先看 ISO 8583 这一层:

DE域名原始值在这条报文里的含义
2主账号 PAN5100001234567895测试号段(510000…),Luhn 校验通过
3处理码000000消费
4交易金额0000000025002500 个最小单位 → 25.00 美元——DE55 里的 9F02 是它的镜像
7传输日期时间08101015338 月 10 日 10:15:33 GMT
11系统跟踪号 STAN000201跟踪号
12本地交易时间101533hhmmss
13本地交易日期0810MMDD——DE55 里的 9A 带年份存了同一天
14卡有效期28122028 年 12 月
18商户类型 MCC5812餐厅
22POS 输入方式05105 = 接触式芯片,1 = 可输 PIN
23卡片序列号001该卡号下的第一张卡
25POS 条件码00正常
37检索参考号 RRN622210000201还是"儒略日 + 小时 + STAN"的惯用拼法
41终端标识TERM0002占位值
42商户标识TESTMERCH000002占位值
49交易货币代码840美元——DE55 里的 5F2A 与之呼应
55IC 卡数据 / EMV8202…3C4D(87 字节)BER-TLV,下表逐 tag 拆解。注意 LLL 前缀是 174——数的是十六进制字符而不是字节(见编码约定

再看 DE55 的载荷,逐 tag 对照——和解析器的 TLV 解码输出完全一致(把这段值单独贴进 EMV TLV 解析器也能得到同样结果):

Tag名称在这条报文里的含义
82应用交互特征 AIP3C00卡片支持 DDA、持卡人验证、终端风险管理、发卡行认证
95终端验证结果 TVR0000048000只置了两个位:字节 3 b3「联机 PIN 已输入」、字节 4 b8「交易超过底限」——没有任何失败,只是必须联机
9A交易日期260810YYMMDD:2026-08-10,与 DE13 一致
9C交易类型00消费——DE3 前两位在 EMV 层的孪生兄弟
5F2A交易货币代码0840美元,与 DE49 一致
9F02授权金额00000000250025.00——必须与 DE4 相符,因为这个金额参与了密文计算
9F10发卡行应用数据 IAD06010A03A00000发卡行私有块(CVN、CVR……),布局因发卡行/卡组而异
9F1A终端国家代码0840终端在美国
9F26应用密文A1B2C3D4E5F60718ARQC 本体——合成的 8 字节;真实值是对 9F02、9F37、ATC 等数据算出的 MAC
9F27密文信息数据 CID80声明密文类型:ARQC——请求联机授权
9F33终端性能E0F8C8支持手输/磁条/芯片;支持 PIN、签名、免验证;具备 SDA/DDA/CDA 能力
9F34持卡人验证结果 CVM020000联机加密 PIN,结果「未知」——验它的是发卡行,不是终端
9F36应用交易计数器 ATC003CATC = 60:这颗芯片的第 60 笔交易
9F37不可预知数1A2B3C4D终端出的随机挑战值,被绑进 ARQC

一个值得重复的结构要点:就算报文其余部分是文本,DE55 也是二进制 TLV。在本页的 ASCII 表示里它以十六进制字符出现、长度前缀数字符(174);在真实的 BCD/二进制链路上前缀数的是字节(87)。这一步搞错,DE55 之后的每个域都会错位。

为什么你在别处找的示例贴进去解不开

搜"ISO 8583 示例报文"搜到的片段,贴进任何解析器十有八九失败。几乎总是这四个原因之一,按顺序排查:

本页的样例从构造上就避开了这四条:无头、单一编码、无空白。想现场看看失败长什么样?随便拿上面一条,删掉中间任意一个字符,重新解析。

这些示例是通用的 1987 层——卡组织私有域不通用

以上全部是纯 ISO 8583:1987:标准域、标准格式、不带任何网络私有扩展。真实的 Visa、Mastercard、银联、Amex 报文建在同一副骨架上,但恰好在这些示例保持沉默的地方分道扬镳——私有域(DE48、DE60–63、DE120–127)、报文头、编码约定。同一个 MTI 0100 在哪儿都是授权请求;DE48 里装什么则各家各的。所以:用这些样例学结构,私有域布局以你对接端的接口规范为准——任何公开示例都替代不了它。「同是 ISO 8583 为什么解析口径不同」另有一篇细讲:各卡组报文差异

一句话总结:8 条报文,全部合成、全部在本站解析器里实测通过后才发布。复制上面任意一条原始串贴进去,得到的就是本页的表格——然后动手改几个域的值,看输出怎么变。这个循环是学 ISO 8583 最快的路。

延伸阅读