天天看點

非接觸借記貸記流程封包解析



交易預處理

終端通過檢查終端交易屬性(9F66)來判斷其交易的類型,如是否支援QPBOC。如果支援QPBOC,則在提示持卡人出示卡片和終端非接觸式界面被激活前,必須進行這一步。否則,不需要進行這一步。

接下來,我來說明一下交易預處理的流程:

1.終端獲得授權金額(9F02)

2.對授權金額進行檢查,并設定終端交易屬性第2位元組

(1)終端交易屬性聯機應用密文設定的條件

  • 終端配置為支援狀态檢查,并且授權金額為一個貨币機關
  • 除了終端支援QPBOC擴充應用這種情況,其他授權金額為零且終端具有聯機能力的情況
  • 授權金額大于非接觸終端脫機最低限額或可用的終端最低限額(9F1B)

(2)終端交易屬性CVM設定的條件

  • 授權金額大于或等于終端執行CVM限額

(3)采用另一種界面的條件

  • 除了終端支援QPBOC擴充應用這種情況,其他授權金額為零且終端僅支援脫機的情況
  • 授權金額大于或等于終端非接觸交易限額

3.在預交易處理成功完成後,終端提示持卡人出示卡片,并對非接觸界面上電

應用選擇

當卡片和終端建立通信後,終端采用“2PAY.SYS.DDF01”來選擇PPSE。為滿足時間的要求,卡片所傳回的FCI盡可能隻列出一個應用或者盡量少的應用。

接下來,我将展示其過程:

終端向卡片發出SELECT指令來選擇檔案名為“2PAY.SYS.DDF01”的支付系統環境

send =>00A404000E325041592E5359532E4444463031

若回送的狀态字為“90 00”,則指令執行成功,并進入非接觸式支付系統環境。

recv<=6F30840E325041592E5359532E4444463031A51EBF0C1B61194F08A000000333010101500A50424F43204445424954870101

非接觸借記貸記流程封包解析

至此,終端得到了所需要進入的ADF的DF名。

若回送的狀态字為其他狀态字,或PPSE存在錯誤格式,則不能從FCI中獲得AID,終端應關閉非接觸式界面,啟用另一界面。QPBOC并不支援AID清單選擇

最終選擇

在上一步驟中,我們已經得到了ADF的DF名:A0 00 00 03 33 01 01 01,且所傳回的FCI中隻有一個AID。是以,終端最終選擇該ADF。

卡片傳回PDOL的基本内容依賴于支援的密文版本以及卡片是否支援脫機QPBOC交易

send =>00A4040008 A000000333010101

recv<=6F4E8408A000000333010101A542500A50424F432044454249548701019F381E9F66049F02069F03069F1A0295055F2A029A039C019F37049F2103DF69015F2D027A68BF0C0A9F4D020B0ADF4D020C0A

非接觸借記貸記流程封包解析

注:DF4D為電子現金圈存日志入口0C0A為提供圈存日志檔案的SFI和檔案記錄個數,UICS規範提供推薦值:0C0A位元組1:圈存日志檔案的SFI,為12(十進制)位元組2:圈存日志檔案中的記錄個數,為10(十進制)。

在所傳回的響應中,最為重要的資料就是PDOL和交易日志入口。相比于接觸式應用,QPBOC要求PDOL中包含更多的标簽:4個位元組的終端交易屬性、6個位元組的授權金額、6個位元組的其他金額、2個位元組的終端國家代碼、5個位元組的終端驗證結果(TVR)、2個位元組的交易貨币代碼、3個位元組的交易日期、1個位元組的交易類型、4個位元組的不可預知數

非接觸借記貸記流程封包解析

注:9F66為終端交易屬性;DF69為SM算法支援訓示器

應用初始化

GPO指令封包發送

在接收到PDOL資料時,終端必須檢查卡片所傳回的響應。如果标簽為“9F66”的資料項在PDOL中不存在或PDOL不存在,則終端應關閉非接觸式界面,并嘗試另一種界面進行交易

如果資料存在,終端将通過GPO指令将卡片所需的資料傳送給卡片。卡片根據所接收到的終端交易屬性判斷交易類型是QPBOC還是非接觸借記貸記應用。

如果卡片支援非接觸借記貸記應用且“終端交易屬性”第1位元組第7位=“1”(支援非接觸式借貸記應用),則卡片使用非接觸借記貸記應用路徑,其處理流程和接觸式借記貸記應用處理流程一緻,隻是通信方式不一樣。

如果卡片支援QPBOC應用且“終端交易屬性”第1位元組第6位=“1”(支援非接觸QPOBC),卡片将使用QPBOC路徑,執行卡片行為分析,确定該操作是進行脫機準許、聯機還是脫機拒絕。卡片将其生成的應用密文加入GPO響應封包中并傳回給終端。

如果沒有比對的非接觸交易路徑,則卡片應在響應中傳回一個訓示器(6985)來終止交易,并嘗試采用另一種界面。

GPO響應封包接收

當終端收到卡片所傳回的響應封包時,終端需要通過應用互動特征和卡片響應GPO指令提供的資料元決定是否采用QPBOC路徑。

過程展示:

1.send=>80A80000278325 77004080(終端交易屬性)000000000222(授權金額為2.22元)

000000000000(其他金額為0.00)0840(終端國家代碼)0000000000(終端驗證結果)

0840(交易貨币代碼)120802(交易日期為12年8月2号)00(商品或服務消費)

39F44A11(不可預知數)122209(交易時間為12時22分09秒)01(SM算法支援訓示器)

注意:要檢視本次交易卡片是拒絕/準許/請求聯機的資訊,從9F10中看到。如果沒有9F10,則需要走借貸記流程。

如果卡片是支援國密算法,則9F38中會請求DF69,而且終端也支援國密算法,則傳回DF69的值為01,同時9F66的值最後一個位元組為80.

其中終端交易屬性為“77 00 40 80”,則表明第一個位元組為01 11 01 11,表明終端支援非接觸PBOC,

支援非接觸qPBOC,支援接觸PBOC,(估計卡片也是一樣的屬性),支援聯機PIN,支援簽名,是以,卡片将按照非接觸式借記/貸記應用進行處理,GPO指令将不僅能傳回AIP和AFL,還需要傳回應用密文、動态簽名資料,終端将按照非接觸式借記/貸記流程進行處理

recv <=80 16 7C00 08 01 02 00 10 01 01 01 10 04 04 00 20 01 02 00 20 05 05 00

響應封包模闆格式:80長度:16

值:7C 00 08 01 02 00 10 01 01 01 10 04 04 00 20 01 02 00 20 05 05 00

AIP:7C 00即0111 1010(表示支援SDA,支援DDA,支援持卡人認證,執行終端風險管理)

AFL:

0801 02 00(SFI=1,記錄号01-02)

1001 01 01(SFI=2,記錄号為01)

1004 04 00(SFI=2,記錄号為04)

2001 02 00(SFI=4,記錄号為01-02)

2005 05 00(SFI=4,記錄号為05)

卡片行為分析

當卡片接收到終端傳送的GPO指令時,卡片通過卡片行為分析來判斷該交易的脫機準許、脫機拒絕、聯機處理,并利用GPO傳送的資料生成動态簽名和應用密文,回送給終端。

卡片的行為是通過卡片附加處理(9F68)中個人化的一系列需求來控制的。其實就是對貨币類型和貨币金額的檢查。(比較詳細的步驟可參考規範,我隻講述了大概的流程)

  1. 設定貨币比對位

    如果貨币不比對,且不允許不比對貨币交易,則拒絕交易

  2. 如果終端僅支援脫機
  1. 卡片為新卡,則拒絕交易
  2. 脫機PIN嘗試上限超過,則拒絕交易
  3. 要求CVM
  • 卡片和終端都支援簽名,則脫機貨币檢查
  • 卡片或終端至少一個不支援簽名,則終止非接觸式交易
  1. 如果終端支援聯機
  1. 終端不要求CVM,則檢查聯機處理要求
  2. 要求CVM
  • 卡片和終端均支援聯機PIN,則聯機處理
  • 卡片和終端均支援簽名,則檢查聯機處理請求
  • 沒有共同的CVM,則終止非接觸式交易

檢查聯機處理請求

如果先前的檢查沒有訓示需要聯機處理或終止非接觸交易,就需要執行該檢查,來确定是否存在其它的條件導緻聯機處理,否則,将進行脫機貨币檢查

1. 終端請求聯機處理

2. 貨币不比對,且不允許不比對貨币的脫機交易

3. 卡片為新卡

4. PIN嘗試超過上限

如果滿足以上任意條件,則進行聯機處理,否則,進行脫機貨币檢查。

脫機貨币檢查

當交易貨币比對應用貨币時,應執行脫機消費檢查。如果貨币不比對,則需要執行脫機下的貨币不比對

脫機消費檢查

脫機消費檢查有以下三種方法:小額檢查、小額或CTTA檢查、小額和CTTA檢查

我們可以從下面的例子中,來差別出小額檢查、小額或CTTA檢查、小額和CTTA檢查。

假如,卡片中的電子現金餘額隻有100塊,那麼情況會有下面幾種:

1. 執行小額檢查,也就是檢查目前餘額是否足夠支援消費金額,其最多隻能消費100塊

2. 執行小額和CTTA檢查,除了檢查是否足夠的餘額支付消費金額之外,還需要檢查已經進行的脫機消費是否已經達到上限,其可能無法消費100塊

3. 執行小額或CTTA檢查,檢查是否有餘額足夠支援消費金額,如果不夠,檢查已經進行的脫機消費是否已經達到上限。如果還沒有達到脫機消費的上限,則允許先透支消費。

如果無法通過脫機消費檢查,對于具有聯機處理能力的終端而言,則完成聯機交易。對于僅支援脫機的終端,則拒絕交易。如果通過了脫機消費檢查,則脫機準許。

脫機下的貨币不比對

1. 連續交易計數器(國際-貨币)小于連續脫機交易限制數(國際-貨币),則卡片應當脫機準許

2. 如果前面的條件不滿足,且終端具有聯機功能,則卡片應當聯機交易

3. 如果前面的條件不滿足,且終端僅支援脫機,則卡片脫機拒絕

過程展示:

1. 貨币比對,其交易貨币(人民币)與應用貨币相比對

2. 終端交易屬性表示終端具有聯機能力,跳過第二步驟(僅支援脫機終端檢查),進行第三步驟(終端具有聯機能力檢查)。

3. 檢查是否進行CVM。終端交易屬性的CVM請求位為0,且貨币比對,授權金額小于卡片CVM限額。交易無需進行CVM,檢查聯機處理請求

4. 終端要求聯機處理,卡片也要請求聯機處理

5. 卡片生成并傳回ARQC密文

讀記錄

卡片根據AFL來讀取指定的記錄,一旦訓示的記錄都被讀取,終端應提示持卡人和商戶可将卡片移開。

讀取SFI=1檔案第1條記錄

send=>00 B2 01 0C 00 00            

recv <= 70 68 57 13 62 17 85 20 00 01 6890 24 9D 27 06 22 01 00 00 06 10 0F 9F 1F 50 20 20 20 20 20 20 20 20 20 20 2020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

非接觸借記貸記流程封包解析

send=>00 B2 02 0C 00

recv <= 70 3C 9F 61 18 20 20 20 20 20 2020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 9F 62 01 00 5F 20 1A 2020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

非接觸借記貸記流程封包解析

send=> 00 B2 01 14 00

recv <= 70 81 86 5F 24 03 27 06 30 5F 2503 17 06 16 5A 0A 62 17 85 20 00 01 68 90 24 9F 9F 07 02 FF 00 9F 08 02 00 305F 28 02 01 56 8E 0C 00 00 00 00 00 00 00 00 02 03 1F 00 9F 0D 05 D8 60 04 A800 9F 0E 05 00 10 98 00 00 9F 0F 05 D8 68 04 F8 00 8C 1B 9F 02 06 9F 03 06 9F1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 37 04 9F 21 03 9F 4E 14 8D 1A 8A 02 9F 0206 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C 01 9F 37 04 9F 21 03

非接觸借記貸記流程封包解析

CDOL1:

非接觸借記貸記流程封包解析

CDOL2:

非接觸借記貸記流程封包解析

send=> 00 B2 04 14 00

recv <= 70 17 5F 30 02 02 20 9F 49 03 9F37 04 5F 34 01 01 9F 14 01 00 9F 23 01 00

非接觸借記貸記流程封包解析

send=> 00 B2 01 24 00

recv <=70 81 98 9F 46 81 94 14 62 17 8520 00 01 68 90 24 9F 12 27 4A 78 91 04 00 11 40 A0 38 FC 86 B0 7D 94 BF 10 051B 39 A0 11 54 02 39 57 10 B4 00 D0 75 B1 CB A4 DF C2 43 4D C6 AC 98 6A D1 0046 8A 5A 97 F6 69 83 BB A1 5E DC BD 4C 63 5A 03 05 CD 4F 06 B4 AB EB 9B F2 9704 25 3D 86 F8 D4 B0 4F 24 AC 77 D7 E0 44 25 92 75 D6 26 93 18 5D 13 52 3B 1B95 AF E9 D2 66 3C 76 E6 8A 77 52 00 3A 2C EC 0C DA 27 41 1E 5F 1E DF 70 01 2386 7B D3 E9 E1 B2 0C 11 A6 7C 7D CF 16 61

非接觸借記貸記流程封包解析

send=> 00 B2 02 24 00

recv <= 70 5C 93 43 13 88 88 0F E0 53 C075 CC 3D 8B 63 EC 87 7E A2 9A 79 7B 10 E4 F4 1F 2A 15 1B B3 44 FA 5C 0E DC 2AFD C3 FB 2A 78 83 06 1C BA 7B 6E 16 FE BC 73 47 09 5E 4B 86 24 1D 5A 6A 2A A634 11 0D 6D 0E 18 F6 88 9F 4A 01 82 9F 63 10 30 31 30 34 35 38 34 30 00 00 0000 00 00 60 00

非接觸借記貸記流程封包解析

send=> 00 B2 05 24 00

recv <= 70 81 94 90 81 8E 12 62 17 85 FF12 27 00 11 45 04 00 11 40 BA 11 21 81 49 EC 62 55 6A BA EA 21 46 47 CA E8 8E72 85 75 39 0A DA A8 2C 57 AF C4 E3 50 6B BC F1 09 37 B6 CC 12 67 56 B0 C6 530B A7 55 36 4F 94 AD 65 A1 AD C3 85 C2 C9 43 23 14 B7 AA 7B A2 06 14 98 13 B9AD 10 96 23 54 BE 6C CD 88 BF B5 7F AE 23 37 FD 55 8D AA 1B 6C 61 98 2E 6B 7D44 21 24 5A 30 4C 32 CC 3A 6D A2 01 48 1E 49 B6 A6 80 6D 77 F0 21 53 D9 5C 0342 E1 88 BB 60 70 6E 8F 01 11

非接觸借記貸記流程封包解析

脫機資料認證

根據發夾行自定義資料可知交易的處理方式。

如果脫機拒絕,終端直接拒絕交易,交易結束。

如果聯機授權,終端向收單行發送聯機授權封包,根據收單行傳回的響應判斷交易是否準許。但要注意的是聯機授權成功,則扣除的是銀行賬戶的金額,而不是卡片上的金額。

如果脫機準許,終端進行FDDA認證,其詳細認證過程見卡片規範。

如果FDDA認證通過,則終端提供清算消息(交易證書TC、相關資料)

如果FDDA認證失敗,交易被拒絕、終止或根據發夾行設定發送聯機請求

由于終端讀取了最後一條記錄後,卡片已經離開場中,這就會引起一個問題:如果卡片允許脫機準許,此時卡片上的電子現金餘額已經減少,但終端FDDA驗證失敗,拒絕交易,收單行無法收到錢,由于卡片的離開,終端無法将驗證結果傳遞給卡片,這就出現了扣費而不打單的情況。對于這個問題,我還不知道要怎麼解決。

處理限制結果

Emv_ProcessRestrict TVR

08 20 00 00 00

持卡人認證結果

Emv_CardHolderVerf TVR

08 20 04 00 00

AmtAuthNum

00 00 00 00 02 22

FloorLimit

00 00 3A 98

amt = 222, MinLimit = 15000

終端風險管理

RF SEND

80 CA 9F 36

RF RECEVIE DATA

9F 36 02 00 C5

應用交易計數器ATC:9F36長度:02值:00 C5

RF SEND

80 CA 9F 13

RF RECEVIE DATA

9F 13 02 00 C2

上次聯機應用交易計數器(ATC)寄存器:9F13長度:02值:00 C2

終端行為分析

GAC(生成應用密文)

Emv_TermRiskManage TVR

08 20 04 E0 00

send=>80AE800034 000000000222(授權金額為2,.22元) 000000000000(其他金額)0840(終端國家代碼)082004E000(終端驗證結果)0840(交易貨币代碼)120802(交易日期為12年8月2日)00(商品或服務消費)39F44A11(不可預知數)122209(交易時間12點22分9秒)

53484F5020310000000000000000000000000000(商戶名稱)

注:終端驗證結果為082004E000說明脫機資料認證失敗,應用尚未生效,輸入聯機PIN,交易超過最低限額,超過連續交易下限,交易被随機選擇聯機處理

recv <= 80 1E 80 00 C5 CB C6 4D 76 83 548F 4A 07 0F 01 03 A0 A0 04 04 0A 01 00 00 00 00 00 1E 7B 62 ED

密文資訊資料: 80(ARQC)

應用交易計數器:00 C5

應用密文(AC):CB C6 4D 76 83 54 8F 4A

發夾行應用資料:07 0F 01 03 A0 A0 04 04 0A 01 00 00 00 00 00 1E 7B 62 ED

07長度1位元組

0F分散密鑰索引1位元組

01密文版本号1位元組

03 CVR長度

A0 CVR(1010 0000)

bit位7-8為10說明不請求第2個GAC bit位6-5為10說明第1個GAC傳回ARQC

04(0000 0100)如果PIN嘗試超限,頻度檢查超限或卡片為新卡,位7,6,5可能被設定

04位元組7

0A算法辨別

01 Length of IDD

00 00 00 00 00 1E 7B62 ED位元組10-23-IDD

ICC: SW1 SW2 = 90 00=> Successful

send=>80AE4000223030(授權響應碼)000000000222(授權金額)000000000000(其他金額)0840(終端國家代碼)082004E000(終端驗證結果)0840(交易貨币代碼)120802(交易日期為12年8月2日)00(商品或服務消費)39F44A11(不可預知數)122209(交易時間12點22分9秒)

注:終端驗證結果為082004E000,說明說明脫機資料認證失敗,應用尚未生效,輸入聯機PIN,交易超過最低限額,超過連續交易下限,交易被随機選擇聯機處理

recv <=80 1E 40 00 C5 E5 4F76 46 DE 4C 39 83 07 0F 01 03 60 A4 04 04 0A 01 00 00 00 00 00 1E 7B 62 ED

密文資訊資料: 40(TC)

應用交易計數器:00 C5

應用密文(AC):E5 4F 76 46 DE 4C 39 83

發夾行應用資料:07 0F 01 03 60 A4 04 04 0A 01 00 00 00 00 00 1E 7B 62 ED

07長度1位元組

0F分散密鑰索引1位元組

01密文版本号1位元組

03 CVR長度

60 CVR(0110 0000)

bit位7-8為01說明第2個GAC傳回TC bit位6-5為10說明第1個GAC傳回ARQC

A4(1010 0100)如果PIN嘗試超限,頻度檢查超限或卡片為新卡,位7,6,5可能被設定

04位元組7

0A算法辨別

01 Length of IDD

00 00 00 00 00 1E 7B62 ED位元組10-23-IDD

ICC: SW1 SW2 = 90 00=> Successful