Android 应用程序如何通过 NFC 存储和模拟信用卡以进行非接触式支付处理?

Posted

技术标签:

【中文标题】Android 应用程序如何通过 NFC 存储和模拟信用卡以进行非接触式支付处理?【英文标题】:How can an Android app store and emulate credit card over NFC for contact-less payment processing? 【发布时间】:2019-06-01 06:38:52 【问题描述】:

NFC Host Card Emulation mode 摆脱了本地安全元件 (SE),并通过利用存储在云上的 SE 以及多个参与方的cooperation 来促进支付,例如商家、服务、提供商、发卡机构等。通常情况下,Apply Pay(可能仍使用本地 SE)、Google Pay 和 Samsung Pay 就是这样工作的。

但是,存在应用程序,例如Cards - Mobile Wallet、MyCard - NFC Payment、Contactless Credit Card Reader声称可以将卡信息存储在手机本地,并可以在带有非接触式读卡器的商店使用手机进行支付。我试过使用Cards。它通过 NFC 读取卡信息(信用卡号和有效期),并显示:

信用卡 (card_A) 是美国银行的,我很确定它不支持非接触式支付。我有另一张来自其他国家的其他银行的借记卡 (card_B),它支持非接触式支付。但是,我没有任何方法可以测试此应用是否适用于 card_B

我的问题如下:

    支持非接触式支付的借记卡/信用卡(类似card_B的那种),他们遵守什么支付标准?仅供参考,card_Acard_N 都有 EMB 芯片,但一个支持非接触式支付,另一个不支持。 我可以考虑支付解决方案吗?应用 Pay、Google Pay 和 Samsung Pay 解决方法,以在本身不支持非接触式支付的卡上启用非接触式支付? 如果我上面链接的 android 应用程序成功运行,它们是否仍使用 NFC 主机卡仿真模式? 最后,EMV 卡有一个秘密存储在卡上的密钥。我惊讶地看到Cards 应用程序读取和存储卡信息 没有银行或商家的任何额外授权,然后只是声称能够进行非接触式支付?在 Google Pay 中,他们使用令牌化并将密钥存储在设备上,该设备会不时补充。为什么这些类别的非接触式卡不使用任何基于密钥的质询-响应协议来进行支付?

【问题讨论】:

【参考方案1】:

看来,在没有参考资料的情况下,我会带上这个前锋……因为卡片系统是一个双向过程。 模拟器必须像卡片对读卡器发送的查询一样做出反应。 因此,如果想要模拟卡片......它必须扫描并记录卡片和阅读器之间的精确对话。然后,模拟与 android HCE 的对话。 好处是手机比卡片更灵活……所以我们假设手机可以模仿任何形式的协议,因此任何卡片和读卡器都可以进行对话。 现在扫描和解密卡片已经做得很好了。但由于卡片各有不同,读卡器也可能有其自身的复杂性……而且很可能因提供销售点读卡器的银行而异。

我也刚开始那个项目。我差不多就是那个时候。我要记录对话。

【讨论】:

【参考方案2】:

    如果是非接触式,它们遵循 EMV 非接触式标准 https://www.emvco.com/emv-technologies/contactless/。

    是的,您可以将 Apple/Google Pay 与不支持非接触式的卡一起使用。但是,根据发卡金融机构是否允许其卡与 Google/Apple Pay 兼容,您将受限于卡是否可以使用。

与 Google Pay 兼容的机构 - https://pay.google.com/about/banks/

Apple Pay 兼容机构 - https://support.apple.com/en-us/HT204916

    Google Pay 移至 HCE+NFC https://www.pocket-lint.com/apps/news/google/135017-what-is-android-pay-how-does-it-work-and-which-banks-support-it

    通过将单笔交易限额保持在 15 英镑至 60 英镑之间,银行最大限度地减少了客户的摩擦,并且不会要求像芯片+密码这样的挑战响应来进行较大的交易或每日非接触式限额已用完(~$100)

【讨论】:

以上是关于Android 应用程序如何通过 NFC 存储和模拟信用卡以进行非接触式支付处理?的主要内容,如果未能解决你的问题,请参考以下文章

android的NFC

NFC在Android中的应用

如何让我的应用通过 NFC 发送蓝牙配对请求

在android平板中如何进行NFC通信,就是通过rfid读卡器连接到平板的USB后,读取的内容显示到平板上

如何在android中测量NFC RSSI?

通过 NFC(钱包支付)将 Apple Pay 与 Android 应用程序集成