如何使用 Windows Phone 8 NFC 应用程序向智能卡发送 APDU 命令

Posted

技术标签:

【中文标题】如何使用 Windows Phone 8 NFC 应用程序向智能卡发送 APDU 命令【英文标题】:How to send APDU commands to a smartcard using Windows Phone 8 NFC application 【发布时间】:2013-10-04 14:46:00 【问题描述】:

我需要构建一个 Windows Phone 8 应用程序,它可以使用简单的 APDU 命令与智能卡进行通信。智能卡包含我的应用程序需要在手机 UI 上呈现的数据。我们目前有 androidios 应用程序执行此操作,现在需要添加 Windows 版本。

我花了相当多的时间来使用 Proximity API,并且认为该 API 太受限制而无法满足我的需求。当我向诺基亚 Lumia 620 上的 NFC 读卡器出示卡片时,我收到了 DeviceArrived 事件,但没有消息事件。我相信这是因为该卡没有使用 NDEF。我也有一些可以正常工作的标签。

所以看来,前进的道路是忘记接近 API 并寻找可以更本机地与 NFC 阅读器对话的库 (C++),希望这将允许我的应用程序使用简单的 APDU 命令与卡进行通信。

是否有人在 Windows Phone 8 应用上使用 APDU 与智能卡进行通信,如果有,使用的技术堆栈是什么?我希望将 C# 托管环境(即使用设计师等创建 UI)与一个库结合使用,该库可以通过手机中的 NFC 读卡器处理与卡的通信。

任何建议将不胜感激。

【问题讨论】:

我不认为有这方面的 API。我在寻找时也没有找到明确的答案,但如果您最终找到与使用 APDU 的人交谈的方法,我会很高兴收到您的来信。 嗨,Paul,我目前正在与认识 NXP 的某个人交谈,最初的回答是“不”,无法完成。我希望在 Cartes 之后得到一些反馈,所以如果我听到任何消息,我会更新这篇文章。 【参考方案1】:

从 Windows Phone 8.1 开始支持它,但它需要驱动程序支持,目前仅适用于 NXP PN547 NFC 芯片,该芯片仅适用于 Lumia 830 和 73x 设备(但未来大多数设备也应该支持它)

假设硬件限制对您来说不是什么大问题,这里有一些示例代码展示了 API 的使用:http://nfcsmartcardreader.codeplex.com

【讨论】:

【参考方案2】:

有好消息也有坏消息。好消息是肯定有一个托管的 APDU 级 API。坏消息是你不能使用它!对于初学者,API 仅提供对手机安全元件的访问,而不是通过 NFC 访问外部卡。似乎没有记录在案的 API。

即使存在,也需要与运营商/移动网络运营商/制造商签订特殊合同才能使用它们,并与 Microsoft 签订另一份合同才能将它们送入商店。在这里,每个人都有自己的利益,而 MNO 尤其倾向于嫉妒地保护他们。只需看看 Google 电子钱包在 NFC 支付方面遇到的困难就知道了。

这里的挑战是业务,而不是文档。如果您有业务方面,您将拥有 API - 但恐怕我无法帮助您!

【讨论】:

【参考方案3】:

好的,看来我们是在做生意。我一直在使用 Windows Phone 8.1 提供的 Windows.Devices.SmartCards 命名空间测试智能卡通信。

有一个很大的缺点,你需要一个带有新 PN547 芯片组的 windows phone 来玩它。但我有一个,它工作得很好。几行代码,我正在与使用 APDU 的 JCOP 智能卡交谈。

这里有一个很棒的介绍视频:

http://channel9.msdn.com/series/Building-Apps-for-Windows-Phone-8-1/15#time=25m40s

【讨论】:

以上是关于如何使用 Windows Phone 8 NFC 应用程序向智能卡发送 APDU 命令的主要内容,如果未能解决你的问题,请参考以下文章

Windows Phone 8.1 上的 WiFi 直连

Windows Phone 8部分新应用展示

如何使用 PushSharp 为 Windows Phone 8 设置徽章值

如何在 Windows Phone 8 中使用 ValueConverter 作为 StaticResource

如何使用 Windows Phone 8 发布到 RESTful API

如何发送推送通知 windows phone 8 应用程序?