EMV - GPO 与 PDOL
EMV - GPO with PDOL
我在C平台上工作,我想读取一张卡片的AFL。
如果 AID 的前一个命令 select 没有给我 PDOL 标签,没关系:我可以毫无问题地阅读 AFL。
但是我需要编写一个可以生成 GET PROCESSING OPTION 而不管 PDOL 的方法。
所以问题是:
- 如何编写一个通用方法,尽管有 PDOL?
我必须映射每一个可能的标签吗?
- 如何格式化 GPO
命令与正确的数据?看下面的例子:
SELECT 援助响应
PDOL:9F 1A 02
所以我必须输入终端国家代码,在我的例子中是意大利:380
所以 GPO 调用是:
80 A0 00 00 04 83 02 03 80 00
但我得到的响应是6D 00
:指令代码不受支持或无效
我哪里错了?
我正在 Ingenico Pos(销售点)编程。
发卡机构不只是放置任何标签并期望终端提供数据。您可以从您认证的每个支付方案中获得最佳实践(推荐标签)。此外,如果是您不支持的标签,您可以随时填零并继续。
您有两个选择:
- 发出数据字段为“8300”的命令 - 80 A8 00 00 02 83 00 00
- 发出一条命令,数据字段全部为十六进制零 - 80 A8 00 00 04 83 02 00 00 00
您收到错误消息,因为在选项 1 中您省略了 C-APDU 的 Le 字节 - 此字节对于所有 CASE 4 命令都是强制性的,而在选项 2 中您提供了错误的 INS 字节,A0 而不是 A8。
很高兴知道您非常了解 PDOL 的概念。据我对你的问题的理解,如果 PDOL 不存在,你可以轻松地构造 GPO 命令。我认为您对编写通用函数来构造 GPO APDU 命令有疑问。
首先我想告诉你,如果SELECT响应中存在PDOL信息,那么你应该在GPO命令APDU中发送PDOL数据,否则卡应用程序可能会抛出一些错误。
所以你可以在SELECT命令中收到PDOL时设置一个指示符。如果 PDOL 不存在,您可以简单地发送 80 A8 00 00 02 83 00 00 并且如果您的指标表明需要 PDOL,那么只需解析 PDOL 并从 SELECT 响应中准备一个 PDOL 数据值,如果您知道(如您在问题中所述)在 GPO 命令 APDU 中发送。
如果您不知道什么值,那么您可以在值字段中简单地填充十六进制零。
以你的例子为例:80 A8 00 00 04 83 02 03 80 00。这是正确的命令(我已经更正了 INS 字节)。或者您也可以发送 80 A8 00 00 04 83 02 00 00 00(PDOL 值被零替换)
我认为这个解释可以帮助你得到这两个问题的答案。尝试一下,如果需要进一步说明,请告诉我们。
我在C平台上工作,我想读取一张卡片的AFL。 如果 AID 的前一个命令 select 没有给我 PDOL 标签,没关系:我可以毫无问题地阅读 AFL。 但是我需要编写一个可以生成 GET PROCESSING OPTION 而不管 PDOL 的方法。
所以问题是:
- 如何编写一个通用方法,尽管有 PDOL?
我必须映射每一个可能的标签吗? - 如何格式化 GPO 命令与正确的数据?看下面的例子:
SELECT 援助响应
PDOL:9F 1A 02
所以我必须输入终端国家代码,在我的例子中是意大利:380
所以 GPO 调用是:
80 A0 00 00 04 83 02 03 80 00
但我得到的响应是6D 00
:指令代码不受支持或无效
我哪里错了?
我正在 Ingenico Pos(销售点)编程。
发卡机构不只是放置任何标签并期望终端提供数据。您可以从您认证的每个支付方案中获得最佳实践(推荐标签)。此外,如果是您不支持的标签,您可以随时填零并继续。
您有两个选择:
- 发出数据字段为“8300”的命令 - 80 A8 00 00 02 83 00 00
- 发出一条命令,数据字段全部为十六进制零 - 80 A8 00 00 04 83 02 00 00 00
您收到错误消息,因为在选项 1 中您省略了 C-APDU 的 Le 字节 - 此字节对于所有 CASE 4 命令都是强制性的,而在选项 2 中您提供了错误的 INS 字节,A0 而不是 A8。
很高兴知道您非常了解 PDOL 的概念。据我对你的问题的理解,如果 PDOL 不存在,你可以轻松地构造 GPO 命令。我认为您对编写通用函数来构造 GPO APDU 命令有疑问。
首先我想告诉你,如果SELECT响应中存在PDOL信息,那么你应该在GPO命令APDU中发送PDOL数据,否则卡应用程序可能会抛出一些错误。
所以你可以在SELECT命令中收到PDOL时设置一个指示符。如果 PDOL 不存在,您可以简单地发送 80 A8 00 00 02 83 00 00 并且如果您的指标表明需要 PDOL,那么只需解析 PDOL 并从 SELECT 响应中准备一个 PDOL 数据值,如果您知道(如您在问题中所述)在 GPO 命令 APDU 中发送。
如果您不知道什么值,那么您可以在值字段中简单地填充十六进制零。
以你的例子为例:80 A8 00 00 04 83 02 03 80 00。这是正确的命令(我已经更正了 INS 字节)。或者您也可以发送 80 A8 00 00 04 83 02 00 00 00(PDOL 值被零替换)
我认为这个解释可以帮助你得到这两个问题的答案。尝试一下,如果需要进一步说明,请告诉我们。