EMV內核使用中的常見問題


  EMV內核在使用上會由於調用不當引起的許多問題,本文旨在基於內核LOG(也就是與IC卡交互的指令LOG)的基礎上,對一些常見問題作初步的分析與解答,方便不熟悉EMV規范的同學參考。

本文的前提是你已經得到了一份與IC卡交互的指令LOG,比如

發送:00 A4 04 00 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00
接收:6F 24 84 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 12 88 01 01 5F 2D 08 7A 68 65 6E 66 72 64 65 9F 11 01 01 90 00

發送:00 B2 01 0C 00
接收:6A 83

一、      下載AID、公鑰、黑名單參數

  AID與公鑰一般是POS機第一次與后台簽到的時候自動下發的,數量會比較多,如果中途出現失敗,十之八九是通訊異常,比如modem、gprs通訊斷了等原因,與EMV內核沒什么關系。

二、      選擇PSE

  根據規范,現在終端都要支持目錄選擇方法。如果給IC卡發送第一條的指令不是選擇PSE,也就是

發送:00 A4 04 00 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00

       那么就是終端參數沒設置好。

三、      建立候選應用列表

  如果找不到GPO指令,也就是

發送:80 A8 00 00 …….(以80 A8開頭的)

       那么就是終端沒有AID參數,或者終端沒有這張IC卡的AID。

      

  那么如何知道這張IC卡的AID呢?如果IC卡是支持選擇PSE的話,是可以知道的,如果不支持就無法知道。比如

發送:00 A4 04 00 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 00
接收:6F 24 84 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 12 88 01 01 5F 2D 08 7A 68 65 6E 66 72 64 65 9F 11 01 01 90 00

發送:00 B2 01 0C 00
接收:70 2A 61 28 4F 07 A0 00 00 03 33 01 01 50 0B 50 42 4F 43 20 43 72 65 64 69 74 9F 12 0F 43 41 52 44 20 49 4D 41 47 45 20 30 30 33 35 90 00

  查找4F標簽,它的值就是IC卡支持的AID,可能會有多個。

四、      初始化應用

  如果能找到GPO指令,也就是

發送:80 A8 00 00 …….(以80 A8開頭的)

       那么表示應用已經初始化了,但是GPO命令會把一些數據發給IC卡,比如交易金額、貨幣代碼等等,要確保這些數據與發往服務器的55域數據一致。

       那么如何解析GPO指令里的數據呢?先得看它的前一條指令:選擇AID

發送:00 A4 04 00 08 A0 00 00 03 33 01 01 02 00
接收:6F 58 84 08 A0 00 00 03 33 01 01 02 A5 4C 50 0B 50 42 4F 43 20 43 72 65 64 69 74 87 01 01 5F 2D 04 7A 68 65 6E 9F 11 01 01 9F 12 0D 49 43 42 43 20 50 62 6F 63 43 61 72 64 9F 38 0C 9F 7A 01 9F 02 06 5F 2A 02 DF 69 01 BF 0C 0F D1 02 31 32 C2 04 49 43 42 43 9F 4D 02 0B 0A 90 00

       查找9F38標簽,它的值叫PDOL,根據PDOL才能組出GPO的數據。

       假如GPO指令是這樣的

發送:80 A8 00 00 0C 83 0A 00 00 00 00 25 89 63 01 56 00 00

       那么從第8個字節開始就是根據PDOL組出來的數據,解析如下:

TAG

名稱

長度

9F7A

電子現金終端支持指示器

01

00

9F02

授權金額(數值型)

06

00 00 00 25 89 63

5F2A

交易貨幣代碼

02

01 56

DF69

SM2算法支持指示器

01

00

常用的判斷規則是:

標簽9F7A,如果是電子現金消費,則必須為01

標簽9F02,必須與用戶輸入的交易金額一致

標簽5F2A,國內都是01 56

標簽DF69,支持國密就為01

五、      讀記錄應用

讀記錄步驟在GPO命令之后,就是一大堆的00 B2開頭的指令,從中查找標簽8C,它的值叫CDOL1,后面判斷的時候要用到

假設CDOL1的值為9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 37 04 9F 21 03 9F 4E 14

六、      生成第一次應用密文GENERATR AC

  查找第一條80 AE開頭的指令,比如

發送:80 AE 80 00 34 00 00 00 25 89 63 00 00 00 00 00 00 01 56 00 80 04 00 00 01 56 13 07 03 00 59 4F 0D E3 19 15 27 53 75 6E 79 61 72 64 20 45 4D 56 20 54 65 73 74 20 6D 65 72 00

       注意第3個字節,如果是電子現金消費則是40,如果是標准借貸記則是80,如果是其它值就說明有錯誤。

       從第6個字節開始就是根據CDOL1組出來的數據,解析如下:

TAG

名稱

長度

9F02

授權金額(數值型)

06

00 00 00 25 89 63

9F03

其他金額(數值型)

06

00 00 00 00 00 00

9F1A

終端國家代碼

02

01 56

95

終端驗證結果TVR

05

00 80 04 00 00

5F2A

交易貨幣代碼

02

01 56

9A

交易日期

03

13 07 03

9C

交易類型

01

00

9F37

不可預知數

04

59 4F 0D E3

9F21

交易時間

03

19 15 27

9F4E

商戶名稱

14

53 75 6E 79 61 72 64 20 45 4D 56 20 54 65 73 74 20 6D 65 72
Sunyard EMV Test mer

常用的判斷規則是:

標簽9F02,必須與用戶輸入的交易金額一致,必須與GPO命令一致

標簽9F03,國內都是6字節00

標簽9F1A,國內都是01 56,否則是奇怪的值就是終端參數沒設置好

標簽95,每個bit位的說明如下

字節1 bit8 未進行脫機數據認證(標簽9F33錯誤,終端參數沒設置好)
字節1 bit7 脫機靜態數據認證SDA失敗(沒有公鑰)
字節1 bit6 IC卡數據缺失
字節1 bit5 卡片出現在終端異常文件中(黑名單)
字節1 bit4 脫機動態數據認證DDA失敗(沒有公鑰)
字節1 bit3 復合動態數據認證CDA/應用密文生成失敗
字節1 bit2 執行了脫機靜態數據認證SDA(沒有公鑰)
字節2 bit8 IC卡和終端應用版本不一致(AID參數不對)
字節2 bit7 應用已過期(查看終端日期)
字節2 bit6 應用尚未生效(查看終端日期)
字節2 bit5 卡片不允許所請求的服務
字節2 bit4 新卡
字節3 bit8 持卡人驗證失敗
字節3 bit7 未知的CVM
字節3 bit6 PIN重試次數超限(IC卡脫機PIN被鎖)
字節3 bit5 要求輸入PIN,但密碼鍵盤不存在工作不正常(沒有輸密碼)
字節3 bit4 要求輸入PIN,密碼鍵盤存在,但未輸入PIN(輸入空密碼)
字節3 bit3 輸入聯機PIN
字節4 bit8 交易超過最低限額
字節4 bit7 超過連續脫機交易下限
字節4 bit6 超過連續脫機交易上限
字節4 bit5 交易被隨機選擇聯機處理
字節4 bit4 商戶要求聯機交易
字節5 bit8 使用缺省TDOL
字節5 bit7 發卡行認證失敗
字節5 bit6 最后一次 GENERATE AC 命令之前腳本處理失敗
字節5 bit5 最后一次 GENERATE AC 命令之后腳本處理失敗
括號里是可能的錯誤原因,根據實際95的值比對着查找原因。

標簽5F2A,國內都是01 56

標簽DF69,支持國密就為01

標簽9A,格式必須正確

標簽9F21,格式必須正確

 

發送的數據檢查無誤后,還要檢查55域數據是否與上述數據一致,這步至關重要,如果數據不一致后台就會報作弊卡。

七、      QPBOC相關

如果最后一條命令是GPO命令(就是80 A8開頭的),那么一般是IC卡余額不足而轉聯機了。

如果最后一條命令是讀記錄(就是00 B2開頭的),而IC卡的錢被扣了而終端提示交易失敗,基本是沒有公鑰導致的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM