我真的是使用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。我不确定我要输入什么。
我需要写什么来访问卡上的数据?
答案 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;
}