4

我对 VISA 卡的 GET PROCESSING OPTIONS (GPO) 命令有一些问题。

以下是我对 VISA 申请的 SELECT 命令的回复:

6F408407A0000000031010A535500A564953412044454249549F380C9F66049F02069F37049F1A025F2D02656EBF0C1242034761735F550255539F5A0511084008409000

我从中提取了以下 PDOL:9F66049F02069F37049F1A02

我不确定 tag 9F66

我的 GPO 命令如下所示:

80a800000100000001000000001000823DDE7A12400

但我得到一个解析器错误作为响应:

6A80
4

1 回答 1

12

您的 GPO 命令似乎有很多问题:

80 A8 0000 01       00000001 000000001000 823DDE7A 1240 0
           ^^ ^^^^^ ^^^^^^^^                       ^^^^ ^^
           4. 1.      2.                             3.   5.
  1. 首先,您的 GPO 命令在没有上下文的情况下发送多个数据字节。您需要将数据项包装到 PDOL 相关数据对象中:

    83 10 wwwwwwww xxxxxxxxxxxx yyyyyyyy zzzz
    
  2. 您的终端事务限定符 ( 9F66) 设置了 RFU 位。有效的 TTQ 可能如下所示B620C000

    • B6
      • 支持磁条模式@bit 8
      • 支持 EMV 模式@bit 6
      • 支持 EMV 接触芯片@bit 5
      • 支持在线模式@bit 4
      • 支持在线 PIN @bit 3
      • 支持签名@bit 2
      • 其他位 = RFU
    • 20
      • 不需要在线密码@bit 8
      • 不需要 CMV @bit 7
      • (接触芯片)支持离线 PIN @bit 6
      • 其他位 = RFU
    • C0
      • 发行人更新处理支持@Bit 8
      • 支持消费设备 CVM @Bit 7
      • 其他位 = RFU
    • 00: RFU
  3. 您的终端国家代码无效。终端国家代码必须是 3 位数字值 BCD 编码为两个字节。假设您想使用“124”(加拿大),正确的国家代码将是0124(奥地利:0040、英国:0826、美国:) 0840

  4. Lc 字节(设置为01= 一个数据字节)不反映实际数据长度。在您的情况下,实际数据长度为 16 个字节,因此 Lc 应设置为10. 考虑到您还需要包含 PDOL 相关数据对象的标签和长度,您的 Lc 字节应设置为12(18 个字节)。

  5. 您作为 GPO 命令提供的十六进制字符串未与字节对齐,因此您缺少 Le 字段的半字节。You Le 字段应该设置为Le.

因此,您的 GPO 命令可能如下所示:

80 A8 0000 12 83 10 B620C000 000000001000 823DDE7A 0124 00
于 2014-05-11T09:40:28.517 回答