ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

day01_应用选择

day01_应用选择 好的我帮你把**应用选择Application Selection**这一整个阶段的完整逻辑串起来形成一个清晰的知识框架。这部分是你后续学习GPO获取处理选项、读记录、脱机认证等阶段的基础。---## 应用选择阶段总览**一句话概括**终端和卡片互相确认“我们要用哪个支付应用比如银联贷记/借记来交易”的过程。text┌─────────────────────────────────────────────────────────────────┐│ 应用选择Application Selection │├─────────────────────────────────────────────────────────────────┤│ 输入终端支持的AID列表 卡片返回的PSE目录AID列表 ││ 输出选中的一个完整AID 卡片的FCI含PDOL等交易参数 ││ 核心命令SELECTA4 READ RECORDB2 │└─────────────────────────────────────────────────────────────────┘---## 一、完整流程图text开始│├─ 第1步SELECT PSE│ 发送00 A4 04 00 0E 1PAY.SYS.DDF01│ 目的找到PSE目录的位置获得SFI│ 关键输出TAG 88 的值SFI编号│├─ 第2步READ RECORD循环读取│ 发送00 B2 xx 0C 00xx为记录号P20C表示SFI1│ 目的把PSE目录里所有AID读出来│ 关键输出所有TAG 4FADF名/AID│ 退出条件收到 6A83记录未找到│├─ 第3步匹配与选择│ ││ ├─ 人工选择按键指定品牌│ │ 直接用指定的完整AID发送 SELECT│ ││ └─ 智能选择自动匹配│ ├─ 完全匹配终端AID 卡片AID长度内容完全相同│ ├─ 部分匹配卡片AID 以 终端AID 为前缀│ ├─ 优先级完全匹配 部分匹配│ └─ 按优先级排序后依次尝试 SELECT│├─ 第4步SELECT AID最终确认│ 发送00 A4 04 00 xx [选中的完整AID]│ 关键输出│ ├─ TAG 87PDOL指示符告诉终端要送哪些数据│ ├─ TAG 9F38PDOL处理选项数据对象列表│ ├─ TAG 9F12应用首选名称│ └─ TAG BF0C发卡行数据含公钥证书等│└─ 进入下一阶段GPO获取处理选项---## 二、关键APDU命令汇总| 步骤 | 命令CLA INS P1 P2 Lc Data | 响应关键 | 说明 || :--- | :--- | :--- | :--- || **SELECT PSE** | 00 A4 04 00 0E 315041592E5359532E4444463031 | 88 01 → SFI1 | 固定文件名 1PAY.SYS.DDF01 || **READ RECORD** | 00 B2 01 0C 00 | 4F XX [AID] | P2 (SFI3) \| 0x04循环直到6A83 || **SELECT AID** | 00 A4 04 00 08 A000000333010102 | 9F38 PDOL | 使用完整AID非短前缀 |---## 三、核心知识点拆解### 1. AID应用标识符到底是什么- **结构**RID5字节注册应用提供者标识符 PIX3~11字节专有应用标识符扩展- **举例**A000000333银联RID 010102贷记扩展 A000000333010102- **关键规则**匹配时**从左往右按字节比较**不分大小写本来就是hex数据### 2. 匹配机制详解| 维度 | 完全匹配 | 部分匹配模糊匹配 || :--- | :--- | :--- || **条件** | 终端AID长度 卡片AID长度且内容完全相同 | 卡片AID长度 终端AID长度且卡片前N字节 终端AID || **优先级** | **高**先尝试 | 低完全匹配失败后才尝试 || **典型用途** | Visa完整AID如 A0000000031010 | 银联根RID如 A000000333 || **SELECT时发送** | 使用匹配到的终端AID | 使用**卡片返回的完整AID**不能用短的RID |### 3. 人工 vs 智能 选择| 维度 | 人工选择 | 智能选择 || :--- | :--- | :--- || **触发** | 用户/收银员按键指定品牌 | 程序自动匹配 || **场景** | 传统POS机有人值守 | 非接闸机、ATM、手机Pay || **控制参数** | 终端类型Terminal Type配置 | 终端能力Tag 9F33 || **匹配策略** | 通常走完全匹配 | 先完全匹配 → 再部分匹配 || **降级机制** | 失败直接报错 | 可降级到人工选择如有键盘 |---## 四、记住这5条口诀面试/开发避坑用1. **“先PSE后记录”** —— 先SELECT PSE找到SFI再用READ RECORD读AID列表。2. **“完全优先于部分”** —— 匹配时完全匹配永远排在部分匹配前面。3. **“SELECT用长的”** —— 发SELECT AID时必须用卡片返回的完整AID不能用短的RID。4. **“人工看按键智能看配置”** —— 人工/智能由终端类型参数决定不是由交易金额决定。5. **“6A83是结束信号”** —— 读目录时收到6A83表示“读完了”不是错误。---## 五、应用选择阶段输出给下一步GPO的准备SELECT AID成功后终端拿到了这些关键数据用于后续阶段| 数据 | 用途 || :--- | :--- || **TAG 9F38PDOL** | 告诉终端要构造哪些数据如金额、国家代码发给卡片 || **TAG 87PDOL指示符** | 指示终端PDOL是否强制/可选 || **TAG 9F12应用首选名称** | 显示给用户看如“ICBC PBOC Card” || **TAG BF0C发卡行数据** | 内含发卡行公钥证书用于脱机认证 |---## 六、一张图记住所有关键TAGtextSELECT PSE 响应├── 6F (FCI模板)│ ├── 84: DF名称 (1PAY.SYS.DDF01)│ └── A5 (FCI专用模板)│ ├── 88: SFI ← 关键告诉你去哪读目录│ ├── 5F2D: 语言偏好│ └── BF0C: 发卡行数据│READ RECORD 响应└── 70 (记录模板)└── 61 (应用模板)├── 4F: AID ← 关键候选应用├── 50: 应用标签└── 9F12: 应用首选名称SELECT AID 响应└── 6F (FCI模板)└── A5 (FCI专用模板)├── 4F: AID (确认)├── 87: PDOL指示符├── 9F38: PDOL ← 关键下一步GPO的数据字典└── BF0C: 发卡行数据---## 七、下一步学什么应用选择完成后交易流程进入1. **GPO获取处理选项** —— 用PDOL构造数据发给卡片获取AIP和AFL2. **读应用数据** —— 根据AFL读卡片上的持卡人记录如PAN、有效期等3. **脱机认证** —— 验证卡片真伪静态/动态数据认证4. **持卡人验证** —— PIN校验、签名等5. **联机处理** —— 发往收单行/发卡行授权如果你准备好了我们可以从 **“GPOGET PROCESSING OPTIONS”** 开始讲那是应用选择之后的第一道坎。
返回列表