如何实现NFC支付?

How to implement NFC payments?

我想将 NFC 支付添加到我正在开发的 Android 应用程序中,以允许用户直接向 POS 支付。我有兴趣支持尽可能多的 POS。

我想知道这是否真的可行,还是取决于专有技术 protocols/hardware。

我找到了有关读取非接触式卡信息的信息(和代码示例),但找不到有关支付本身的任何库或代码。

我知道 EMV 规范,但它看起来很长且技术性强,我想在深入研究之前了解它是否真的可行。

我们不能使用 Google 钱包,因为我不在美国。

阅读的起点是"Host Based Card Emulation"

https://en.wikipedia.org/wiki/Host_card_emulation

https://developer.android.com/guide/topics/connectivity/nfc/hce.html

您将无法在您的应用程序中支持 NFC 支付,除非您是一家拥有 Visa/Mastercard/etc 协议的银行,并且可以访问证书来签署您的 EMV 交易。

Contactless EMV transactions are not encrypted。这就是为什么您可以轻松嗅探非接触式交易或读取非接触式支付卡信息的原因。

由于卡中嵌入了特定于发卡机构(例如:维萨卡、万事达卡)的证书,因此交易仍然是安全的。此证书受保护(无法读取)。它用于签署交易细节(金额、日期、随机标识符等),以便 POS 和交易处理器(在银行端)可以验证和验证交易。没有有效签名,您的交易将被拒绝。

但是,由于所有主要发卡机构都在其最新规范中添加了移动支付支持(例如:mastercard PayPass 3.0, Visa PayWave 2.1)。他们最终可能会为 phone 上的其他应用程序提供 API 以启动交易。 尽管如此,我的理解是 phones 将需要一些特定的硬件(例如:加密处理器)来处理交易。