天天看點

EMV學習過程中問題解決及彙總



應用選擇:

1.ADF、DDF、AEF、EF、DF有什麼差別

ADF、DDF、AEF就是PBOC規範裡面的名詞了,ADF和DDF其實就是DF的一個映射,AEF就是EF的映射,我們不能直接操作DF和EF,隻能操作ADF和DDF以及AEF,就相當于記憶體管理裡面實體位址和虛拟位址一樣,程式不能直接使用實體位址,隻能使用虛拟位址,而記憶體管理的單元回去實作虛拟位址到實體位址的映射。

2.既然ADF和DDF都是DF的映射,那他們兩個有啥差別呢?

DDF還是一個目錄,這個目錄下面可能有ADF,也可能還是有DDF的。

ADF也是一個目錄,但是這個目錄已經是aid的目錄了,這個目錄的名稱就是AID了。

再根據ADF名稱去選擇ADF,ADF下面都是AEF,也就是這個AID多對應的有用資料檔案,終端在GPO時候根據傳回的AFL,再去讀取對應的檔案。

3.目錄選擇法在選擇完PSE後是如何獲得AID的

選擇完PSE之後,PSE目錄會傳回SFI(tag 88),然後終端根據SFI,再執行READ RECORD指令讀取記錄,讀記錄根據SFI循環讀取,直到卡片傳回6A83為止,這個時候終端已經擷取到卡片支援的AID(tag 4F)。

4.當卡片和終端有多個應用支援時,終端是根據什麼判斷是否需要持卡人選擇應用的

根據應用優先級訓示器的bit8來判斷是否需要提示持卡人選擇應用。

5.選擇應用時如果在未讀到記錄之前或者讀記錄後檢查資料非法等情況怎麼辦?

如果遇到上述情況,則均可認為是目錄選擇法失敗,這時候就需要改用AID選擇法。

6.Qpboc和借貸記應用的在選擇應用部分的差別

Q選擇的是PPSE,借貸記選擇的是PSE;Q不支援持卡人選擇應用和AID清單選擇法,Q的流程相對精簡。

Q在選擇完PPSE之後已經可以擷取到AID(可能是多個)、應用優先級、應用訓示器,Q不支援持卡人選擇應用,是以如果有多個AID的時候,需要根據應用優先級選擇優先級最高的AID,再根據AID選擇ADF,就可以擷取到PDOL(關鍵資料)、發行卡代碼等資料。

借貸記需要根據選擇PSE傳回的SFI讀記錄擷取AID,再根據AID去選擇ADF,再去讀資料;Q在選擇PPSE之後就可以擷取到AID,直接選擇ADF了。

應用初始化&&讀應用資料

1.GPO指令是怎麼組的?

應用選擇完成後,終端擷取到了PDOL資料,GPO根據PDOL中的TAG組資料域傳送給卡片

2.終端一定會有PDOL嗎,沒有PDOL哪些交易不能進行?

卡片可以不給終端提供PDOL,如果終端沒有擷取到PDOL,則GPO資料域直接傳遞8300,如果卡片不提供PDOL的話,後續這張卡是不能做電子現金和Q的交易

3.GPO指令後的讀記錄指令是根據什麼讀的,怎麼知道哪些記錄用于資料認證

讀記錄指令是根據AFL讀的,其包含終端将要讀取用來交易處理的卡片資料檔案的SFI和記錄範圍。每個要讀取的檔案在AFL中對應四個位元組,含義如下:

位元組1:短檔案辨別符

位元組2:檔案中要讀取的第1個記錄的記錄号

位元組3:檔案中要讀取的最後一個記錄的記錄号

位元組4:從第1個記錄開始的用于脫機資料認證的連續記錄數

4.根據什麼知道終端要執行哪些過程?

後續的過程根據終端性能和卡片的支援能力決定哪些步驟要執行,支援哪種資料認證,是否支援持卡人認證,是否支援發夾行認證等,但風險管理是強制執行的不依據AIP裡的值

5.QPBOC聯機和QPBOC脫機的GPO響應資料有比較大的差別?

qPBOC聯機交易或拒絕交易的GPO響應資料中是不傳回AFL的,而QPBOC脫機的GPO響應資料中傳回AFL

6.如何判斷非接中到底是走QPBOC流程還是走非接觸借貸記流程?

——如果卡片響應GPO指令的狀态字為“9000”,假設終端僅支援一種非接觸選項(qPBOC或非接觸式借記/貸記應用),則終端應按此選項繼續處理,不必判斷AIP;

——如果卡片響應GPO指令的狀态字為“9000”,并且AIP第2位元組第8位置‘0’,假設終端支援qPBOC,并且應用密文(标簽“9F26”)在GPO指令響應中出現,則終端應按照qPBOC處理交易。如果标簽為“9F26”的資料項不出現,則終端應按照非接觸式借記/貸記應用處理交易。

7.QPBOC的GPO資料傳回資料量為什麼比較大?

為了提高互動速度,減少終端與卡片互動次數,為此提高了單次互動的資料量,是以Q的GPO傳回的資料量比較大,除了AIP和AFL之外,還有應用密文,交易計數器,發夾行應用資料,二磁道資料等多個資料。

8.SFI檔案範圍1-10,11-20,21-30的差別?

1-10:EMV資料檔案;

11-20:支付系統資料檔案;

21-30:發夾行資料檔案;

9.在讀應用資料中,終端出現哪幾種情況會終止交易?

(1)卡片在一條或多條記錄中傳回同一個标簽兩次及兩次以上;

(2)卡片在某條記錄中傳回了卡片已經在GPO響應中傳回的标簽;

(3)卡片中缺少必須有的資料;

(4)資料格式錯;

(5)READ RECORD 指令傳回狀态字不是“9000“。

脫機資料認證:

1.終端根據什麼來決定執行哪種脫機資料認證方式?

取決于兩個要素AIP和終端性能。

2.應用開發工程師在分析IC卡交易失敗的時候要看什麼做判斷?

交易沒走步都要首先分析AIP和終端性能的各個位的情況,而交易每執行完一步都要對TVR和TSI進行置位或者清零。

在分析IC卡失敗交易的第一步應該是看TVR和TSI,看看終端做過什麼,終端哪一步失敗了,然後在分析某個步驟失敗的原因。

3.對于參與脫機資料認證的SFI有明确分類,分為SFI從1-10以及11-30兩類,這兩類在參與認證上有什麼差別?

1-10的SFI在參與脫機資料認證的時候,其檔案标志“70”和記錄長度不參與脫機資料認證,而SFI為11-30的,則70和記錄長度也要參與脫機資料認證。

4.靜态資料認證SDA是如何認證的?

三步走:一步擷取認證中心公鑰,二步恢複發夾行公鑰,三步進行資料認證

一步擷取認證中心公鑰:首先通過公鑰下載下傳将服務端的公鑰挨個下載下傳到終端,在擷取認證中心公鑰的時候要做兩個判一個判斷是選擇AID的5個位元組為RID,另一個判斷是需要用到度記錄時擷取到的發夾行公鑰索引(8F),通過RID和索引可以選擇到唯一的一組公鑰,選擇完成後,擷取中心公鑰即成功

二步恢複發夾行公鑰:首先讀記錄的時候已經擷取到發夾行90(簽名處理過的發夾行公鑰,92(發夾行公鑰餘項),9F32(發夾行公鑰指數),是以這個時候可以用CA公鑰利用RSA算法對90的資料解密。解密後的資料為一個比較複雜的資料格式,需要對資料的頭尾,以及中間資料做判斷,其中對後續才做有用的資料是“哈希值”,執行完這一步,終端已經擷取到了卡片計算出的哈希值,執行完這一步,終端已經擷取到了卡片計算出的哈希值,卡片計算哈希值的方法和終端的一樣,故隻要知道這裡擷取到了發夾行公鑰或者發夾行公鑰最左邊的部分以及擷取到了哈希值就OK了。

卡片已經傳回了哈希值,終端自然也要計算一個哈希值,計算方法:

首先組織一長串資料,格式:證書格式 +發夾行辨別(主賬号最左面的3 -8個數字) +證書失效日期 +證書序列号 +雜湊演算法辨別 +發夾行公鑰算法辨別 +發夾行公鑰長度 +發夾行公鑰指數長度 +發夾行公鑰模數的完整資料 128個位元組+發夾行公鑰指數

特别說明:發夾行公鑰模數的完整資料一部分是在還原發行卡公鑰資料過程中擷取的,還有另外一部分是在卡片讀記錄的時候通過92tag擷取到的。除此之外,其他資料都為卡片傳回原始資料,或者是一些固定寫死的值。

然後用組好的資料進行哈希值計算,計算出的哈希值和我們在恢複發夾行公鑰中擷取到的哈希值一樣,至此恢複發夾行公鑰的步驟已完成,其中任何一步失敗都會認為是靜态資料認證失敗。

第三步驗證簽名資料:用發夾行公鑰來恢複簽名的靜态資料(過程與第二步雷同),恢複中有一部分是終端用來計算哈希值(将表5中的第二個到第五個資料元素(即從簽名資料格式直到填充位元組)從左到右連接配接,再把本規範第三冊的第II部分中指明的需認證的靜态資料加在後面。如果靜态資料認證标簽清單存在,并且其包含非‘82’的标簽,那麼靜态資料認證失敗),組織簽名資料首先按照之前描述的sfi的規則擷取脫機認證資料,還有個特别的地方,如果存在9F4A的話,需要将AIP作為簽名資料,不需要包含tag和L,隻要V就可以。最後對組織好的資料,進行sha1運算,獲得hash值,然後和恢複簽名資料時擷取的哈希值比較,如果相等則SDA成功,然後将計算出的hash儲存在9F45的标簽中。SDA流程就算是結束了。

5.9F4A靜态資料認證标簽清單隻存在在靜态資料認證過程中嗎?

不是,SDA和DDA中都存在這個要素。DDA中主要用這個來做發夾行公鑰恢複和IC卡公鑰恢複,是以這個标簽的作用主要是用來組建一組靜态資料用于脫機資料認證。切不要以為因為它的名字叫做“靜态資料認證标簽清單”而忽略了在DDA中的應用。

6.動态資料認證DDA是如何認證的?

首先需要恢複出發夾行公鑰,這個和SDA的步驟一樣,就不讨論了。

恢複出發夾行公鑰後,DDA中還需要恢複IC卡公鑰,這個步驟中,和恢複發夾行公鑰類似,恢複出IC卡公鑰以後也需要利用恢複後得到的資料再加上用于脫機資料認證的資料(SFI那邊獲得的)進行HASH值的計算,計算結果與恢複出的結果一緻,則恢複出的IC卡公鑰合法可用。

前面的内容SDA和DDA大同小異,沒什麼差别,但是DDA從恢複完IC卡公鑰後和SDA就有很大差別了,下面我們一步一步讨論。

第一步,動态簽名的生成

讀記錄的時候,需要一個關鍵資料DDOL(9F49),這個資料是卡片告訴終端(如果卡片沒有傳回,終端也需要有預設值,如果都沒有則交易終止;如果DDOL中不含有9F37不可預知數,則交易終止)卡片需要終端的哪些資料來做動态簽名。

終端組織好DDOL的資料之後,通過内部認證指令将資料提供給卡片,卡片會傳回簽名後的動态資料。卡片傳回的資料時簽名後的動态認證資料(tag為80時和tag為77時不一樣的處理,與GPO是傳回資料的處理類似),需要終端再利用IC卡公鑰進行還原。還原後的資料中會有HASH。然後終端利用還原後得到的資料,再加上DDOL構成一個規範要求的資料串,然後在做SHA1運算獲得HASH值,對比卡片傳回的hash值和終端計算的是否一緻,如果一緻,證明DDA成功,再将HASH值儲存到9F4C,則DDA已經結束了。

從分析來看,DDA其實是包含了SDA的過程,并且有了内部認證的處理,使得其安全性大于SDA,是以現在目前國内發行的卡基本上都是采用DDA作為脫機資料認證方式。

7.CDA認證

之前脫機資料認證,包括後面的GAC都忽略了CDA的存在,現在專門讨論一下CDA。

先從脫機資料認證開始,第一次遇到CDA。

CDA的前面三個步驟(擷取ca公鑰、恢複發夾行公鑰、恢複IC卡公鑰)和DDA一樣,DDA是通過内部認證指令擷取簽名動态資料,CDA是通過GAC指令來擷取的。

終端行為分析過程中正好有一次GAC,是以采用脫機資料認證的時候,前面隻完成還原IC卡公鑰就行了,CDA後續的部分放在終端行為分析GAC之後。

但是CDA的GAC和請求應用密文的GAC指令不一樣,控制參數不一樣,是以請求得到的結果也不一樣。

CDA是用GAC指令請求,對于GAC指令請求,傳回為格式2,也就是之前提到的77開頭的格式,需要解析TLV,解析到9F4B簽名動态應用資料。

這一步完成後,CDA比DDA多了一個步驟,終端首先将将恢複的密文資料和GAC傳回的密文資料比較。

比較完成後終端需要将一些在GAC中傳回的資料等一起組織起來,計算hash值,與恢複出的哈希值是否一緻進行比較,如果一緻則認為CDA到目前為止還是成功的。

然後還需要将GAC恢複資料得到的IC卡動态資料在進行處理,IC卡動态資料中也有一個hash值,還需要終端再按要求計算一個hash值,然後再和IC卡動态資料中的HASH值比較。

可以看得出是兩層資料套在了一起,先解析外層,再解析内層,一層一層還原,最終

如果這個時候卡片傳回的是TC,那麼脫機交易就OK了,如果傳回是ARQC的話,就發起聯機。

聯機過程忽略不談,聯機處理過程CDA和DDA一樣,沒什麼差別。

如果聯機失敗,這個時候又要進行卡片行為分析。而且由于第一次GAC指令要求執行CDA,那麼第二次GAC指令也要執行CDA。

對比CDA和DDA,可以看得出CDA複雜了很多,首先CDA将應用密文也加入到簽名資料,其次CDA在響應GAC指令的時候對于密文的數有進行了一次加密封裝,進而更加增強了安全性。

CDA的卡現在太少了,除了專業測試的,其他幾乎沒有銀行發行CDA卡的,是以這塊沒有辦法取到資料,隻能通過代碼和文檔進行了解和分析。

8.動态資料認證有哪幾種原因?

1.DDOL中不包含随機數(“9F37”)

2.在擷取CA公鑰,發夾行公鑰,IC卡公鑰任何一個公鑰缺失都會導緻失敗。

3.CA公鑰恢複發夾行公鑰過程中恢複出的資料頭尾格式和公鑰格式和公鑰訓示符不合法。

4.恢複出的哈希值不等于計算出的哈希值。

5.發夾方ID号不等于PAN的前幾位。

6.發夾行公鑰證書過期

7.内部認證指令傳回狀态字不是“9000“。

8.簽名動态應用資料和IC卡公鑰模長度不一緻

處理限制:

1.應用用途控制的作用即及判斷

卡片會傳回一個AUC(9F07),通過判斷這個資料域來允許或者拒絕交易。

判斷的邏輯也很清晰,比如一個pos終端,判斷AUC的标志位給出ATM有效,除ATM外的終端無效,那POS終端肯定要拒絕這個交易了。或者就是根據終端的國家代碼和卡片的國家代碼是否一緻來判斷為國際交易還是國内交易。AUC的各個位又明确給出了國際交易和國内交易的允許情況,終端根據目前交易的狀态,以及這些位來判斷交易允許或者拒絕

2.應用日期有什麼限制?應用過期怎麼辦?

應用生效日期要早與目前日期,應用失效日期要晚于目前日期。若應用過期,則在TVR中将相應位設定為‘1‘。

持卡人認證:

1.持卡人認證這塊EMV和PBOC的差別

EMV流程和PBOC流程差别在于對于CVM的支援有差異,即EMV支援脫機密文PIN驗證,不支援持卡人證件驗證,而PBOC不支援脫機密文PIN驗證,支援持卡人證件驗證。

2.解釋一下CVM,CVM對于驗證是怎麼處理的

一個CVM含2個主要元素:

(1)兩個金額,X金額和Y金額。

(2)持卡人驗證方法條目(可能含有多個)

a.持卡人驗證方法,即第9位元組的bit7,用來表明持卡人驗證失敗後的操作。

b..持卡人驗證方法類型,即第9位元組的bit6--bit1,用來表明采用什麼樣的方法做持卡人驗證。

c.持卡人驗證方法條件,即第10位元組,用來表明在什麼情況下做持卡人驗證。

3.結合執行個體談談對cvm的了解

EMV學習過程中問題解決及彙總

這是一個标準的cvm清單,X金額為0,Y金額為0,後續每兩個位元組表示一個持卡人驗證方法條目,5E的二進制位01 011110這表明如果持卡人驗證失敗則使用後續的CVM,CVM驗證方法為簽名,03表示“如果終端支援這個CVM”。

這樣估計還是比較抽象,我用語言再描述一下。

首先5E的bit8 bit7為01,這表明如果這個cvm失敗,那就要用到後面的1F 00作為持卡人驗證方法。

再看5E的bit6到bit1,這個規範上說的很明确,現在的6個數字就是代表使用簽名。

再看03,03的含義是“如果終端支援這個CVM”,這個怎麼了解呢?終端有一個很重要的資料,終端性能,終端性能中明确指出了終端所支援的驗證方法,是以03的意思就是如果終端支援持卡人簽名驗證,那麼這個交易就使用簽名作為驗證方法。當持卡人驗證條件為03時,核心對于終端性能的判斷也是直接影響持卡人驗證成功與失敗的關鍵要素。

後面的1F00就不做分析了,分析方法同理。

程式分析完CVM清單後,再根據分析結果提示持卡人進行操作,然後就相當于持卡人認證已經完成。

 4.脫機PIN加密過程

(1) 終端把使用者輸入的明文PIN按照一定的格式補位對齊, 然後用get challenge指令從卡片中取一個8位元組的随機數. 

(2) 終端自己産生一組長度為N-17的随機數(N為PIN加密公鑰的長度), 然後把補位後的PIN,卡片中取的随機數以及終端産生的随機數拼接在一起, 與PIN加密公鑰做RSA運算. 

(3)把上一步運算的結果通過verify指令發給IC卡.

(4) 卡片用PIN加密私鑰解密資料, 首先檢查解出來的8位元組随機數是否與自己産生的一緻,然後卡片檢查恢複的資料頭位元組是否有效, 最後一步是驗證PIN是否合法. 隻有所有的條件都滿足,脫機加密PIN才算成功. 

終端風險管理:

1.為什麼要進行最低限額檢查?如何進行?

最低限額檢查用于控制交易目前交易金額或同一張卡片連續幾筆交易累積金額超過某個數值時則要求聯機授權。

如果終端不支援交易日志,則終端直接比較授權金額和最低限額。如果交易授權金額大于或等于最低限額,終端将TVR中的“交易超過最低限額”位設為‘1’。即使最低限額為0,終端也進行同樣檢查,這種情況會導緻所有交易的TVR中的“交易超過最低限額”位都設為‘1’。

如果終端支援交易日志,則終端在交易日志中尋找與目前交易的PAN和PAN序列号(如果終端交易日志和卡片中都存在)相同的一個交易記錄,将其對應的累計交易金額與目前交易的授權金額相加,如果和大于或等于最低限額,則TVR中的“交易超過最低限額”位設為‘1’。

特别說明:終端風險管理,沒有聯機能力的終端可以不做後續的内容,直接跳過後面的步驟,進入終端行為分析。簡而言之,電子現金交易,這一流程的後續兩步可以直接跳過。

2.随機選中交易執行個體了解

終端風險管理參數示例

參數                                                  值

終端最低限額                                  100   (AID參數下發)

終端随機數                                      25    (終端随機生成)

偏置随機選擇的門檻值                        40      (AID參數下發)

随機選擇目标百分比                        20% (AID參數下發)

偏置随機選擇的最大目标百分比       50%(AID參數下發)

情形1:

交易金額是20。因為交易金額小于偏置随機選擇門檻值,是以執行随機選擇。

比較終端随機數與目标百分數。因為随機數(25)大于目标百分數(20),是以交易不被選中作聯機處理。

情形2:

交易金額是60。這個金額大于偏置随機選擇的門檻值,但小于終端最低限額。是以應用偏置随機選擇。

交易金額比門檻值高20,該內插補點是終端最低限額與門檻值內插補點(100-40=60)的1/3。是以将最大目标百分數與目标百分數的內插補點的1/3(50%-20%=30%×1/3=10%)加到目标百分數上,得到交易目标百分數為30%(20%+10%=30%)。

終端随機數為25,小于交易目标百分數(30),是以交易被選中進行聯機處理。

情形3:

交易金額為150。因該金額大于終端最低限額,是以交易不進行随機選擇。而是進行最低限額檢查而聯機處理。

3.頻度檢查執行條件

如果連續脫機交易次數下限LCOL(标簽‘9F14’)與連續脫機交易次數上限UCOL(标簽‘9F23’)都存在,則執行,否則不執行。

如果執行,終端需要先GET DATA擷取9F36和9F13,然後再和UCOL和LCOL比較,判斷滿足交易頻度檢查條件。

如果擷取到的9F13為0,則将該卡标志位新卡。新卡是不允許脫機交易的,IC卡cos會對這個有要求,主要是安全考慮,因為新卡做脫機交易不可控。

終端行為分析:

1.終端行為分析需要用到哪些重要資料?

發夾行行為代碼(IAC) 發夾行行為代碼,來自讀記錄檔案卡片傳回

發夾行行為代碼有三個資料元,即發夾行行為代碼-拒絕、發夾行行為代碼-聯機、發夾行行為代碼-預設。每個發夾行行為代碼由一組與終端驗證結果(TVR)中的位相對應的位

組成

IAC-拒絕位設定為“1”反映了交易被脫機拒絕的終端驗證結果條件

IAC-聯機位設定為“1”代表需要聯機授權條件

IAC-預設位設定為“1”是當聯機處理不可行時脫機拒絕所需的條件

終端行為代碼(TAC)  TAC有三個資料元,它們都是由一系列的位組成的,這些位對應于TVR中的資料位。終端行為代碼來自emv參數下載下傳交易。

TAC-拒絕 收單行設定的能夠導緻交易脫機拒絕的TVR條件位

TAC-聯機 收單行設定的能夠導緻交易聯機的TVR條件位

TAC-預設 收單行設定的在交易聯機無法進行的情況下能夠導緻脫機拒絕的TVR條件位

這6個代碼的檢視方法和TVR檢視方式一樣,使用時也是配合TVR進行使用。

2.終端是如何判斷其行為的?

檢查過程完全由終端利用先前從卡片擷取的IAC資料和終端儲存的TAC資料進行,無需與其它裝置進行互動處理。

在處理過程中,終端比較IAC和TAC中與終端驗證結果(TVR)對應的位。如果TVR和IAC或TAC中相應的位都被設定為“1”,則采納對應的IAC或TAC。示例如下:

EMV學習過程中問題解決及彙總

終端的處理步驟如下:

步驟 1:終端比較 IAC-拒絕和 TVR。如果不存在 IAC-拒絕,則采用預設值‘0000000000’。如果IAC-拒絕和 TVR 的任何對應位同時設為‘1’,終端必須:

——  把授權響應碼置為‘Z1’(脫機拒絕);

——  把 GENERATE AC(産生應用密文)指令的 P1參數設為請求應用認證密文(AAC);

——  進行請求應用密文步驟。

步驟 2:終端對 TAC-拒絕和 TVR進行類似的比較。如果不存在 TAC-拒絕,則采用預設值‘0000000000’。如果 TAC-拒絕和 TVR的任何對應位同時設為‘1’,終端必須采取與 IAC-拒絕相同的處理。

步驟 3:如果終端具有聯機處理能力(僅聯機的終端除外),則它應該使用 IAC-聯機和TAC-聯機與TVR比較。如果 IAC-聯機不存在,則使用預設值‘FFFFFFFFFF’,如果 TAC-聯機不存在,則使用預設值‘0000000000’。如果 IAC-聯機和 TVR的任何對應位同時置為‘1’,則終端:

—— 把産生應用密文(GENERATE AC)指令的 P1參數設為授權請求密文(ARQC),以進行聯機授權請求;

—— 進行生成應用密文步驟。

對于僅聯機的終端,如果在步驟 1和步驟 2中未決定脫機拒絕,則終端不必進行 IAC-聯機和 TAC-聯機與 TVR的比較,而直接按照 IAC-聯機或 TAC-聯機和 TVR的任何對應位同時置為‘1’的情況來處理,通過請求聯機來繼續進行交易。

步驟 4:如果終端是僅脫機終端或者當有聯機處理能力的終端出于某種原因不能聯機時,則使用 IAC——預設和 TAC——預設與 TVR 比較。如果沒有 IAC-預設,則使用預設值‘FFFFFFFFFF’,如果 TAC——預設不存在,則使用預設值‘0000000000’。如果比較結果的任何對應位同時為‘1’,則終端:

—— 把授權響應碼置為‘Z3’(不能聯機,脫機拒絕),僅脫機終端授權響應碼置為‘Z1’;

—— 把産生應用密文(GENERATE AC)指令的的 P1參數設定為請求 AAC;

—— 進行生成應用密文步驟。

對于僅聯機的終端,當無法進行聯機時,它可以選擇正常的處理TAC/IAC-預設,也可以選擇跳過TAC/IAC——預設的處理。對于跳過TAC/IAC——預設處理的終端應該直接按照TAC/IAC——預設與TVR比對進行處理,并且在第2個GENERATE AC請求AAC。對于正常處理TAC/IAC——預設的終端,應該根據TAC/IAC——預設與TVR比對的結果生成應用密文,這時僅聯機的終端可能脫機完成交易。

步驟 5:如果在以上的比較中沒有出現對應位同時為‘1’的情況,則終端:

—— 把授權響應碼置為‘Y1’(脫機準許);

—— 把 GENERATE AC(請求應用密文)指令的 P1參數設定為請求交易證書(TC);

—— 進行請求應用密文步驟。

這裡的GENERATE AC就是我們所說的第一次GAC,如果脫機準許了,擷取到的TC值需要在上送交易明細時上送到背景。如果卡片傳回ARQC,那麼在聯機交易結束後,還需要再做第二次GAC,這個内容後續再讨論。

聯機處理&&交易結束

1.聯機交易處理流程

第一步:

處理ARPC(如果不包含,則跳過;如果包含并且AIP特性标志不支援發夾行認證,則跳過)

收到聯機傳回封包後,擷取tag“91”,即ARPC,通過外部認證指令将ARPC發給卡片,如果卡片響應9000,說明ARPC校驗通過,否則發起沖正。

第二步:

處理發夾行腳本

再看tag72(或71,在圈存交易時,不允許出現兩個腳本),這個是發夾行傳回腳本采用tag72作為标簽,72後面還是一個TLV,解析tag86(發夾行腳本指令),擷取到。再通過指令将這個指令給到卡片,整個資料就是一個指令,不需要再添加内容

第三步:

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

2.假如卡片請求ARQC。但終端執行聯機交易失敗怎麼辦?

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

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

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

如果第二次GAC指令能夠成功傳回TC,那麼脫機交易準許,如果傳回ACC,則交易拒絕,,這個時候不可能再傳回ARQC了。

如果脫機成功則響應碼為Y3,但是,如果終端在第一次GAC就擷取TC準許脫機交易的話,響應碼是Y1,是以通過Y1和Y3就可以知道是哪一種脫機準許。

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

QPBOC和借記貸記對比

1.QPBOC和EMV在PDOL中有什麼差別?

非接中的GPO對于PDOL的要求是必須含有9F66(借貸記的GPO是可以支援沒有PDOL的,終端在GPO隻要發送8300就行),如果沒有,終端直接拒絕交易。

2.QPBOC的持卡人認證

QPBOC的持卡人認證和借貸記電子現金不同,QPBOC的持卡人認證結果隻有2種情況:簽名,聯機。通過判斷卡片交易屬性(9F6C)和終端交易屬性(9F66)來判斷采用哪種持卡人驗證方式。

3.QPBOC的處理限制與借貸記流程的有什麼差別?

QPBOC的處理限制隻做一件事,就是判斷卡有效期,相當于借貸記流程中的一個小步驟。

4.QPBOC的脫機資料認證與借貸記流程的有什麼差別?

因為卡片不會再和終端有指令互動,是以資料認證使用的QPBOC自己定義的一種FDDA。FDDA的執行同樣需要根據AIP的情況作出判斷。FDDA簽名的動态資料通過9F4B在讀記錄時傳回,借貸記是通過内部認證擷取到的。這個動态資料的獲得,也是區分FDDA版本為01還是00.是以缺少了DDA的内部認證指令,是以叫做FDDA。而用來參于組織簽名資料的是通過一個固定資料域組織的,借貸記是通過DDOL擷取的。

特别說明:PB0C3.新增了一個9F69的标簽,需要在版本01的FDDA中加入到簽名資料域。

交易限額

終端最低限額(9F1B)、終端電子現金交易限額(9F7B)、非解最低限額(DF19)、非解交易限額(DF20)、CVM限額(DF21)

9F1B,就是所謂的Floorlimt,這個參數主要用在終端風險管理終端中的第一個步驟-------最低限額檢查。

9F7B,當交易金額小于9F7B的時候,終端可以執行電子現金脫機交易。

特别說明:我一直覺得這個限額隻應該對接觸式電子現金交易有效,但是現在不管是客戶還是同僚,很多人都認為這個限額應該對Qpboc也要做判斷。雖然目前代碼是這麼做的,但是我還是覺得這個限額應該隻是對電子現金有效。

DF19、DF20、DF21三個TAG值都是連續的限額,就是針對于QPBOC的三個限額,這三個限額主要是在QPBOC預處理階段進行判斷。

DF19,交易金額必須大于DF19,才允許做非解交易。

DF20,交易金額不能大于DF20,否則交易拒絕,提示持卡人采用别的方式交易。

DF21,超過該限額,終端應該在交易屬性9F66中置位“要求CVM”,進而在GPO的時候告訴卡片終端需要CVM。但是這個值實際有什麼意義也不清楚。Q的持卡人驗證隻有簽名和聯機兩種方式,卡片傳回的9F6C再加上終端交易屬性已經可以決定持卡人驗證方式了。CVM在這個時候确實沒啥用了。

還有一個額度不得不提,就是卡片餘額,當交易金額大于卡片餘額,但是不滿足上面任何一種拒絕交易的情況時,終端會選擇脫機轉聯機交易。

當然了,如果交易金額沒有超過卡片餘額,但是卻大于上述的DF20,終端就直接拒絕交易。