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《消费指令》的更多相关文章

  1. ED/EP系列7《指令速查表》

    命 令                                                             CLA                  INS             ...

  2. ED/EP系列4《圈存指令》

    1. 圈存交易 通过圈存交易,持卡人可将其在银行相应账户上的资金划入电子存折或电子钱包中. 特点: 1)--必须在金融终端上联机进行; 2)--必须提交个人识别码(PIN) 步骤: 1) --终端: ...

  3. ED/EP系列3《基本指令》

    Ø --APPLICATIONBLOCK(应用锁定): Ø --APPLICATION UNBLOCK(应用解锁): Ø --CARDBLOCK(卡片锁定): Ø --EXTERNAL AUTHENT ...

  4. ED/EP系列1《简介》

    电子存折(ED:ElectronicDeposit)一种为持卡人进行消费.取现等交易而设计的支持个人识别码(PIN)保护的金融IC卡应用.它支持圈存.圈提.消费和取现等交易. 电子钱包(EP:Elec ...

  5. ED/EP系列1《简单介绍》

    电子存折(ED:ElectronicDeposit)一种为持卡人进行消费.取现等交易而设计的支持个人识别码(PIN)保护的金融IC卡应用. 它支持圈存.圈提.消费和取现等交易. 电子钱包(EP:Ele ...

  6. ED/EP系列6《扩展应用》

    包括:电子钱包复合应用:电子钱包灰锁应用. 1. 复合应用模式 Ø INITIALIZE FOR CAPP PURCHASE(复合应用消费初始化): Ø UPDATE CAPP DATA CACHE( ...

  7. ED/EP系列2《文件结构》

    电子存折/电子钱包应用是为持卡人进行金融交易而设计的一种应用.对于一张金融 IC 卡来说,它可以同时支持电子存折和电子钱包两种应用,也可以只支持其中的一种.卡片上两种应用的存在情况可以由应用类型标识( ...

  8. ED/EP简介

    ED:electronic Deposit,电子存折 EP:electronic Purse,电子钱包 PIN:personal identification number,个人识别码 MAC:Mes ...

  9. Java系列:JVM指令详解(下)(zz)

    九.自增减指令    20:iconst_1    21:istore_1    22:return 指令码      助记符                                     ...

随机推荐

  1. [转]Markdown 语法手册

    Markdown 是一种轻量级标记语言,能将文本换成有效的XHTML(或者HTML)文档,它的目标是实现易读易写,成为一种适用于网络的书写语言. Markdown 语法简洁明了,易于掌握,所以用它来写 ...

  2. zepto的clone方法于textarea和select的bug修复

    (function($) { Zepto.fn.clone = function() { var result = $.fn.clone.apply(this, arguments), oldText ...

  3. .net验证码生成及使用

    验证码的作用: 几年前,大部分网站.论坛之类的是没有验证码的,因为对于一般用户来说验证码只是增加了用户的操作,降低了用户的体验.但是后来各种灌水机器人.投票机器人.恶意注册机器人层出不穷,大大增加了网 ...

  4. C# 中DataGridView 绑定List<T>做数据源的操作问题

    若想将 List<T>作为DataGridView的数据源,然后后续还想继续操作的话,需要将List<T>赋值给BindingList对象, 然后直接将BindingList赋 ...

  5. 【缓存】Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结

    Sql server 7.0/2000下 SqlCacheDependency使用轮询的方式进行缓存失效检查, 虽然ms说对服务器压力不大, 但还是有一些的, 而且对于不常改动的混存内容无休止的轮询感 ...

  6. shell script 基本语法

    几个符号的意义$#:代表后接的参数『个数』,以上表为例这裡显示为『 4 』:$@:代表『 "$1" "$2" "$3" "$4&q ...

  7. AnyCAD C++ SDK与OpenCASCADE互操作

    AnyCAD SDK有.Net和C++两个版本,使用C++版本的AnyPlatformOcc模块可以实现与OpenCASCADE互操作. C++版本(VS2010 32bit)下载 在AOBridge ...

  8. 【转】HTML5新增元素兼容旧浏览器方法

    ref:http://www.jb51.net/html5/163906.html 问题:如何让IE8-兼容这些标签?(需要设计JS中的DOM) 代码如下: <span style=" ...

  9. Dockpanel的控件加载问题

    1. 正确加载模式:panel.ControlContainer.Controls.Add(control); 如果用panel.Controls.Add(control);则可能出现模块发生位移问题 ...

  10. url 编码(percentcode 百分号编码)

    http://www.imkevinyang.com/2009/08/%E8%AF%A6%E8%A7%A3javascript%E4%B8%AD%E7%9A%84url%E7%BC%96%E8%A7% ...