通过圈存交易,持卡人可将其在银行相应账户上的资金划入电子存折或电子钱包中。这种交易必须在金融终端上联机进行并要求提交个人识别码(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. PHP PHPUnit的简单使用

    1.window安装pear的教程:http://jingyan.baidu.com/article/ca41422fd8cf3d1eae99ed3e.html 2.在工作目录下,放两个文件: 1)C ...

  2. 【Network】golang 容器项目 flannel/UDP相关资料

    参考资料: flannel_百度搜索 Flannel首页.文档和下载 - 容器集群子网 - 开源中国社区 docker下基于flannel的overlay网络分析 - OPEN 开发经验库 flann ...

  3. Qt: 时钟Demo

    其实是一个很简单的Demo,可以编译了拿NSIS打包.最近在做富文本编辑器和补C++不记得的东西吧,项目遥遥无期. //clock.pro #----------------------------- ...

  4. 模拟搭建Web项目的真实运行环境(二)

    上一节已经介绍了如何在虚拟机中部署测试环境,接下来将介绍怎么在ubuntu下部署redis.   一.在ubuntu安装Xrdp + Vnc 为了在以后可以通过windows系统来远程操作ubuntu ...

  5. IIS使用Tip

    1. IIS7 HTTPS 绑定主机头 IIS7下面默认HTTPS绑定是无法指定主机头的,但我们可以通过手工修改IIS配置来实现主机头绑定. 打开C:\Windows\system32\inetsrv ...

  6. [译]:Orchard入门——给网站添加页面

    原文链接:Adding Pages to Your Site 注:内容为官方文档翻译,本人遇到的page中间是布局,而非官网的body--但此内容可以在内容定义里自行修改(本文不做介绍) 在创建Orc ...

  7. Struts2 回顾总结

    1.第一个Struts2入门案例 1.找jar包 Struts2-core xwork-core ognl javasist freemarker commons-lang commons-io co ...

  8. 搭建高可用MongoDB集群(一):配置MongoDB

    在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQL有这些优势: 大数据量,可以通过 ...

  9. 前端SEO技巧

    前几天在慕课网上学习了“SEO在网页制作中的应用”,觉得挺好.挺有用的,今天,特此做了一个小小的笔记,也算是对学习过后的一个总结. 一.搜索引擎工作原理 当我们在输入框中输入关键词,点击搜索或查询时, ...

  10. xor和gates的专杀脚本

    前段时间的一次样本,需要给出专杀,应急中遇到的是linux中比较常见的两个家族gates和xor. 首先是xor的专杀脚本,xor样本查杀的时候需要注意的是样本的主进程和子进程相互保护(详见之前的xo ...