java-使用ACR122 NFC读取器读取Apple Pay令牌
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-使用ACR122 NFC读取器读取Apple Pay令牌,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2116字,纯文字阅读大概需要4分钟。
内容图文
![java-使用ACR122 NFC读取器读取Apple Pay令牌](/upload/InfoBanner/zyjiaocheng/661/e50758f1826c46a28700d8fa23bf9fc0.jpg)
我有一个ACR122 NFC读取器,试图查看我是否可以读取Apple Pay生成的令牌.以下是我尝试使用的Java代码,但每次仅返回4个字母数字字符. Apple Pay iphone可感应nfc读取器-我需要发送特定的apdu命令来检索令牌吗?
import java.io.*;
import java.util.*;
import javax.smartcardio.*;
public class CardTest {
final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();
public static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
int v;
for ( int j = 0; j < bytes.length; j++ ) {
v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
public static void main(String[] args) throws Exception {
TerminalFactory factory = TerminalFactory.getInstance("PC/SC", null);
System.out.println(factory);
List<CardTerminal> terminals = factory.terminals().list();
System.out.println("Terminals: " + terminals);
if (terminals.isEmpty()) {
throw new Exception("No card terminals available");
}
CardTerminal terminal = terminals.get(0);
// Keep looping looking for cards until the application is closed
while( true )
{
terminal.waitForCardPresent( 0 );
try {
Card card = terminal.connect("*");
CardChannel channel = card.getBasicChannel();
CommandAPDU command = new CommandAPDU(new byte[]{(byte)0xFF,(byte)0xCA,(byte)0x00,(byte)0x00,(byte)0x04});
ResponseAPDU response = channel.transmit(command);
byte[] byteArray = response.getBytes();
System.out.println( bytesToHex( byteArray ) );
Thread.sleep(1000);
} catch (CardException e) {
e.printStackTrace();
}
}
}
}
解决方法:
您发出的命令
FF CA 00 00 04
会为您获取iPhone智能卡(安全元素)的防冲突标识符(如果超过4个字节,则为防冲突标识符的前4个字节).
Apple Pay(通过非接触式界面)对非接触式支付卡实施EMV标准.因此,为了与该非接触式EMV支付卡进行通信,您需要实现该协议.
顺便说一句.不要将支付令牌视为字节字符串.它远不止于此. EMV付款令牌可以是
>由临时“信用卡号”(等)和用于生成交易授权的密钥组成的临时支付“卡”(限于单次/限时/有限次数的交易使用).通常用于HCE应用程序,例如Google Wallet)
>永久付款卡(单独但固定的信用卡号,有效期,秘密密钥等),用于授权以后从链接的信用卡中扣除的付款(->似乎与Apple Pay一起使用-并且还用于基于安全元素的Google电子钱包).
内容总结
以上是互联网集市为您收集整理的java-使用ACR122 NFC读取器读取Apple Pay令牌全部内容,希望文章能够帮你解决java-使用ACR122 NFC读取器读取Apple Pay令牌所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。