SCardTransmit()总是返回6d00

Hel*_*miB 0 iphone smartcard emv smartcard-reader

我正在尝试读取信用卡上的姓名,卡号,有效期等.但总是6d00在打电话时回来SCardTransmit.

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

AID_LIST = { 
  "A0000000421010",
  "A0000000422010",
  "A0000000031010",
  "A0000000032010",
  "A0000000041010",
  "A0000000042010",
  "A00000006900",
  "A0000001850002"
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

kdm*_*min 11

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

  1. 选择PSE(用于联系卡),由书1中的EMV指定,11.3.一个例子是"00A404000E315041592E5359532E444446303100"
  2. 返回SFI后,您可以读取记录以找出支持的AID.但是,您可以使用您指定的预定义AID通过"反复试验"执行此操作,并按照第1册,第12.3.3节的指导调用SELECT AID.
  3. 您可以调用命令"GET PROCESSING OPTIONS"来查看可以读取的记录,也可以读取所有可能的记录,调用"READ RECORD"命令来扫描可能的记录.在其中一条记录中,您将获得所需的数据.

通常在同一记录中,您将存储持卡人姓名,PAN和Track 2自行决定的数据(其中包含到期日期).

标签列在第3册中.

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

有关Track 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