ED/EP系列5《消费指令》
1. 消费交易
消费交易允许持卡人使用电子存折或电子钱包的余额进行购物或获取服务.
特点:
1) --可以在销售点终端(POS)上脱机进行
2) --使用电子存折进行的消费交易必须提交个人识别码(PIN),使用电子钱包则不需要
步骤:
1) --参考复合应用消费交易
CPURESET()
JE=00000001//消费金额
DPK= 00000000000000000000000000000055 00A40000021001
805C000204(消费前金额+9000) //(见JR/T 0025.2的5.2.9条)
805001020B+01+JE+000000000001+0F(XYSJ2+9000) YE=COPY(XYSJ2,1,8) //ED或EP余额 4
TJJYXH=COPY(XYSJ2,9,4) //脱机交易序号 2
//透支限额 3
//密钥算法版本号(DPK) 1
//算法标识(DPK) 1
WSJS=LAST(XYSJ2,8) //伪随机数(IC卡) 4 ECB_3DES_EN(WSJS+TJJYXH+0011,DPK,SESLK)
//交易金额 + 交易类型标识 + 终端机编号 + 交易日期(终端)+ 交易时间(终端)
3DES_MAC(0000000000000000+JE+06+000000000001+20090225+153030+800000000000,SESLK,MAC1) //DEBIT FOR PURCHASE/CASH WITHDRAW(见JR/T 0025.2的5.2.3条)
//终端交易序号 + 交易日期(终端)+ 交易时间(终端)+ MAC1
805401000F+00000011+20090225+153030+MAC1+08
//TAC 4
//MAC2 4 805C000204(消费后金额+9000)
2. 复合应用消费交易
复合应用消费交易允许持卡人使用电子钱包的余额进行购物或获取服务。此交易可以在终端设备或其它读卡设备上脱机进行。此交易无需提交个人识别码(PIN)--(电子钱包专用).
特点:
--可以在终端设备或其它读卡设备上脱机进行;
--无需提交个人识别码(PIN)
步骤:
--终端:发出INITIALIZE FOR CAPP PURCHASE命令启动复合应用消费交易
--IC卡:检查提供的密钥索引号(NO:9403);检查钱包是否被灰锁(NO:9408);检查电子钱包余额是否大于或等于交易金额(NO:9401);产生一个伪随机数(ICC)和过程密钥
--SESPK:伪随机数(ICC)||电子钱包交易序号||终端交易序号的最右两个字节
--终端:产生MAC1,供IC卡来验证PSAM的合法性
--终端发出UPDATE CAPP DATA CACHE命令
--IC卡:检查是否存在与SFI值相同的文件(NO:6A82);查询标识符的记录(NO:6A83);检查应用锁定标志字节(NO:9407);检查数据域长度是否大于相应记录的长度(NO:6A84)
--终端:发出DEBIT FOR CAPP PURCHASE命令
--IC卡:验证MAC1的有效性(NO:9302)
--IC卡:交易处理,扣减消费金额,交易序号加1,更新消费交易记录,产生报文签别码(MAC2)
--终端:验证MAC2
注:持卡人如需使用非接触式金融IC卡在特定应用环境中进行交易,需先在卡片中增加相应复合应用类型,即启用此类型的复合应用。——交易类型标识‘09’
CPURESET()
00A40000021001 //DPK 消费密钥
DPK=00000000000000000000000000000055
JE=00000001 //INTIALIZE FOR CAPP PURCHASE(见JR/T 0025.9的5.2.12条)
805003020B+01+JE+000000000001+0F(DATA+9000) YE=COPY(DATA,1,8) //电子钱包余额 4
XH=COPY(DATA,9,4) //电子钱包交易序号 2
//透支限额 3
//密钥算法版本号(DPK) 1
//密钥标识(DPK) 1
WS=LAST(DATA,8) //伪随机数(IC卡) 4
ZDJYXH=00000001 //计算过程密钥SESLK
ECB_3DES_EN(WS+XH+0001,DPK,SESLK) //计算MAC1,数据为:交易金额 + 交易类型(社保要转为ACSII码) + 终端机编号 + 交易日期 + 交易时间 + 80(补足长度)
3DES_MAC(0000000000000000+JE+09+000000000001+20110106+120000+800000000000,SESLK,MAC1) //UPDATE CAPP DATA CACHE
80DC01C8+20+011E00030B200905260000000000000000000000000000000000000000000000
//DEBIT FOR CAPP PURCHASE
805401000F+ZDJYXH+20110106+120000+MAC1+08
3. 修改透支限额交易
透支功能是一种基于电子存折应用的有限信用功能。如果透支限额存在,电子存折的余额是实际圈存余额与透支限额之和。
特点:
1) --必须在金融终端上联机进行;
2) --必须提交个人识别码(PIN)
步骤:
1) --终端:发出初始化修改透支现额(INITIALIZE FOR UPDATE)命令启动修改透支限额交易
2) --IC卡:检查是否支持提供的密钥索引号(NO:9403),产生一个伪随机数(ICC)、一个过程密钥SESUK和一个报文鉴别码(MAC1)
3) --终端: 验证MAC1。
4) --终端: 用SESUK加密数据产生MAC2,并发出修改透支现额(UPDATE OVERDRAWLIMIT)命令
5) --IC卡:验证MAC2的有效性
6) --IC卡:交易处理
--------------------见JR/T 0025.2的5.5.6条(未)
CPURESET()
JE=00000001//消费金额
DUK=7DAE5E53140A9170C21D5805EADB7E9A 00A40000021001
0020000003+888888 //校验密码 //(见JR/T 0025.2的5.2.9条) 密钥索引号+终端机编号
8050040107+01+000000000001(XYSJ2+9000) YE=COPY(XYSJ2,1,8) //ED余额 4
TJJYXH=COPY(XYSJ2,9,4) //ED联机交易序号 2
YZXE=COPY(XYSJ2,13,6) //原透支限额 3
//密钥版本号(DUK) 1
//算法标识(DUK) 1
WSJS=COPY(XYSJ2,23,8) //伪随机数(IC卡) 4
MAC1=LAST(XYSJ2,8) //MAC1 4 //SESUK:伪随机数(ICC)||电子存折联机交易序号||‘8000’
ECB_3DES_EN(WSJS+TJJYXH+8000,DUK,SESLK) //电子存折余额 + 透支限额 + 交易类型标识 + 终端机编号
3DES_MAC(0000000000000000+YE+YZXE+07+000000000001+8000,SESLK,_MAC1)
//透支限额 + 交易类型标识 + 终端机编号 + 交易日期 + 交易时间
3DES_MAC(0000000000000000+YE+YZXE+07+000000000001+20090225+153030+800000,SESLK,MAC2)
//新透支限额+交易日期(发卡方)+ 交易时间(发卡方)+ MAC2
805800000E+20090225+153030+MAC2(TAC+9000)
文/闫鑫原创转载请注明出处http://blog.csdn.net/yxstars/article/details/38225043
ED/EP系列5《消费指令》的更多相关文章
- ED/EP系列7《指令速查表》
命 令 CLA INS ...
- ED/EP系列4《圈存指令》
1. 圈存交易 通过圈存交易,持卡人可将其在银行相应账户上的资金划入电子存折或电子钱包中. 特点: 1)--必须在金融终端上联机进行; 2)--必须提交个人识别码(PIN) 步骤: 1) --终端: ...
- ED/EP系列3《基本指令》
Ø --APPLICATIONBLOCK(应用锁定): Ø --APPLICATION UNBLOCK(应用解锁): Ø --CARDBLOCK(卡片锁定): Ø --EXTERNAL AUTHENT ...
- ED/EP系列1《简介》
电子存折(ED:ElectronicDeposit)一种为持卡人进行消费.取现等交易而设计的支持个人识别码(PIN)保护的金融IC卡应用.它支持圈存.圈提.消费和取现等交易. 电子钱包(EP:Elec ...
- ED/EP系列1《简单介绍》
电子存折(ED:ElectronicDeposit)一种为持卡人进行消费.取现等交易而设计的支持个人识别码(PIN)保护的金融IC卡应用. 它支持圈存.圈提.消费和取现等交易. 电子钱包(EP:Ele ...
- ED/EP系列6《扩展应用》
包括:电子钱包复合应用:电子钱包灰锁应用. 1. 复合应用模式 Ø INITIALIZE FOR CAPP PURCHASE(复合应用消费初始化): Ø UPDATE CAPP DATA CACHE( ...
- ED/EP系列2《文件结构》
电子存折/电子钱包应用是为持卡人进行金融交易而设计的一种应用.对于一张金融 IC 卡来说,它可以同时支持电子存折和电子钱包两种应用,也可以只支持其中的一种.卡片上两种应用的存在情况可以由应用类型标识( ...
- ED/EP简介
ED:electronic Deposit,电子存折 EP:electronic Purse,电子钱包 PIN:personal identification number,个人识别码 MAC:Mes ...
- Java系列:JVM指令详解(下)(zz)
九.自增减指令 20:iconst_1 21:istore_1 22:return 指令码 助记符 ...
随机推荐
- selenium和Firefox版本不兼容
selenium8.py coding = utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.get(' ...
- 解决setInterval计时器不准的问题
在js中如果打算使用setInterval进行倒数,计时等功能,往往是不准确的,因为setInterval的回调函数并不是到时后立即执行,而是等系统计算资源空闲下来后才会执行.而下一次触发时间则是在s ...
- STL之vetor 排序
1 STL提供的Sort 算法 C++之所以得到这么多人的喜欢,是因为它既具有面向对象的概念,又保持了C语言高效的特点.STL 排序算法同样需要保持高效.因此,对于不同的需求,STL提供的不同的函数, ...
- 【PL/SQL】异常处理:
如果在PLSQL块中没有做异常处理,在执行PLSQL块时,出现异常,会传递到调用环境,导致程序运行出错! SCOTT@ prod> declare v_ename emp.ename%type; ...
- MyEclipse开发JAX-RS架构WebServices收发JSON数据格式
最近因项目需求,开始学习WebServices. 1.开发环境: MyEclipse2013 2.客户端发送的JSON数据格式为 {persons:[{"name":"a ...
- Centos安装arm-linux-gcc等交叉工具链
1.安装(仅以其中一个为例) 1.1 下载arm-linux-gcc (搜一下,很多的!) 1.2 解压:指定解压到根目录 tar xvzf arm-linux-gcc-4.4.3.tar.gz -C ...
- sql server数据库中 smallint, int ,bigint ,tinyint的区别与长度
smallint 是一种精确的数值数据类型,其精度在算术运算后不变,采用2个字节编码 有符号的 smallint 值的范围是 -2^15-------2^15 -1,即 -32768 ----327 ...
- 过河-状压DP
http://www.luogu.org/problem/show?pid=1052 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上 ...
- 《App研发录》知识点汇总
原文链接:http://www.jianshu.com/p/fc8c4638937e <App研发录>这部书是包建强写的,说来也巧,在读这边书之前在看池建强的<Mac 人生元编程&g ...
- ionic cordova plugin simple demo
要用cordova plugin 的话还是需要设置一下的 1. 下载 ng-cordova.js download the zip file here 2. 在index.html 中引用 (cord ...