使用java验证引脚返回6a86

时间:2016-03-30 07:35:55

标签: java smartcard apdu

我有SPR332 pinpad阅读器,我必须在java上编写程序,验证银行卡的引脚。

这是我的PINverifyStructure:

bTimeOut = 0х00
bTimeOut2 = 0х00
bmFormatString = 0x82
bmPINBlockString = 0x47
bmPINLengthFormat = 0x04
wPINMaxExtraDigitMax = 0x0c 
wPINMaxExtraDigitMin = 0x00 
bEntryValidationCondition = 0x02
bNumberMessage = 0x01
wLangId = 0x09 0x04 
bMsgIndex = 0x00
bTeoPrologue = 0x00 0x00 0x00
ulDataLength = apduLength 0x00 0x00 0x00

验证APDU命令是:

CLA = 0x00
INS = 0x20
P1 = 0x00
P2 = 0x00
LC  = 0x08
0x20
0xff
0xff
0xff
0xff
0xff
0xff
0xff

此后我在pinpad上输入pin,然后我收到APDU响应6a86。在APDU响应规范中,它表示"错误的P1或P2参数。"

请帮助,我的命令有什么问题?

我将P2改为0x01,响应是相同的6a86

2 个答案:

答案 0 :(得分:0)

请参阅EMV Book 3,6.5.12 VERIFY命令响应APDU。

P2应 0x80 - PlaintextPin或 0x88 - EncipheredPin。在你的情况下 - 0x80。

答案 1 :(得分:0)

我终于找到了为什么回复是6a81。

因为我有EMV卡,所以应该按特定顺序调用VERIFY命令(在SELECT FILE,GET PROCESSING OPTIONS,READ RECORD,GET DATA之后)。

现在我有9000. Thx all