SCardTransmit()总是返回6d00

时间:2012-10-29 09:00:32

标签: iphone smartcard smartcard-reader emv

我正在尝试读取信用卡上的姓名,卡号,有效期等。但在致电6d00时始终会返回SCardTransmit

我正在使用预先定义的AID,我已经用Google搜索有效(如果我错了,请纠正我)。这是:

AID_LIST = { 
  "A0000000421010",
  "A0000000422010",
  "A0000000031010",
  "A0000000032010",
  "A0000000041010",
  "A0000000042010",
  "A00000006900",
  "A0000001850002"
}

提前致谢。

2 个答案:

答案 0 :(得分:11)

我不熟悉您正在使用的此API,但您必须发送以下APDU命令序列:

  1. 选择PSE(适用于联系人卡片),由第1册,11.3中的EMV指定。一个例子是“00A404000E315041592E5359532E444446303100”
  2. 返回SFI后,您可以阅读记录以找出支持的AID。但是,您可以使用您指定的预定义AID通过“反复试验”执行此操作,并按照第1册,12.3.3中的指南调用SELECT AID。
  3. 您可以调用命令“GET PROCESSING OPTIONS”来查看可读取的记录,也可以读取所有可能的记录,调用“READ RECORD”命令扫描可能的记录。在其中一条记录中,您将获得所需的数据。
  4. 通常在同一记录中,您将存储持卡人姓名,PAN和Track 2自行决定的数据(其中包含到期日期)。

    标签列于第3册。

    申请主帐号(PAN) - 5A 持卡人姓名 - 5F20 跟踪2自由选择数据 - 9F20

    有关第2道的有用信息: http://en.wikipedia.org/wiki/Magnetic_stripe_card

    以上序列的示例: http://code.google.com/p/javaemvreader/wiki/ExampleOutput

    EMV规格: http://www.emvco.com/specifications.aspx?id=223

    ISO 7816中列出了可能的返回代码,例如61XX,9000等。以下是一个很好的概述:http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-4_5_basic_organizations.aspx

答案 1 :(得分:2)

您需要查找/购买ISO 7816,EMV规格和供应商卡规格,否则您不知道自己在做什么。