金融系列15《小额支付扩展应用》

    扩展应用主要应用于小额支付的一些特定支付场景,目前包括分段扣费和脱机预授权消费(仅支持小额检查)两种应用模式,未来会根据实际业务发展的需要对新的应用模式或类型进行补充。适用于开展快速借记/贷记非接触式支付应用(qPBOC)的地区、成员机构以及商户。

 

    随着金融IC卡应用的不断推广,越来越多的行业开始逐步受理金融IC卡。安全、快速、脱机支付的特点也越来越受到市场的青睐。由于相关行业的特殊性,对脱机小额快速支付应用提出了新的需求:在分时、分段计费的方式下,持卡人预先并不知道本次消费的金额,随着消费动作结束时,根据环境参数计算出消费金额,再进行扣款。典型的应用场景是地铁、高速公路(分段计费)和停车咪表(分时计费)。

 

    标准的非接触式快速支付应用已经不能满足这些行业提出的新需求,需要对原有流程进行调整和扩展,以适应这些应用场景的特点。在原来的标准qPBOC交易流程的基础上,在GPO命令处理和READ RECORD命令处理之间,增加了更新复合消费交易应用数据的UPDATE CAPP DATA CACHE命令。

 

    GPO命令的扣款和UPDATE CAPP DATA CACHE命令的更新必须确保统一执行,在READ RECORD命令成功读取AFL中的最后一条记录时统一进行更新。终端需检查所有相关数据的有效性和合法性,并进行脱机数据认证,即fDDA验证。

 

1. 文件结构 

    支持基于非接触小额支付的复合交易的PBOC借贷记应用,采用EMV卡片个人化规范(CPS)和PBOC 2.0借记/贷记应用个人化指南的个人化方法。

 

    对于仅支持复合消费应用的卡片,发卡行在个人化数据时应在SELECT AID返回的文件控制信息(FCI)中的发卡行自定义数据(BF0C)中写入复合应用标识(DF61)=0x01。对于仅支持复合消费应用的卡片,在开通过程中,终端向扩展应用专用文件添加记录时应将扩展应用标识置为1。

 

    个人化用于非接触界面的PDOL时,需要包含CAPP交易指示位。在非接触界面下,若卡片返回的PDOL中出现CAPP交易指示位,则表明卡片支持基于非接触小额支付的扩展消费交易。若终端也支持扩展消费交易,则在GPO命令中提供CAPP交易指示位,并置相应数值;若终端不支持扩展消费交易,则将置0后的CAPP交易指示位通过GPO命令提供给卡片。

 

    发卡行在个人化时预先创建扩展应用文件,写入初始密钥。在使用前,由持卡人在行业的设备上进行开通,即行业创建对应文件的记录,并将行业读写密钥写入记录中。

 

   对于循环记录文件,文件由发卡行个人化时预先创建,如果行业有使用循环记录文件的需求,则可以在持卡人开通业务时,通过APPEND RECORD命令新增一条记录,以后通过UPDATE CAPP DATA CACHE来更新文件中的记录。该文件对应一条行业密钥。

 

    根据目前几种常见的复合应用交易的实际应用需求,结合PBOC规范中的应用实现模式,对复合应用短文件标识符(SFI)以及复合应用开通密钥,做出如下推荐定义:

 

复合应用类型

复合应用文件SFI

开通密钥

普通地铁应用

0x15

预设

                                    普通公交应用                                    

            0x16            

            预设              

高速公路不停车收费

0x17

预设

停车收费咪表应用(内部余额)

0x18

预设

铁路(高铁)应用(内部余额)

0x19

预设

普通公交日票/月票应用

0x1A

预设

普通地铁日票/月票应用

0x1B

预设

其他扩展应用(内部余额)

0x1C

预设

 

 

 

建立扩展应用指令如下:
//append capp record
00A4040008A000000333010101
80CA9F3605(ATC+9000)
ATC=COPY(ATC,7,4)
ATC=000000000000+ATC
 
KEYDATA=[8020]
CAPPK1=COPY(KEYDATA,1,32)
CAPPK2=LAST(KEYDATA,32)
 
//写入0x16记录
ECB_3DES_EN(00000000000000000000000000000000,CAPPK1,KEY2)
 
HMD=04E200B047+KEY2
EMD=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
 
3DES_MAC(ATC+HMD+000130+EMD+8000000000000000,CAPPK1,MAC)
HMD+000130+EMD+MAC
 
3DES_MAC(ATC+HMD+000230+EMD+8000000000000000,CAPPK1,MAC)
HMD+000230+EMD+MAC
 
 
//append 0x1A
ECB_3DES_EN(00000000000000000000000000000000,CAPPK2,KEY2)
HMD=04E200D053+KEY2
EMD=000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
 
3DES_MAC(ATC+HMD+00013C+EMD+80000000,CAPPK2,MAC)
HMD+00013C+EMD+MAC
 
3DES_MAC(ATC+HMD+00023C+EMD+80000000,CAPPK2,MAC)
HMD+00023C+EMD+MAC
 


2. 专用指令


Ø READ CAPP DATA(读取复合应用数据)

Ø UPDATE CAPP DATA CACHE(更新数据缓存)

Ø APPEND RECORD(新增记录)

Ø GET TRANS PROVE(取脱机交易应用密文)


  文/闫鑫原创   转载请注明出处http://blog.csdn.net/yxstars/article/details/38229055

Meet so Meet. C plusplus I-PLUS....
原文地址:https://www.cnblogs.com/iplus/p/4467156.html