QPBOC快速借贷记流程(2)

目录

QPBOC快速借贷记流程

在我的上一篇文章中,我曾提到QPBOC有以下几个步骤:
- 交易预处理
- 应用选择
- 最终选择
- 应用初始化
- 卡片行为分析
- 读取记录
- 脱机数据认证


交易预处理

终端通过检查终端交易属性(9F66)来判断其交易的类型,如是否支持QPBOC。如果支持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 =>00A404000E 325041592E5359532E4444463031
若回送的状态字为“90 00”,则命令执行成功,并进入非接触式支付系统环境。
recv <=6F 31 84 0E 325041592E5359532E4444463031 A5 1F BF0C 1C 61 1A 4F 08 A00000033301010250 0B 50424F432043524544495487 01 01
这里写图片描述
至此,终端得到了所需要进入的ADF的DF名。
若回送的状态字为其他状态字,或PPSE存在错误格式,则不能从FCI中获得AID,终端应关闭非接触式界面,启用另一界面。QPBOC并不支持AID列表选择


最终选择

在上一步骤中,我们已经得到了ADF的DF名:A0 00 00 03 33 01 01 02,且所返回的FCI中只有一个AID。所以,终端最终选择该ADF。
卡片返回PDOL的基本内容依赖于支持的密文版本以及卡片是否支持脱机QPBOC交易(这一部分PBOC规范的第12部分已经有了比较详细的说明)
send =>00A4040008 A000000333010102
recv <=6F 56 84 08 A000000333010102 A5 4A 50 0B 50424F4320435245444954 87 01 01 9F38 18 9F66 04 9F02 06 9F03 06 9F1A 02 95 05 5F2A 02 9A 03 9C 01 9F37 04 5F2D 02 7A68 9F11 01 01 9F12 0B 50424F4320435245444954 BF0C 05 9F4D 02 0B0A
这里写图片描述
在所返回的响应中,最为重要的数据就是PDOL和交易日志入口。相比于接触式应用,QPBOC要求PDOL中包含更多的标签:4个字节的终端交易属性、6个字节的授权金额、6个字节的其他金额、2个字节的终端国家代码、5个字节的终端验证结果(TVR)、2个字节的交易货币代码、3个字节的交易日期、1个字节的交易类型、4个字节的不可预知数。
这里写图片描述


应用初始化

GPO命令报文发送

在接收到PDOL数据时,终端必须检查卡片所返回的响应。如果标签为“9F66”的数据项在PDOL中不存在或PDOL不存在,则终端应关闭非接触式界面,并尝试另一种界面进行交易
如果数据存在,终端将通过GPO命令将卡片所需的数据传送给卡片。卡片根据所接收到的终端交易属性判断交易类型是QPBOC还是非接触借记贷记应用。
如果卡片支持非接触借记贷记应用且“终端交易属性”第1字节第7位=“1”(支持非接触式借贷记应用),则卡片使用非接触借记贷记应用路径,其处理流程和接触式借记贷记应用处理流程一致,只是通信方式不一样。
如果卡片支持QPBOC应用且“终端交易属性”第1字节第6位=“1”(支持非接触QPOBC),卡片将使用QPBOC路径,执行卡片行为分析,确定该操作是进行脱机批准、联机还是脱机拒绝。卡片将其生成的应用密文加入GPO响应报文中并返回给终端。
如果没有匹配的非接触交易路径,则卡片应在响应中返回一个指示器(6985)来终止交易,并尝试采用另一种界面。

GPO响应报文接收

当终端收到卡片所返回的响应报文时,终端需要通过应用交互特征和卡片响应GPO命令提供的数据元决定是否采用QPBOC路径。

过程展示:
1. send =>80A80000238321 60000000(终端交易属性) 000000000001(交易金额为0.01元)000000000000(其他交易金额为0.00元) 0156(终端国家代码为中国)0000000000(终端验证结果)0156(人民币)150818(交易时间:15年8月18日) 00(商品或服务消费)11223344(不可预知数)
recv <= 80 12 7C00 08010100 10010301 10070700 18010400
其中终端交易属性为“60 00 00 00”,则表明第1字节为01 10 00 00,表明终端仅支持QPBOC,又支持非接触式应用,(估计卡片也是一样的属性),所以,卡片将按照非接触式借记/贷记应用进行处理,GPO命令将只能返回AIP和AFL,终端将按照非接触式借记/贷记流程进行处理
2. send =>80A80000238321 3E000000(终端交易属性) 000000000001(交易金额为0.01元)000000000000(其他交易金额为0.00元) 0156(终端国家代码为中国)0000000000(终端验证结果)0156(人民币)150818(交易时间:15年8月18日) 00(商品或服务消费)11223344(不可预知数)
recv <= 77 5A 82 02 7C00 9F36 02 002C 57 13 (IC卡卡号)D**(失效日期)2010000078000000F 9F10 13 07370103A02000010A0100000000002A783CAC 9F26 08 589005F5A07E44CC5F3401009F6C0200009F5D06000000000000 5F20 06 ******
这里写图片描述
其中终端交易属性为“3E 00 00 00”,则表明第1字节为00 11 11 10,表明终端支持QPBOC,支持联机PIN,支持签名,且终端具有联机能力,请求联机处理,所以卡片将按照QPBOC进行处理,GPO命令将不仅返回AIP、AFL、还需要返回应用密文、动态签名数据
77 5A
82 02 7C00(应用交互特征AIP)
9F36 02 002C (应用交易计数器ATC)
57 13 **** D * 201 00000 78000000F(磁条2等效数据)
9F10 13 07 37 01 03 A0 20 00 01 0A 01 0000000000(电子现金余额) 2A783CAC(MAC) (发卡行应用数据)
9F26 08 589005F5A07E44CC5F3401009F6C0200009F5D06000000000000(应用密文AC)
5F20 06 *********(持卡人姓名)
此时,应用密文在GPO命令响应中出现,终端就可以按照QPBOC流程进行处理。
2磁道等价数据由应用主账号PAN(16位数字)、分隔符(“D”)、失效日期(YYMM)、服务码(3位数字)、PIN验证域(4位数字)、自定义数据组成,如果数据不满偶数,则在后面添加F。
因此,从磁条2等效数据中,可以明确了解到我的信用卡卡号和失效日期
这里写图片描述
而发卡行应用数据中,可以了解到第3字节为01,表示该应用密文采用的是01版本,第5字节为A0(1010 0000),表示要求联机交易, 其IDD类型为01,表示接下来的数据为电子现金余额的数目,所以电子现金余额为0元。
AIP表明:卡片支持SDA、DDA、持卡人认证,要求执行终端风险管理,并支持发卡行认证。


卡片行为分析

当卡片接收到终端传送的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来读取指定的记录,一旦指示的记录都被读取,终端应提示持卡人和商户可将卡片移开。

脱机数据认证

根据发卡行自定义数据可知交易的处理方式。
如果脱机拒绝,终端直接拒绝交易,交易结束。
如果联机授权,终端向收单行发送联机授权报文,根据收单行返回的响应判断交易是否批准。但要注意的是联机授权成功,则扣除的是银行账户的金额,而不是卡片上的金额。
如果脱机批准,终端进行FDDA认证,其详细认证过程见卡片规范。
如果FDDA认证通过,则终端提供清算消息(交易证书TC、相关数据)
如果FDDA认证失败,交易被拒绝、终止或根据发卡行设置发送联机请求

由于终端读取了最后一条记录后,卡片已经离开场中,这就会引起一个问题:如果卡片允许脱机批准,此时卡片上的电子现金余额已经减少,但终端FDDA验证失败,拒绝交易,收单行无法收到钱,由于卡片的离开,终端无法将验证结果传递给卡片,这就出现了扣费而不打单的情况。对于这个问题,我还不知道要怎么解决。


阅读更多

更多精彩内容