如何在EMV非接触式卡上签署交易?

时间:2018-12-14 03:47:12

标签: contactless-smartcard emv

我读到here,说EVM卡将签署一些交易数据。

我想用我的卡,手机来完成此操作,并验证结果上的签名是否正确。

首先,我发出了以下命令(“ request APDU”):

  

00:A4:04:00:0E:32:50:41:59:2E:53:59:53:2E:44:44:46:30:31:00

“应用程序ID”之一是:

  

A00000038410

因此,我发出了以下命令(“选择付款应用程序”):

  

00:A4:04:00:07:A0:00:00:00:03:10:10:00

并返回此“处理选项数据对象列表(PDOL)”:

  

9F66049F02069F37045F2A02

我阅读了here的解码方式,因为在任何地方都找不到官方规格:

  
      
  • 9F6604-标签9f 66表示终端交易限定符
  •   
  • 9F0206-标签9f 02代表授权金额。 PDOL列表中必须添加授权的数量,并将其编码为6小时字节。
  •   
  • 9F3704-标签9f 37代表不可预测的数字,因此将其编码为4个字节并将其添加到列表中
  •   

here如何对此进行解码:

  
      
  • 5F2A02-TX货币代码
  •   

我知道下一步是运行“获取处理选项”,但这是我遇到的问题。我尝试过:

  
      
  • 80:A8:00:00:02:83:00:00
  •   
  • 80:A8:00:00:12:83:10:01:02:03:04:05:06:07:08:01:02:03:04:05:06:07:08:00
  •   
  • 80:A8:00:00:12:83:10:F3:20:40:00:00:00:00:01:00:00:04:04:06:03:05:08:00
  •   
  • 80:A8:00:00:02:83:10:F3:20:40:00:00:00:00:01:00:00:04:04:06:03:05:08:00
  •   

所有人都返回了6D:00的结果(指令代码未编程或无效)。

我尝试查看“ emv book 3”和“ emv book 4”,但似乎都没有包含相关信息。

接下来我需要做什么才能进行交易,签名并检查结果?

2 个答案:

答案 0 :(得分:0)

您的GPO命令需要提供卡所要求的PDOL值。请求的标签是:

    Uri video = Uri.parse(response.body().getVideo());
    mProgressBar.setVisibility(View.GONE);
    mVideoView.setVisibility(View.VISIBLE);
    mVideoView.setZOrderOnTop(true);
    mVideoView.setVideoURI(video);

因此,这些命令需要以相同的顺序提供它们,并具有预期的长度。

假设您要发送以下示例值:

9F66 - 4 bytes
9F02 - 6 bytes
9F37 - 4 bytes
5F2A - 2 bytes

您的GPO命令将如下所示:

9F66: 11223344
9F02: 112233445566
9F37: 11223344
5F2A: 1122

PDOL数据为80A800001283101122334411223344556611223344112200 的地方。

希望这会有所帮助

答案 1 :(得分:0)

如果在选择应用程序的响应中找到了PDOL,则需要在GPO命令中传递PDOL标签的值,

可以找到一篇很好的文章Here。希望对您有帮助。

enter image description here