EMV非接MasterCard发送空PDOL执行GPO命令返回6985失败求助
我成功选中AID为A0000000041010的MasterCard EMV非接应用(返回9000),其SELECT APPLICATION响应如下:
6F 3B 84 07 A0 00 00 00 04 10 10 A5 30 50 0A 4D 61 73 74 65 72 63 61 72 64 87 01 01 9F 11 01 01 5F 2D 08 65 73 65 6E 70 74 66 72 BF 0C 0F 9F 4D 02 0B 0A 9F 6E 07 01 52 00 00 30 30 00
响应中无PDOL标签(9F38),按规范构造带空PDOL的GET PROCESSING OPTIONS(GPO)命令:
80 A8 00 00 02 83 00 00
但卡返回6985(EMV 4.4第3册定义为“命令不允许;使用条件未满足”)。而同一张卡的接触式芯片执行该流程时,GPO可成功返回AIP和AFL。请问为何发送空PDOL时GPO失败?GPO前是否需额外步骤?
分析与解答
核心原因:非接与接触式EMV流程的差异
MasterCard的非接EMV规范(如PayWave)与接触式流程存在明确差异,即便SELECT APPLICATION响应未返回PDOL,非接场景下执行GPO前仍需完成特定前置步骤,这是触发6985错误的关键——卡认为当前执行流程不符合非接场景的要求。
具体解决方案与前置步骤
优先执行
READ RECORD读取应用目录记录
MasterCard非接应用要求终端在GPO前必须读取应用的基础目录记录(通常是SFI=1的第1条记录),接触式终端一般会自动完成该步骤,但非接终端需手动触发。执行以下命令:00 B2 01 0C 00- 参数说明:
B2为READ RECORD命令码,01为记录号,0C表示SFI=1(P2字节高5位对应SFI),00表示接受任意长度响应。 - 若该命令返回
9000,再执行原GPO命令即可正常获取AIP和AFL。
- 参数说明:
备选方案:建立安全通道后再执行GPO
部分非接卡要求必须先建立安全通道才能执行GPO,可先发送INITIALIZE UPDATE命令:80 50 00 00 08 00 00 00 00 00 00 00 00待卡返回
9000及安全响应数据后,再执行原GPO命令。
补充说明
6985错误的核心是卡的状态未满足GPO执行条件,非接场景下卡对流程的校验比接触式更严格,必须严格遵循MasterCard非接专属规范执行步骤,而非仅依赖通用EMV接触式流程。
内容的提问来源于stack exchange,提问作者andyolivares

