PBOC2.0中消费交易流程
消费交易允许持卡人使用电子存折或电子钱包的余额进行购物或获取服务。此交易可以在销售点终端(POS)上脱机进行。使用电子存折进行的消费交易必须提交个人识别码(PIN),使用电子钱包则不需要。
1.1 终端发出初始化消费(INITIALIZE FOR PURCHASE)命令
终端发出初始化消费(INITIALIZE FOR PURCHASE)命令启动消费交易。
初始化消费(INITIALIZE FOR PURCHASE)命令的命令报文如下:
命令报文数据域如下:
1.2 IC卡处理初始化消费(INITIALIZE FOR PURCHASE)命令
IC卡收到初始化消费(INITIALIZE FOR PURCHASE)命令后,将进行以下操作:
——检查是否支持命令中提供的密钥索引号。如果不支持,则回送状态字“9403”(不支持的密钥索引),但不回送其他数据;
——检查电子存折余额或电子钱包余额是否大于或等于交易金额。如果小于交易金额,则回送状态字“9401”(资金不足),但不回送其他数据。
在通过以上检查之后,IC卡将产生一个伪随机数。使用这个伪随机数,终端将会产生一个会话密钥SESPK。
初始化消费(INITIALIZE FOE PURCHASE)的响应报文如下:
IC卡在处理完初始化消费命令后需要按照要求,将初始化消费的响应报文返回给终端。
1.3 终端产生MAC1
使用伪随机数(ICC)和IC卡回送的电子存折脱机交易序号或电子钱包脱机交易序号,终端的安全存取模块(PSAM)将产生一个过程密钥(SESPK)和一个报文鉴别码(MAC1),供IC卡来验证PSAM的合法性。
1.4 终端发出消费/取现(DEBIT FOR PURCHASE/CASH WITHDRAW)命令
消费/取现(DEBIT FOR PURCHASE/CASH WITHDRAW)命令报文如下
消费/取现(DEBIT FOR PURCHASE/CASH WITHDRAW)命令报文数据域如下:
1.5 IC卡验证MAC1
使用伪随机数(ICC)和IC卡回送的电子存折脱机交易序号或电子钱包脱机交易序号,终端的安全存取模块(PSAM)将产生一个过程密钥(SESPK)和一个报文鉴别码(MAC1),供IC卡来验证PSAM的合法性。
用于产生过程密钥的输入数据如下:
SESPK:伪随机数(ICC)||电子存折脱机交易序号或电子钱包脱机交易序号||终端交易序号的最右两个字节
用SESPK对以下数据进行加密产生MAC1(按所列顺序):
——交易金额;
——交易类型标识;
——终端机编号;
——交易日期(终端);
——交易时间(终端)。
IC卡需要对终端发出的消费取现的命令报文中的MAC1进行验证。验证方式是使用加解密算法产生SESPK,在使用SESPK产生MAC1,验证MAC1和终端发来的MAC1是否一致。
1.6 IC卡进行交易处理
MAC1验证通过后,IC卡将会进行交易处理。
IC卡从电子存折余额或电子钱包余额中扣减消费的金额,并将电子存折或电子钱包脱机交易序号加1。IC卡必须成功地完成以上所有步骤或者一个也不完成。只有余额和序号的更新均成功后,交易明细才可更新。
IC卡产生一个报文鉴别码(MAC2)供PSAM对其进行合法性检查,并通过DEBIT FOR PURCHASE/CASH WITHDRAW命令的响应报文回送终端。
用SESPK对以下数据进行加密产生MAC2:
——交易金额。
消费/取现(DEBIT FOR PURCHASE/CASH WITHDRAW)命令的响应报文如下:
IC卡用密钥DTK左右8位字节异或运算后的结果产生TAC。TAC将被写入终端交易明细,以便于主机进行交易验证。
TAC以明文形式通过消费/取现(DEBIT FOR PURCHASE/CASH WITHDRAW)命令的响应报文从IC卡传送到终端,下面是用来生成TAC的数据:
——交易金额;
——交易类型标识;
——终端机编号;
——终端交易序号;
——交易日期(终端);
——交易时间(终端)。
对于电子存折消费交易和电子钱包消费交易(可选),IC卡将用以下数据组成的一个记录更新交易明细。
——电子存折脱机交易序号或电子钱包脱机交易序号;
——交易金额;
——交易类型标识;
——终端机编号;
——交易日期(终端);
——交易时间(终端)。
1.7 验证MAC2
终端收到IC卡发来的消费交易的响应报文,PSAM要验证MAC2的有效性。MAC2验证的结果被传送到终端以便采取必要的措施。
PBOC2.0中消费交易流程的更多相关文章
- PBOC2.0安全系列之—脱机认证之静态数据认证(SDA)
一,什么是PBOC2.0 2005年3月13日,人民银行发布第55号文,正式颁发了<中国金融集成电路(IC)卡规范>(简称PBOC2.0).该规范补充完善电子钱包/存折应用:增加借/贷记应 ...
- Android 7.0 中 ContentProvider 实现原理
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:汪毅雄 导语: 本文描述了ContentProvider发布者和调用者这两在Framework层是如何实现的. 作为Android的四大 ...
- Fabric 1.0交易流程
这篇文章详细介绍fabric的交易流程,以图片加文字的形式呈现. Fabric 1.0交易流程 fabric中的所有交易都是通过chaincode执行 1.应用程序客户端通过SDK调用证书服务(CA) ...
- QPBOC扩展应用交易流程
1 Q扩展部分数据 增加3个DGI,分别为:A001,8020,9020 9103中增加DF60(9F38中),DF61 增加DF62,DF63 1.1 A001扩展应用配置 DGI 长度 值(示例 ...
- PBOC2.0与3.0的区别
一.PBOC规范颁布的历程 1997年12月,PBOC V1.0 定义了五个方面的事项 电子钱包/电子存折应用(EP,ED) 卡片和终端的接口 卡片本身的技术指标 应用相关的交易流程 终端 ...
- PBOC2.0与PBOC3.0的区别
2013年2月,中国人民银行发布了<中国金融集成电路(IC)卡规范(V3.0)>(以下简称PBOC3.0),PBOC3.0是在中国人民银行2005年颁布的<中国金融集成电路(IC)卡 ...
- PBOC2.0安全系列之—脱机认证之动态数据认证(DDA)
动态数据认证: 一,什么是动态数据认证(DDA) 由于上篇<< PBOC2.0安全系列之—脱机认证之静态数据认证(SDA)>>已经对静态数据认证部分做了详细的分析,一些基本知识 ...
- PBOC电子现金的交易流程
做一个电子现金的交易: 第一步当然是选中当前的应用, 方法是调用select命令, 传入当前的应用AID号, 如果卡片的状态码返回9000,则表示选中成功. 下面举一个例子: 发送: 00 a4 04 ...
- 【转】PBOC3.0和PBOC2.0标准规范异同分析
2013年2月,中国人民银行发布了<中国金融集成电路(IC)卡规范(V3.0)>(以下简称PBOC3.0),PBOC3.0是在中国人民银行2005年颁布的<中国金融集成电路(IC)卡 ...
随机推荐
- java连接oracle范例
需要引用:ojdbc6.jar import java.sql.*; public class Main { static Connection conn; static Statement stat ...
- filedownload
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-/ ...
- 《C#本质论》读书笔记(15)使用查询表达式的LINQ
15.1 查询表达式的概念 简单的查询表达式 private static void ShowContextualKeywords1() { IEnumerable<string> sel ...
- Yii2的urlManager URL美化
Yii1.*与Yii2中配置路由规则rules是几乎是一样的,但还是有细微的差别. 在Yii1.*中开启path路由规则直接使用 'urlFormat' => 'path', 但在Yii2中已经 ...
- 标准模板库(STL)的一个 bug
今天敲代码的时候遇到 STL 的一个 bug,与 C++ 的类中的 const 成员变量有关.什么,明明提供了默认的构造函数和复制构造函数,竟然还要类提供赋值运算符重载.怎么会这样? 测试代码 Tes ...
- Java中分割字符串
java.lang.String 的 split() 方法, JDK 1.4 or later public String[] split(String regex,int limit) 示例代码 p ...
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- CSS3混合模式mix-blend-mode/background-blend-mode简介 ,PS中叠加效果
一.CSS3 mix-blend-mode 首先,要知道”blend-mode”就是混合模式的意思.那mix, 恩,我也不知道为什么命名为mix, 可能是该属性不仅可以作用于HTML,还可以作用于SV ...
- [leetcode] 29. divide two integers
这道题目一直不会做,因为要考虑的corner case 太多. 1. divisor equals 0. 2. dividend equals 0. 3. Is the result negative ...
- 打造自己的php动态连接库文件
http://blog.163.com/weibin_li/blog/static/1901464172012325115517181/