【问题标题】:always getting 6a82 and 6d00 for reading visa emv card阅读visa emv卡总是得到6a82和6d00
【发布时间】:2019-10-07 18:42:56
【问题描述】:

我正在从 Visa 卡读取数据,但总是收到 PSE 的响应 6a82 和 6d00。 我正在使用 smartcardio,以下是命令 选择 PSE: 00A404000E315041592E5359532E444446303100

处理代码: 80A8000002830000

下面的代码适用于paypak(一种声称与 EMV 兼容的巴基斯坦支付卡),但对于签证它不起作用。

startCardConnection("0");
    String commandVisa = "00A4040007A000000003101000";
    String command_PSE = "00A404000E315041592E5359532E444446303100";
     String command_getProcessingOptionsVISA = "80A8000002830000";
    String response;
    response = executeCardCommand(command_PSE);
    response = executeCardCommand(commandVisa);
    readCardRecords(2);
    response = executeCardCommand(command_getProcessingOptionsVISA);
response = executeCardCommand("80AE8000210000000000000000000000000586000000000005861802020000E44E4B11040001");


  public static String executeCardCommand(String command) {
    if (transmissionTrace)
        System.out.println("SYS: Executing card command:" + command);

    capdu = makeCommandAPDU(command);
    TLV tagsList;
    try {
        if (card == null) {
        System.out.println("SYS: ERR: Card not present/not responding!");
        return null;
        }
        responsedAPDU = card.getBasicChannel().transmit(capdu);

        showRes(responsedAPDU.getBytes());

        tagsList = new TLV(responsedAPDU.getBytes());
        allTagsTLV.getChildren().add(tagsList);
        System.out.println(">>>>>>>>>>>>" + responsedAPDU.toString());

    } catch (CardException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (TLVException e1) {
        // TODO Auto-generated catch block
        System.out.println("SYS: NO tags response. May be correct if not expecting tags.");
    }

    return allTagsTLV.getJson();

    }

【问题讨论】:

    标签: java smartcard smartcard-reader emv smartcardio


    【解决方案1】:

    对 PSE 接触的支持是可选的 - 既适用于卡片,也适用于终端。从终端/内核的角度来看,只有 LoA(AID 列表)方法是强制性的。如 EMV Book 1 第 12.3 章详细描述的,当 PSE 缺失时(状态字 6A82),终端应根据其配置使用 List of AIDs 方法构建候选列表。我不知道你什么时候得到 6D00,但你没有正确执行应用程序选择,所以我猜你是在没有选择应用程序的情况下触发 GPO 和 GenAC 之类的命令。您引用的代码非常错误 - 它不处理任何错误,不正确选择应用程序,不检查 PDOL 存在,不读取 CDOL1 记录,不构建 DOL。老实说,这可能只是巧合。

    【讨论】:

      猜你喜欢
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 2016-01-03
      • 1970-01-01
      • 2020-11-11
      • 2014-04-04
      • 2013-02-10
      相关资源
      最近更新 更多