你好我是安卓开发者。我已经构建了 android NFC 读写器和光束。所以使用 writer 我可以在 NFC 标签上写入简单的数据,并且在 reader 的帮助下我可以从标签中读取数据。使用光束,我可以在两个支持 NFC 的设备之间传输数据。所以到目前为止一切正常。现在我想从事 NFC 支付。我在安卓平台上工作。所以我的问题是用于支付的 NFC 阅读器是如何工作的。他们是在 Beam 上工作,还是我们的设备充当 NFC 阅读器的 nfc 标签,它只是从设备读取数据。意味着在设备方面我如何确认该阅读器用于支付或其他用途。我阅读了有关 android 的 HCE 的信息,它对理解概念很有帮助。但我对读者概念和工作场景有点困惑。有没有人可以帮助我理解这个东西,需要帮助。谢谢你。
1 回答
当您谈论付款时,我假设您指的是基于知名信用卡计划的付款,例如 AmEx、Discover、JCB、MasterCard、VISA 等。他们的付款协议在EMVCo中是标准化的。请注意,还有其他(不那么广泛)使用不同方法的支付方案。
对于基于 EMV 的支付卡的非接触式协议,它们通常遵循以下方案:
- ISO/IEC 14443 防碰撞和激活(A 型或 B 型)
- ISO/IEC 14443-4 传输协议
- ISO/IEC 7816-4 APDU
- 支付方案特定的命令集(这些命令集的读取器端在 EMVCo 的 EMV 非接触式支付系统规范中进行了标准化,针对不同的信用卡/借记卡方案分为 5 个不同的内核)
NfcA
(在 Android 的读写器模式 NFC API 术语中,“ISO/IEC 14443 防冲突和激活(A 类或B 类)”将是NfcB
“ISO/IEC 14443 防冲突和激活(类型A 或 B 型)”和“ISO/IEC 14443-4 传输协议”将是IsoDep
。)
所以支付终端(如POS)为上述协议栈实现了读卡器端。用户侧支付设备(例如塑料信用卡、带有虚拟信用卡的手机)实现了这些协议的卡侧。
所以对于你的问题:
这些支付卡方案不涉及 Beam(或 NFC 的点对点模式)。
NFC 的读写器模式(在 Android 设备上实现)大部分能够实现这些方案的支付终端端。
在这种情况下,我不喜欢“充当 NFC 标签”这个词。NFC 标签(由NFC 论坛定义)是具有读取(和可选写入)访问权限的纯数据容器,可以在其中存储 NDEF 消息。然而,支付卡是具有处理能力(即它们执行程序代码)、安全数据存储和加密能力的(非接触式)智能卡。除了可自由读取的静态数据外,它们通常还包含处理来自读取器端的请求的程序逻辑,并且它们还包含用于生成支付交易等签名的密钥(不能通过传统方式从卡中读取)。
Android 的 HCE 工具允许开发人员在 Android 设备上实现上述协议栈。因此,可以将 HCE 和 Android 设备置于充当非接触式智能卡并解释 ISO/IEC 7816-4 智能卡命令 (APDU) 的模式。