# ISO 8583 支付消息：结构、位图与数据元素

> 了解 ISO 8583 金融交易消息的工作原理——MTI、位图解析、数据元素、响应码，以及 PIN/MAC 的作用。

Canonical: https://hsmkit.com/zh/guides/iso8583-payment-messages/

Last updated: 2026-04-03

ISO 8583 是金融交易消息的国际标准——每次您在 ATM 或 POS 终端刷卡，都会生成一条 ISO 8583 消息。本文解释该格式及如何解析它。

## 什么是 ISO 8583？

ISO 8583 定义了以下各方之间电子金融交易消息的格式：
- ATM 与银行
- POS 终端与收单机构
- 收单机构与卡组织（Visa、Mastercard）
- 银行间系统

该标准自 1987 年以来一直在使用，至今仍是全球支付处理的骨干。

## 消息结构

ISO 8583 消息由以下部分组成：

```
[MTI] [位图] [数据元素]
```

### 1. 消息类型标识符（MTI）
标识消息类型的 4 位代码：

| MTI | 描述 |
|-----|------|
| 0100 | 授权请求 |
| 0110 | 授权响应 |
| 0200 | 金融交易请求 |
| 0210 | 金融交易响应 |
| 0400 | 冲正请求 |
| 0420 | 冲正通知 |
| 0800 | 网络管理请求 |
| 0810 | 网络管理响应 |

MTI 由四个部分组成：
- **版本**：0（1987）、1（1993）、2（2003）
- **消息类别**：1=授权，2=金融，4=冲正，8=网络
- **消息功能**：0=请求，1=响应，2=通知，3=通知响应
- **消息来源**：0=收单方，2=发卡方，4=其他

### 2. 位图

位图是一个 64 位（8 字节）字段，指示消息中存在哪些数据元素。

- **主位图**：始终存在（64 位 = 字段 1-64）
- **次位图**：字段 1 置位时存在（字段 65-128）

每个位对应一个字段编号：
- 第 1 位（第一字节 MSB）= 字段 1（次位图）
- 第 2 位 = 字段 2
- ...以此类推

示例：位图 `F230040102C00000` 表示字段 1、2、3、4、7、11、12、13、22、25、41、42 存在。

使用 [ISO 8583 位图解析器](/payments-bitmap) 即时解码任何位图。

### 3. 数据元素

ISO 8583 定义了多达 192 个数据元素（字段）。常用字段：

| 字段 | 名称 | 类型 | 长度 |
|------|------|------|------|
| 2 | 主账号（PAN） | LLVAR | 最多 19 位 |
| 3 | 处理代码 | 固定 | 6 |
| 4 | 交易金额 | 固定 | 12 |
| 7 | 传输日期/时间 | 固定 | 10 |
| 11 | 系统跟踪审计号（STAN） | 固定 | 6 |
| 12 | 本地交易时间 | 固定 | 6 |
| 13 | 本地交易日期 | 固定 | 4 |
| 22 | POS 输入模式 | 固定 | 3 |
| 35 | 磁道 2 数据 | LLVAR | 最多 37 |
| 37 | 检索参考号 | 固定 | 12 |
| 38 | 授权识别响应 | 固定 | 6 |
| 39 | 响应码 | 固定 | 2 |
| 41 | 卡受理终端 ID | 固定 | 8 |
| 42 | 卡受理方代码 | 固定 | 15 |
| 49 | 货币代码 | 固定 | 3 |
| 52 | PIN 数据（加密） | 固定 | 16 |
| 55 | ICC 数据（EMV） | LLLVAR | 最多 255 |
| 64 | MAC（主） | 固定 | 16 |
| 128 | MAC（次） | 固定 | 16 |

## 响应码

字段 39 包含响应码：

| 代码 | 含义 |
|------|------|
| 00 | 批准 |
| 05 | 不予受理 |
| 12 | 无效交易 |
| 14 | 无效卡号 |
| 51 | 余额不足 |
| 54 | 卡已过期 |
| 55 | PIN 错误 |
| 91 | 发卡方不可用 |
| 96 | 系统故障 |

## ISO 8583 中的 PIN

字段 52 包含加密的 PIN 块（通常为 8 字节 / 16 个十六进制字符）。PIN 在放入此字段前使用 PIN 加密密钥（PEK）加密。

PIN 块格式（通常为 ISO 9564 格式 0）将 PIN 与 PAN 结合。详见 [PIN 块指南](/zh/guides/pin-block-formats-iso9564/)。

## ISO 8583 中的 MAC

字段 64 和 128 包含消息认证码，用于验证消息完整性。MAC 使用 MAC 密钥对特定字段计算。

详见 [MAC 算法指南](/zh/guides/mac-algorithms-payment-security/)。

## AS2805——澳大利亚 EFTPOS

AS2805 是基于 ISO 8583 的澳大利亚标准，在字段定义和 MAC 计算上有一些差异。

使用 [AS2805 消息解析器](/payments-as2805) 进行 AS2805 专用解析。

## ATM NDC 和 Wincor 协议

ATM 通常使用厂商专有协议：

- **NCR NDC**：NCR ATM 使用
- **Wincor/Diebold**：Wincor Nixdorf ATM 使用

这些是封装 ISO 8583 消息的更高层协议。[消息解析器](/message-parser) 支持 NDC 和 Wincor 格式。

## 实践：解析一条交易消息

给定原始 ISO 8583 消息：
```
0200F230040102C000000000000000001600412345678901234500000000010000...
```

1. 前 4 个字符：MTI = `0200`（金融交易请求）
2. 接下来 16 个字符：主位图 = `F230040102C00000`
3. 解析位图找出存在哪些字段
4. 按顺序读取每个字段

使用 [ISO 8583 位图解析器](/payments-bitmap) 解码位图。

## 在线工具

- [ISO 8583 位图解析器](/payments-bitmap) —— 解码任何 ISO 8583 位图
- [AS2805 消息解析器](/payments-as2805) —— 解析 AS2805 消息
- [消息解析器](/message-parser) —— 解析 ATM NDC 和 Wincor 消息
- [PIN 块工具](/payments-pin-blocks-general) —— 编码/解码 PIN 块（字段 52）
- [HMAC 计算器](/payments-mac-hmac) —— 计算 MAC 值（字段 64/128）
