PBOC2.0协议中电子存折/电子钱包中圈存交易流程
通过圈存交易,持卡人可将其在银行相应账户上的资金划入电子存折或电子钱包中。这种交易必须在金融终端上联机进行并要求提交个人识别码(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协议中电子存折/电子钱包中圈存交易流程的更多相关文章
- PBOC协议中对于所有电子存折/电子钱包应用的预处理
下图给出了PBOC协议中规定的对电子存折/电子钱包应用的所有交易类型共有的预处理流程 图1 1.1 插入卡片 终端应具有检测IC卡是否已经插入读卡器的功能.如果IC卡已经插入,终端将继续执行1.2的应 ...
- PBOC2.0与PBOC3.0的区别
2013年2月,中国人民银行发布了<中国金融集成电路(IC)卡规范(V3.0)>(以下简称PBOC3.0),PBOC3.0是在中国人民银行2005年颁布的<中国金融集成电路(IC)卡 ...
- 【转】PBOC3.0和PBOC2.0标准规范异同分析
2013年2月,中国人民银行发布了<中国金融集成电路(IC)卡规范(V3.0)>(以下简称PBOC3.0),PBOC3.0是在中国人民银行2005年颁布的<中国金融集成电路(IC)卡 ...
- HTTP协议中状态码的应用
HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码. 所有状态码的第一个数字代表了响应的五种状态之一. Mark from 维基百科 消息 ...
- HTTP协议中keep-alive
一 . http协议是有连接的协议,这样每一个连接过来都要重新打开一个tcp的http socket,短期内同一个host 对服务器的请求就会很慢,若是能够保持住连接,就可以节省socket open ...
- http协议中302和303的区别
http1.0协议中只有302码,没有303状态码:http1.1,在默认情况下,很多服务端基础程序,为了兼容http1.0,在遇到本应响应303时,也给客户端响应了302. 碰到的问题: 场景: 在 ...
- 接口测试工具-Jmeter使用笔记(八:模拟OAuth2.0协议简化模式的请求)
背景 博主的主要工作是测试API,目前已经用Jmeter+Jenkins实现了项目中的接口自动化测试流程.但是马上要接手的项目,API应用的是OAuth2.0协议授权,并且采用的是简化模式(impli ...
- PBOC2.0中消费交易流程
消费交易允许持卡人使用电子存折或电子钱包的余额进行购物或获取服务.此交易可以在销售点终端(POS)上脱机进行.使用电子存折进行的消费交易必须提交个人识别码(PIN),使用电子钱包则不需要. 1.1 终 ...
- 【Azure 存储服务】如何把开启NFS 3.0协议的Azure Blob挂载在Linux VM中呢?(NFS: Network File System 网络文件系统)
问题描述 如何把开启NFS协议的Azure Blob挂载到Linux虚拟机中呢? [答案]:可以使用 NFS 3.0 协议从基于 Linux 的 Azure 虚拟机 (VM) 或在本地运行的 Linu ...
随机推荐
- angularjs向后台传参,后台收不到数据
angularjs中封装了一个$http服务,用来请求远程资源 参见:HTTP API 其中封装过的$http.post和$http.get使用起来比较方便 后台是php,用$_POST['name' ...
- Spring @AspectJ 实现AOP 入门例子(转)
AOP的作用这里就不再作说明了,下面开始讲解一个很简单的入门级例子. 引用一个猴子偷桃,守护者守护果园抓住猴子的小情节. 1.猴子偷桃类(普通类): package com.samter.common ...
- Python dir
1. 在python命令行交互环境下,可以用dir()函数查看当前的变量,比如: >>> dir()['__builtins__', '__doc__', '__loader__', ...
- this a a mark down test
*** this is title ''' code '''
- ubuntu下安装chrome
首先.题主在试过直接ubuntu终端命令安装chrome失败. 把经历过的错误稍微提一下: 在终端输入 下载安装包 sudo wget https://dl.google.com/linux/dire ...
- Effective Python2 读书笔记1
Item 2: Follow the PEP 8 Style Guide Naming Naming functions, variables, attributes lowercase_unders ...
- jQuery 名称冲突
jQuery 名称冲突 jQuery 使用 $ 符号作为 jQuery 的简介方式. 某些其他 JavaScript 库中的函数(比如 Prototype)同样使用 $ 符号. jQuery 使用名为 ...
- oracle 11g RAC安装节点二执行结果错误CRS-5005: IP Address: 192.168.1.24 is already in use in the network
[root@testdb11b ~]# /u01/app/oraInventory/orainstRoot.sh Changing permissions of /u01/app/oraInvento ...
- [译]SSAS下玩转PowerShell(二)
上一篇中简单的介绍了SSAS下的PowerShell,这一篇会演示更多的操作,比如根据当前时间创建备份,使用变量去指定处理哪一个分区,以及用XMLA脚本去创建分区,和在PowerShell中调用Pow ...
- Oracle查询实用命令
1.设置每行的长度: SET LIN[ESIZE] 200; 2.设置分页数量: SET PAGES[IZE] 50; 3.查看表空间相关信息: select file_id, tablespace_ ...