交易预处理

终端通过检查终端交易属性(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
      • 卡片和终端都支持签名,则脱机货币检查
      • 卡片或终端至少一个不支持签名,则终止非接触式交易
  3. 如果终端支持联机
    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



非接触借记贷记流程报文解析相关推荐

  1. 借记贷记证书格式解析

    ******************************************************************************   发卡行公钥证书解析 ********* ...

  2. 借记/贷记交易处理流程

    功能概述 以下功能在借记/贷记交易处理中得到使用.尽管在必备(M)的功能中有些步骤也许是可选择的,但标记为必备的功能还是应该在所有交易中得到执行.标记为可选(O)的功能是可选择的并根据卡或终端的参数, ...

  3. PBOC借记贷记应用终端规范文档,对名词解释

    中国金融集成电路(IC)卡规范备注 学习PBOC借记贷记应用终端规范文档,对名词解释备注一下. 应用  application  卡片和终端之间的应用协议和相关的数据集. 命令  command 终端 ...

  4. 借记贷记、往账来账资金流,及联机异常处理总结

    [银行支付]借记贷记.往账来账资金流,及联机异常处理总结 写在前面的 1,资产负债: 2,借贷来往帐: 3,借贷来往帐在联机交易里的处理: 4,借贷来往帐的异常处理: 写在前面的 银行后台开发是程序员 ...

  5. 借记贷记;资产=负债+所有者权益

    今天翻看业务的资料,看到这些陌生的词汇,需要对他们很了解才行,故google了下. [color=red]借记和贷记有什么不一样?[/color] http://zhidao.baidu.com/qu ...

  6. PBOC卡片应用分析(四)非接触式IC卡规范

    感谢@JulyClyde同学友情提供的工商银行闪酷钥匙扣,支持银联的闪付功能.卡片内的电子现金余额已经被圈提干净,余额应该是0.现在使用PC/SC的读卡器配合麻工强大的Snooper进行测试. 首先选 ...

  7. QPBOC快速借贷记流程(2)

    目录 目录 QPBOC快速借贷记流程 交易预处理 应用选择 最终选择 应用初始化 GPO命令报文发送 GPO响应报文接收 卡片行为分析 读取记录 脱机数据认证 QPBOC快速借贷记流程 在我的上一篇文 ...

  8. 8583 报文解析过程

    一. 全局概述 1. <多渠道平台接入接口规范>这个标准规定了各种接入端(主要包括直联多渠道平台的终端, 包括这里主要关注的POS机)与中国银联多渠道平台之间进行联机交易时使用的报文接口, ...

  9. PBOC 3.0非接触式学习笔记(一)

    因为毕业设计的机缘巧合,接触了智能卡的开发.看了近一个月的PBOC 3.0金融规范,决定从实践中快速了解各种命令的发送以及响应.网上前辈的的各种博客文章,对于我这个智能卡开发几乎为零的小白来说无疑是最 ...

最新文章

  1. How to enable mod_rewrite on Apache?
  2. 【笔记】shellcode相关整理
  3. 深度学习核心技术精讲100篇(七十九)-深度学习应用实战案例:携程金融自动化迭代反欺诈模型体系
  4. superset出现unhashable type: ‘dict‘
  5. kl散度的理解_以曲率的视角理解自然梯度优化
  6. 解决sonar scanner扫描报错Please provide compiled classes of your project with sonar.java.binaries property
  7. 完美的做图配色专辑,UI设计师赶紧收藏
  8. Python[8] :paramiko模块多进程批量管理主机
  9. springboot对应springcloud各个版本和官网查询地址
  10. Shadow DOM的样式ShadowRoot
  11. SpringBoot整合Validation进行参数校验
  12. 接入阿里云OSS--公有云分布式存储
  13. 华硕笔记本电脑开机进入bios
  14. 有关未雨绸缪:我国电子商务税收策略的思索
  15. TI物料电子元器件芯片LM3402MM/NOPB
  16. 如果只能从市面上的Python入门书中选择一本送给你,那我一定会选这本……
  17. 有哪些情人节 情人节大全
  18. 关于欧氏距离和余弦相似度的使用场景
  19. 图嵌入/图神经网络模型整理归类
  20. java gps_java-使用GPS位置

热门文章

  1. 计算机学院新生入学致辞,计算机学院召开2020级新生入学教育启动大会
  2. 解决IDEA : Could not autowire. No beans of ‘xxxx‘ type found
  3. JavaGui 02 Pannel-面板
  4. solr的copyFeild用法(改变各个feild的权重,修改打分结果)-注意!
  5. rss下载_Microsoft下载中心RSS提要
  6. IDEA谷歌翻译插件提示:更新 TKK 失败,请检查网络连接
  7. 代购工作简历如何写得高大上?
  8. 跳一跳python源码下载_微信跳一跳游戏python脚本
  9. 在线制作名片php,关于一个名片在线制作的问题,求高手指点阿..
  10. 成品入库过账bapi