如何从IsoDep获取额外的卡数据?

时间:2015-04-08 21:53:11

标签: android nfc credit-card

我真的是使用NFC编程的新手。 我想访问例如卡上的NFC-标签上的帐号。 我已经发现该卡(PayPass,Visa aso。)是一个IsoDep-Tech。

到目前为止我的代码:

Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
IsoDep isoDep = IsoDep.get(tag);
isoDep.connect();
byte[] result = isoDep.transceive(??????????????????);

我知道如果你想访问卡上的数据,你必须在transeceive方法中使用APDU。我不确定我要输入什么。

我需要写什么来访问卡上的数据?

1 个答案:

答案 0 :(得分:1)

请看一下这个开源项目:

https://github.com/devnied/EMV-NFC-Paycard-Enrollment

  

用于从NFC EMV信用卡读取和提取数据的Java库

我将它用于法国信用卡,效果很好。

<强> UPDATE1

所有APDU都由库创建和管理。你只需要实现接口IProvider: https://github.com/devnied/EMV-NFC-Paycard-Enrollment/blob/master/library/src/main/java/com/github/devnied/emvnfccard/parser/IProvider.java

这里是IProvider的一个实现: https://github.com/devnied/EMV-NFC-Paycard-Enrollment/blob/master/sample/src/main/java/com/github/devnied/emvnfccard/provider/Provider.java

IsoDep被发送到Provider类,并且在方法收发中,APDU被发送:

    /**
     * Tag comm
     */
    private IsoDep mTagCom;

    @Override
    public byte[] transceive(final byte[] pCommand) throws CommunicationException {
        [...]
        byte[] response = null;
        [...]
        // send command to emv card
        response = mTagCom.transceive(pCommand);
        [...]

        return response;
    }