天天看点

QPBOC报文解析

QPBOC报文解析



1.下面是第一步:选择环境

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

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

可以看到,发送指令用的是 00 A4,选择的环境是PPSE(2PAY.SYS.DDF01).

卡片的响应是:

QPBOC报文解析

PS:如果有多个61,就可以通过优先指示器选择DF,或者把多个DF对应的应用标签显示在屏幕上,给用户选择,目前只有一个DF,所以下一步直接选择这个DF。

2.第二步,选择应用

 send =>00 A4 04 00 07 A0 00 00 0333 01 01

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

根据选择环境得到的AID,我们发送的时候A404的时候,选择了A0 00 00 03 33 01 01

可以看到卡片的返回是:

QPBOC报文解析

PDOL列表(在下一步的时候,会按照这串数据,组包,发送给卡片):

QPBOC报文解析

经过这一步,我们确定了选择A0 00 00 03 33 01 01这个DF,同时确定了下一步应该发什么数据给卡片。

3.第三步,GPO.

send => 80A80000238321 36000000(终端交易属性)000000000001(授权金额) 000000000000(其他金额) 0156(终端国家代码) 0000000000(终端验证结果) 0156(交易货币代码) 140519(交易日期) 22(交易类型) 11 22 33 44(不可预知数) 

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

终端交易属性为36000000,则第一个字节为00110110,表明终端支持DDA,支持持卡人认证,支持发卡行认证。GPO代表交易的开始,GPO需要把PDOL指令填充好,发送给卡片。发给卡片包括金额,时间,国家代码和货币代码等。

可以看到卡片返回:

QPBOC报文解析

注:9F6C :卡片交易属性;(表明啊卡片要求哪一个CVM)

AIP:

QPBOC报文解析

AEL:

10 01 02 00(SFI=2,记录号为01-02)

18 01 03 01(SFI=3,记录号为01-03)记录号01用于脱机数据认证

9F10:

07长度1字节

01分散密钥索引1字节

01密文版本号1字节

03 90 00 00卡片验证结果(CVR)4字节

字节1长度字节03

字节2 bit8-7=10不请求第2个GAC

字节3 bit6-5=01第1个GAC返回TC

字节4 bit8-5=0上次交易第2次GAC收到的带有安全报文的发卡行脚本命令

 01算法标识1字节

 0A发卡行自定义长度1字节

01 00 00 00 99 99 9A D1 9D3A发卡行自定义数据

注意:要查看本次交易卡片是拒绝/批准/请求联机的信息,从9F10中看到。如果没有9F10,则需要走借贷记流程。如果卡片是支持国密算法,则9F38中会请求DF69,而且终端也支持国密算法,则返回DF69的值为01,同时9F66的值最后一个字节为80.

至此,卡片进入预扣款状态,根据卡片响应,得知卡片已经返回脱机成功的状态,终端需要把GPO返回的AFL读完,交易便完成。

4.第四步,读记录。

下面会有多个指令来回,因为GPO返回的AFL需要读取多个记录。

send => 00 B201 14

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

卡片返回:

QPBOC报文解析

send => 00 B202 14

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

卡片返回:

QPBOC报文解析

DDOL:

QPBOC报文解析

send => 00 B201 1C

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

卡片返回:

QPBOC报文解析

send => 00 B202 1C

recv <= 70 3C 5F 34 01 01 5F 28 01 56 9F0702 FF C0 5F 20 0F 46 55 4C 4C 20 46 55 4E 43 54 49 4F 4E 41 4C 5F 30 02 02019F 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

卡片返回:

QPBOC报文解析

注:9F63为产品标识信息;

 AUC:

QPBOC报文解析

send => 00 B203 1C 

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

卡片返回:

9F74:电子现金发卡行授权码;

5.第五步,风险管理。

在最后一条记录读完的时候,卡片会完成扣款流程。

剩下的工作就是终端需要完成快速脱机动态数据认证,即FDDA,也会有相关的风险管理,比如应用用途控制,卡片日期检查,黑名单检查。

当终端接收到来自卡片的正确的GPO命令响应,将检查发卡行应用数据(标签“9F10”)来确定卡片提供的密文类型。根据密文类型,判断交易拒绝、联机处理或脱机批准。

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