通过圈存交易,持卡人可将其在银行相应账户上的资金划入电子存折或电子钱包中。这种交易必须在金融终端上联机进行并要求提交个人识别码(PIN)(无论电子存折还是电子钱包应用)。

交易流程图如下:

1.1 发出初始化圈存交易

终端发出初始化圈存(INITIALIZE FOR LOAD)命令启动圈存交易。

初始化圈存(INITIALIZE FOR LOAD)命令报文如表1所示:

命令报文中的数据域为:

1.2 处理初始化圈存(INITIALIZE FOR LOAD)命令

收到初始化圈存(INITIALIZE FOR LOAD)命令后,IC卡将进行以下操作:
——检查是否支持命令中包含的密钥索引号。如果不支持,则回送状态字“9403”(不支持的密钥索引),但不回送任何其他数据,同时终止命令的处理过程;
——产生一个伪随机数(ICC),过程密钥SESLK和一个报文签别码(MAC1),用以供主机验证圈存交易及IC卡的合法性。

用来产生过程密钥SESLK的输入数据如下:
SESLK:伪随机数(ICC)||电子存折联机交易序号或电子钱包联机交易序号||“8000”

用SESLK对以下数据加密产生MAC1(按所列顺序):
——电子存折余额(交易前)或者电子钱包余额(交易前);
——交易金额;(通过INITIALIZE FOR LOAD命令报文中的数据域获取)
——交易类型标识;
——终端机编号。(通过INITIALIZE FOR LOAD命令报文中的数据域获取)

IC卡将把初始化圈存(INITIALIZE FOR LOAD)响应报文回送给终端处理。如果IC卡回送的状态字不是“9000”,则交易终止。

初始化圈存(INITIALIZE FOR LOAD)响应报文如下:

1.3 验证MAC1

收到初始化圈存(INITIALIZE FOR LOAD)命令响应报文后,终端把IC卡回复初始化圈存(INITIALIZE FOR LOAD)的响应报文数据传给发卡方主机。
主机将生成SESLK并确认MAC1是否有效。如果MAC1有效,交易处理将按1.5中描述的步骤继续执行。否则,交易处理将执行1.4中所描述的步骤。

1.4 回送错误状态

如果不接受圈存交易,则主机应通知终端。

1.5 交易处理

在确认能够进行圈存交易后,主机从持卡人在银行的相应账户中扣减圈存金额。
主机产生一个报文签别码(MAC2),用于IC卡对主机进行合法性检查。用SESLK对以下数据加密产生MAC2(按所列顺序):
——交易金额;
——交易类型标识;
——终端机编号;
——交易日期(主机);
——交易时间(主机)。
成功地进行了圈存交易后,主机将电子存折联机交易序号或电子钱包联机交易序号加1,并向终端发送一个圈存交易接受报文,其中包括MAC2、交易日期(主机)和交易时间(主机)。

1.6 发出圈存(CREDIT FOR LOAD)命令

终端收到主机发来的圈存交易接受报文后,发出圈存(CREDIT FOR LOAD)命令更新卡上电子存折或电子钱包余额。
圈存命令报文如下:

命令报文数据域如下:

1.7 验证MAC2

收到圈存(CREDIT FOR LOAD)命令后,IC卡必须确认MAC2的有效性(IC卡内部计算MAC2,然后比较MAC2和发过来的MAC2是否相等)。
如果MAC2有效,交易处理将执行1.8中描述的步骤。否则将向终端回送状态字“9302”(MAC无效)。

1.8 交易处理

IC卡将电子存折联机交易序号或电子钱包联机交易序号加1,并且把交易金额加在电子存折或电子钱包的余额上。IC卡必须成功地完成以上所有操作或者一个也不完成。
在电子存折圈存交易或电子钱包圈存交易中,IC卡用以下数据组成的一个记录更新交易明细:
——电子存折联机交易序号或电子钱包联机交易序号;
——交易金额;
——交易类型标识;
——终端机编号;
——交易日期(主机);
——交易时间(主机)。

TAC的计算不采用过程密钥方式,它用DTK左右8位字节异或运算的结果对以下数据进行加密运算来产生(按所列顺序):
——电子存折余额(交易后)或电子钱包余额(交易后);
——电子存折联机交易序号(加1前)或电子钱包联机交易序号(加1前);
——交易金额;
——交易类型标识;
——终端机编号
——交易日期(主机);
——交易时间(主机)。

1.9 返回确认

在成功完成步骤1.8后,IC卡通过CREDIT FOR LOAD命令的响应报文将TAC回送给终端。主机可以不马上验证TAC。

圈存命令(CREDIT FOR LOAD)的响应报文如下:

PBOC2.0协议中电子存折/电子钱包中圈存交易流程的更多相关文章

  1. PBOC协议中对于所有电子存折/电子钱包应用的预处理

    下图给出了PBOC协议中规定的对电子存折/电子钱包应用的所有交易类型共有的预处理流程 图1 1.1 插入卡片 终端应具有检测IC卡是否已经插入读卡器的功能.如果IC卡已经插入,终端将继续执行1.2的应 ...

  2. PBOC2.0与PBOC3.0的区别

    2013年2月,中国人民银行发布了<中国金融集成电路(IC)卡规范(V3.0)>(以下简称PBOC3.0),PBOC3.0是在中国人民银行2005年颁布的<中国金融集成电路(IC)卡 ...

  3. 【转】PBOC3.0和PBOC2.0标准规范异同分析

    2013年2月,中国人民银行发布了<中国金融集成电路(IC)卡规范(V3.0)>(以下简称PBOC3.0),PBOC3.0是在中国人民银行2005年颁布的<中国金融集成电路(IC)卡 ...

  4. HTTP协议中状态码的应用

    HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码. 所有状态码的第一个数字代表了响应的五种状态之一.   Mark from 维基百科     消息 ...

  5. HTTP协议中keep-alive

    一 . http协议是有连接的协议,这样每一个连接过来都要重新打开一个tcp的http socket,短期内同一个host 对服务器的请求就会很慢,若是能够保持住连接,就可以节省socket open ...

  6. http协议中302和303的区别

    http1.0协议中只有302码,没有303状态码:http1.1,在默认情况下,很多服务端基础程序,为了兼容http1.0,在遇到本应响应303时,也给客户端响应了302. 碰到的问题: 场景: 在 ...

  7. 接口测试工具-Jmeter使用笔记(八:模拟OAuth2.0协议简化模式的请求)

    背景 博主的主要工作是测试API,目前已经用Jmeter+Jenkins实现了项目中的接口自动化测试流程.但是马上要接手的项目,API应用的是OAuth2.0协议授权,并且采用的是简化模式(impli ...

  8. PBOC2.0中消费交易流程

    消费交易允许持卡人使用电子存折或电子钱包的余额进行购物或获取服务.此交易可以在销售点终端(POS)上脱机进行.使用电子存折进行的消费交易必须提交个人识别码(PIN),使用电子钱包则不需要. 1.1 终 ...

  9. 【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)

    问题描述 如何把开启NFS协议的Azure Blob挂载到Linux虚拟机中呢? [答案]:可以使用 NFS 3.0 协议从基于 Linux 的 Azure 虚拟机 (VM) 或在本地运行的 Linu ...

随机推荐

  1. c++ 虚函数和纯虚函数

    在你设计一个基类的时候,如果发现一个函数需要在派生类里有不同的表现,那么它就应该是虚的.从设计的角度讲,出现在基类中的虚函数是接口,出现在派生类中的虚函数是接口的具体实现.通过这样的方法,就可以将对象 ...

  2. ASM:《X86汇编语言-从实模式到保护模式》第15章:任务切换

    15章其实应该是和14章相辅相成的(感觉应该是作者觉得14章内容太多了然后切出来了一点).任务切换和14章的某些概念是分不开的. ★PART1:任务门与任务切换的方法 1. 任务管理程序 14章的时候 ...

  3. 【Java EE 学习 28 下】【Oracle面试题2道】【Oracle练习题3道】

    一.已知程序和数据 create table test1 (id int primary key, name ), money int); ,); ,); ,); ,); 要求根据下图写出相应的sql ...

  4. 简述Linux命令初使用

    .cd 命令 cd 命令经常使用来改变目录 root@test:~# cd /home/user/Desktop root@test:~# cd .. 返回上一级目录 root@test:~# cd ...

  5. python中各种结构的复杂度

    list The Average Case assumes parameters generated uniformly at random. Internally, a list is repres ...

  6. [Unity3D]NGUI用Sprite动画和屏幕自适应做游戏开始场景

    我们在玩任何一款手游产品时,都是先上来个logo界面,游戏欢迎界面等,这就意味着我们要做一款游戏需要多个场景,场景之间来回切换实现游戏逻辑,unity也不例外,所以从本篇开始将会介绍如何搭建多个场景, ...

  7. 注解:【有连接表的】Hibernate双向1->N关联 (N端、1端同时参与控制关联关系)

    Person与Address关联:双向1->N,[有连接表的],N端.1端同时参与控制关联关系 Person.java package org.crazyit.app.domain; impor ...

  8. C++ 数字转换为string类型

    经常需要循环读入多组序号的图像,需要将int转换为string,简单的函数代码如下: #include <sstream>#include <string> string In ...

  9. Struts2 动态方法调用

    01.Struts 2基本结构 使用Struts2框架实现用登录的功能,使用struts2标签和ognl表达式简化了试图的开发,并且利用struts2提供的特性对输入的数据进行验证,以及访问Servl ...

  10. Hibernate的抓取策略

    立即检索:当执行某行代码的时候,马上发出SQL语句进行查询(get())延迟检索:当执行某行代码的时候,不会马上发出SQL语句进行查询.当真正使用这个对象的时候才会发送SQL语句(load()) 类级 ...