1. 程式人生 > >EMV技術學習和研究(十)聯機處理 以及 交易結束

EMV技術學習和研究(十)聯機處理 以及 交易結束

轉載請註明出處

作者:小旭

前面終端執行完終端行為分析後,如果在GAC1的時候,卡片返回ARQC,那麼終端就需要進行聯機交易流程的處理,這一部分我們主要討論一下聯機交易的處理過程。

在終端獲取到卡片返回ARQC後,終端先發起8583報文請求,然後接收到後臺返回的報文,提取相關的IC卡資料域。

插個例子,看看某個髮卡行返回的55域

91 0A E3 44 EE 82 E0 0C A8 76 30 30 72 12 
86 10 04 DA 9F 79 0A 00 00 00 02 00 00 B3 
AB A7 E8 00 

第一步:

處理ARPC(如果不包含,則跳過;如果包含並且AIP特性標誌不支援髮卡行認證,則跳過)

收到聯機返回報文後,獲取tag“91”,即ARPC,通過外部認證指令將ARPC發給卡片,如果卡片響應9000,說明ARPC校驗通過,否則發起衝正。

第二步:

處理髮卡行指令碼

再看tag72(或71,在圈存交易時,不允許出現兩個指令碼),這個是髮卡行返回指令碼採用tag72作為標籤,72後面還是一個TLV,解析tag86(髮卡行指令碼命令),獲取到

04 DA 9F 79 0A 00 00 00 02 00 00 B3 AB A7 E8 00

再通過指令將這個命令給到卡片,整個資料就是一個指令,不需要再新增內容,實際操作如下:

send:15
04 DA 9F 79 0A 00 00 00 02 00 00 B3 AB A7 E8 
rec:3
90 00 

終端並不關心這個指令碼命令是要做什麼,終端也確實不知道這個指令碼命令要幹啥,終端的任務就是髮腳本給卡片,剩下的內容就有卡片自己處理。

第三步:

第二次GAC,第一次GAC傳送GAC指令時組織資料採用的是CDOL1,第二次GAC組織命令時用的是CDOL2,CDOL2也是在讀記錄時候獲取到的。

Send:40
80 AE 40 00 22 30 30 00 00 00 00 01 00 30 30 30 
30 30 30 01 56 00 00 04 00 00 01 56 11 03 30 00 
1C 22 24 13 11 41 45 00 

REC:35
80 1E 40 06 A0 8B 35 9C A6 4B CC 4F 06 07 02 
01 03 60 00 02 01 0A 01 00 00 00 07 00 A1 38 E4 
BB 90 00 

這裡傳送的命令第三個位元組為40(01000000),明顯這個第二次GAC,終端請求的是TC。

上述例子卡片也是成功返回了TC,卡片成功返回TC後交易結束。

前面所討論的依然還是不考慮存在CDA的情況,CDA情況比較複雜,先規避一下,完了再專門以一篇研究一下。

上述是一個標準的聯機交易的流程,但是還有一個情況,假如卡片返回ARQC,但是終端執行聯機交易失敗。

下面主要研究一下這種情況。

卡片請求ARQC,但是終端無法聯機,並不是代表這個交易終止了,終端和卡片還有最後一次嘗試,就是所謂的離線轉聯機,聯機失敗再轉離線。

這就好像買東西一樣,先去第一家店看了看,覺得東西還行,但是先不買,然後再去第二家店,結果發現第二家店的東西又貴又不好,那再回去第一家店看看,價格能不能商量一下,如果能談妥,OK,那麼就交易。

這個時候首先又需要檢查IAC-預設和TAC預設執行終端行為分析(這部分在之前終端行為分析中有表詳細的描述),並且根絕結果傳送第二次GAC指令。

如果第二次GAC指令能夠成功返回TC,那麼離線交易批准,如果返回ACC,則交易拒絕,,這個時候不可能再返回ARQC了。

如果離線成功則響應碼為Y3,但是,如果終端在第一次GAC就獲取TC批准離線交易的話,響應碼是Y1,所以通過Y1和Y3就可以知道是哪一種離線批准。

到此為止,整個借貸記交易和電子現金的交易就已經全部處理完了。