• 金融系列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....
  • 相关阅读:
    Exploratory Undersampling for Class-Imbalance Learning
    Dynamic Programming
    Learning in Two-Player Matrix Games
    IELTS
    A Brief Review of Supervised Learning
    测试下载
    [.net基础]访问修饰符
    [随记][asp.net基础]Page_Load和OnLoad
    第一份工作经历
    JForum2.1.9 安装过程
  • 原文地址:https://www.cnblogs.com/iplus/p/4467156.html
Copyright © 2020-2023  润新知