QPBOC交易流程詳解--POS與卡片的數據交互進行分析

QPBOC交易,也就是快速的借記貸記。

很多人都容易混淆了QPBOC,PBOC和電子現金、電子錢包的概念。首先,電子錢包早在PBOC2.0的規範裏面就去掉了,在PBOC3.0裏面把MSD也去掉了。因此,最新的PBOC3.0規範裏面,定義了三種交易,就是QPBOC,PBOC以及電子現金。

這三個交易的關係有點錯綜複雜,PBOC是最基礎的借記貸記流程,電子現金,與PBOC的流程基本一致,純粹是可以扣卡片上的脫機錢包。而QPBOC是一個相對非常簡單的流程,與電子現金扣同一個脫機錢包。

 

下面,就QPBOC的流程,直接把整個正常的脫機交易通過終端與卡片的交互的APDU分析出來,表明QPBOC的整個交易過程。

 

1.下面是第一步:選擇環境

send => 00 A4 04 00 0E 32 50 41 59 2E 53 5953 2E 44 44 46 30 31

 

recv <= 6F 30 84 0E 32 50 41 59 2E 53 59 532E 44 44 46 30 31 A5 1E BF 0C 1B 61 19 4F 07 A0 00 00 03 33 01 01 50 0B 50 424F 43 20 43 72 65 64 69 74 87 01 01 90 00

 

可以看到,發送指令用的是 00 A4,選擇的環境是PPSE(2PAY.SYS.DDF01).

卡片的響應是:

6F : FCI專用模板;

84 : 專用DF文件,也就是我們所選擇的PPSE;

A5 : FCI專用模板;

BF0C : FCI自定義數據;

61 : 目錄入口(允許有多個61);

4F : DF名稱,可選的AID,下一步選擇AID就可以選擇這個;

50 :應用標籤,此處是ASC碼,代表:PBOCCredit

87 :應用優先指示器。

 

PS:如果有多個61,就可以通過優先指示器選擇DF,或者把多個DF對應的應用標籤顯示在屏幕上,給用戶選擇,目前只有一個DF,所以下一步直接選擇這個DF。

 

 

2.第二步,選擇應用

 send =>00 A4 04 00 07 A0 00 00 03 33 01 01

 

 recv <=6F 5F 84 07 A0 00 00 03 33 01 01 A5 54 50 0B 50 42 4F 43 20 43 72 65 64 69 7487 01 01 9F 38 18 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A 02 9A 03 9C01 9F 37 04 5F 2D 08 7A 68 65 6E 66 72 64 65 9F 11 01 01 9F 12 0F 43 41 52 4420 49 4D 41 47 45 20 30 30 33 31 BF 0C 05 9F 4D 02 0B 0A 90 00

 

根據選擇環境得到的AID,我們發送的時候A404的時候,選擇了A0 00 00 03 33 01 01

可以看到卡片的返回是:

6F : FCI模板;

84 : DF名稱;(如果卡片支持部分匹配,可能返回的與發送的不一致)

A5 : FCI專用模板;

50 : 應用標籤;

87 : 應用優先指示位;

9F38 : PDOL,在下一步的時候,會按照這串數據,組包,發送給卡片;

5F2D : 首選語言;

9F11 : 髮卡行代碼表索引;

9F12 : 應用首選名稱;

BF0C : 髮卡行自定義數據

 

經過這一步,我們確定了選擇A0 00 00 03 33 01 01這個DF,同時確定了下一步應該發什麼數據給卡片。

 

3.第三步,GPO.

send => 80 A800 00 23 83 21 36 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 01 56 00 00 0000 00 01 56 14 05 19 22 11 22 33 44

 

recv <= 77 81 9C 82 02 70 00 94 08 10 01 0200 18 01 03 01 9F 10 13 07 01 01 03 90 00 00 01 0A 01 00 00 00 99 99 9A D1 9D3A 9F 36 02 00 0D 9F 26 08 03 A6 F4 9F 3E 26 68 4D 9F 4B 60 71 B2 B3 17 28 52 21E1 85 D9 B1 85 D1 BE BD 04 BD 95 FA 18 31 72 47 78 BB DA 6A 4D 9C 74 66 C8 89F8 41 95 D2 C0 93 0F C1 67 FB C6 CD 67 BB 54 5F 50 F3 2C 97 D3 F4 08 0A BC B453 FD 68 99 AC 81 F0 3A 44 9F 0D 80 F6 A5 C6 14 CD A5 1E 3F 4A 5E 8C 0C D1 38EF 2F AA 4E 7D 8A 95 15 90 81 6D 9F 6C 02 30 00 90 00

 

GPO代表交易的開始,GPO需要把PDOL指令填充好,發送給卡片。

發給卡片包括金額,時間,國家代碼和貨幣代碼等。

可以看到卡片返回:

82 : AIP應用交互特徵;

94 :應用文件定位器;

9F10 : 髮卡行應用數據;

9F36 : ATC應用交易計數器;

9F26 : 應用密文;

9F48 : 簽名的動態應用數據;

9F6C : 卡片交易屬性;(表明啊卡片要求哪一個CVM)

 

至此,卡片進入預扣款狀態,根據卡片響應,得知卡片已經返回脫機成功的狀態,終端需要把GPO返回的AFL讀完,交易便完成。

 

 

4. 第四步,讀記錄。

下面會有多個指令來回,因爲GPO返回的AFL需要讀取多個記錄。

 

send => 00 B201 14

 

recv <=70 81 B0 90 81 80 22 91 03 A5 E3 12 0F2D 28 62 09 11 76 AA 2B D4 E2 4D 69 E7 EE F7 B9 19 5C 91 EA 00 88 AE CF F4 7EDF A0 BE EF 7C 39 1D F3 B0 5F 71 7D CC 06 FF C8 EE FF 90 BA 14 21 2B 8A 52 AD48 B3 32 77 B2 E2 30 D4 0B 3E 76 DC 59 77 89 26 F1 D8 73 9E 10 6C D7 41 DE 06A7 42 3D FB A2 5E 02 F1 2E 54 3D 13 D1 B4 71 80 65 26 02 49 81 B7 D2 6B 4B F6E5 55 86 04 CC C2 89 F5 9E 8A 80 2F 45 FB 3D 9E 67 9F 32 01 03 92 24 8B 64 3D1E AF 2E A7 84 AC 20 53 03 C9 0E 74 5E A2 EF A5 CB F0 2C C4 7D 47 83 3B B7 B27E CC 69 62 38 5A 4B 8F 01 80 90 00

 

卡片返回:

90 :髮卡行公鑰證書;

9F32 : 髮卡行公鑰模數;

92 :髮卡行公鑰餘數;

8F: CA公鑰索引;

 

send => 00 B202 14

 

recv <= 70 81 A1 9F 46 81 80 AE 45 C4 2F EAE7 11 15 9E B5 DE 29 B7 F8 D4 37 DE 42 9F 03 B0 35 B1 48 E2 AB 99 BC 14 56 A69A 8C 8B F7 3A 19 08 40 3F 50 5A B4 B9 DD 5E 38 A9 36 67 65 9E 98 38 05 3C C3 D33A FB 82 A6 9F E7 BB E8 8C B0 71 76 20 6A 79 29 06 EB 86 27 69 4F 0A 23 6E 7FCC FB A4 AA 6A 73 A5 50 75 9B 9B EC 72 C6 29 43 AD 05 70 75 45 71 CB E5 AB 583C 46 0A 48 9E B7 F2 5E 5F E2 DF 1E 9B EC D9 E9 82 AD 9F 47 03 01 00 01 9F 480A 89 DD 91 7D 3A 28 8B 7B DD 55 9F 49 03 9F 37 04 9F 4A 01 82 90 00

 

卡片返回:

9F46 :公鑰模數;

9F47 : 公鑰證書;

9F48 :公鑰餘數;

9F49 : 動態數據認證數據對象列表-DDOL;

9F4A :靜態數據認證標籤列表;

 

 

send => 00 B201 1C

 

recv <= 70 1B 5A 08 62 28 00 01 00 00 11 175F 24 03 30 12 31 5F 25 03 95 07 01 9F 08 02 00 30 90 00

 

卡片返回:

5A :應用PAN,也就是卡號;

5F24 :應用失效日期;

5F25 :應用生效日期;

9F08 :應用版本號;

 

send => 00 B202 1C

 

recv <= 70 3C 5F 34 01 01 5F 28 01 56 9F 0702 FF C0 5F 20 0F 46 55 4C 4C 20 46 55 4E 43 54 49 4F 4E 41 4C 5F 30 02 02 019F 42 02 01 56 9F 63 10 11 22 33 44 55 66 77 88 00 00 00 00 00 00 00 00 90 00

 

卡片返回:

5F34 :應用PAN序列號;

5F28 :髮卡行國家代碼;

9F07 :應用用途控制;

5F20          :持卡人姓名;

5F30 :服務碼;

9F42 :應用貨幣碼

9F63 :產品標識信息;

 

send => 00 B203 1C

 

recv <= 70 09 9F 74 06 45 43 43 31 31 31 9000

 

卡片返回:

9F74 :電子現金髮卡行授權碼;

 

5.第五步,風險管理。

在最後一條記錄讀完的時候,卡片會完成扣款流程。

剩下的工作就是終端需要完成快速脫機動態數據認證,即FDDA,也會有相關的風險管理,比如應用用途控制,卡片日期檢查,黑名單檢查。


當終端接收到來自卡片的正確的GPO命令響應,將檢查髮卡行應用數據(標籤“9F10”)來確定卡片提供的密文類型。根據密文類型,判斷交易拒絕、聯機處理或脫機批准。

 

如果上面的都完成,一個QPBOC交易就完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章