首页 > 解决方案 > 阅读visa emv卡总是得到6a82和6d00

问题描述

我正在从 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();

    }

标签: javasmartcardsmartcard-readeremvsmartcardio

解决方案


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


推荐阅读