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

标签 android nfc credit-card

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

到目前为止我的代码:

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

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

我必须写什么才能访问卡上的数据?

最佳答案

请看一下这个开源项目:

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

A Java library used to read and extract data from NFC EMV credit cards

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

更新1

所有 APDU 均由图书馆创建和管理。您只需要实现接口(interface) 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类,在方法transceive中发送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;
    }

关于android - 如何从 IsoDep 获取额外的卡数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29526041/

相关文章:

安卓 Google+ session

android - 有时在移动设备中不接收推送通知 GCM

android - 在 Android 委托(delegate)之前拦截 Intent (NFC)

android - 不再能够在 MavenPublication 中使用 bundleReleaseAar

java - 将 JsonString 转换为自定义 java ArrayList

java - 安卓光束 : suppress "Tab to beam"

android - 如果标签读取器没有相对运动,NFC 标签可以激活吗?

testing - authorize.net 沙盒测试错误 "The merchant does not accept this type of credit card"

numbers - 信用卡/借记卡号码是数字还是整数?

ios - 错误 - Paypal 中的 "The merchant does not accept payments of this type"