首页 文章

使用java验证引脚返回6a86

提问于
浏览
-1

我有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

    请参见EMV Book 3,6.5.12 VERIFY命令响应APDU .

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

  • 0

    我终于找到了为什么回应是6a81 .

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

    现在我有9000. Thx all

相关问题