读写EMV卡

Reading and writing to EMV card

这是新东西,我从来没有做过任何与在线交易或 debit/credit 卡相关的编码。我被告知要研究 EMV(EuroPay Master Visa)卡以在 Android 应用程序中实施它。

到目前为止,我已经收集了关于

的信息

所有这些过程都发生在卡与卡之间reader。 在我的例子中,卡 reader 连接到 android 设备。我可能需要在 android 应用程序中向用户显示卡的详细信息(例如:显示卡号的最后 4 位)。 我的问题是

  1. 如果我想验证卡,APDU 命令字段中的可能值是什么?
  2. 如何使用 Java 在卡 reader 和设备之间进行通信。

PS: 我不需要任何代码。我只需要一个简单的解释,我会在理解概念后继续研发。

EMV Card Specification首先你了解了EMV 4.2

然后您必须在 UsbManager Class 的帮助下与 reader 到 android 设备通信。然后将特定的 APDU 发送到卡,然后卡提供以下信息。

你要的是EMV课程,SO问题就这么多了。

如@kushal 所述,您必须通读 EMV Specifications,它们包含大量命令示例,并将描述完成交易所需的命令序列。

但是通过这样做,您想要实现的是编写一个 EMV 内核,这既昂贵又耗时,如 SO question 中所述。计算几年的发展,不考虑银行集成部分......如果你想要实现的只是处理交易,你想要做的就是购买一个 EMV 内核(例如:来自 level2kernel, verifone、Ingenico 等)。

您可以查看 Interac Flash 交易(非接触式 EMV)示例 here,这将使您大致了解协议的复杂性。