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. Android7.0 拨号盘应用源码分析(一) 界面浅析

    前言 android拨号盘的源码目录在package/app/Dialer 自7.0以后Incallui的源码直接放到了Dialer目录下,虽然在7.0以前incallui有自己独立的目录,但实际编译 ...

  2. Google Protocol Buffer 协议

    1. Protocol Buffers 简介 Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化 ...

  3. Android基础总结(1)

    1.Android开发的特点 四大组件:活动(Activity).服务(Service).广播接收器(Broadcast Receiver).内容提供器(Content Provider).其中活动是 ...

  4. c++ 类模版、成员函数模版、函数模版 用法

    C++函数模版与类模版. template <class T> void SwapFunction(T &first, T &second){ }//函数模版 templa ...

  5. import的用法

    转自python学习笔记--模块和命名空间 模块(module)是Python中非常重要的一个概念,模块其实就一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的 ...

  6. MYSQL--事务处理

    1.用begin,rollback,commit来实现 begin 开始一个事务 rollback 事务回滚 commit  事务确认 2.直接用set来改变mysql的自动提交模式 MYSQL默认是 ...

  7. redis使用

    1.服务器 下载redis Windows版,命令行启动redis-server.exe即可. 2.客户端使用 jedis 添加DLL: commons-pool2-2.0.jar jedis-2.4 ...

  8. 2014年3月1日 Start && Unique Binary Search Trees

    早上和面试官聊天, 才发现自己的基础下降的有点厉害, 过去那个飘逸写程序的小青年, 如今有点走下坡路了. 可惜我不服,所以要开始做题,把水平恢复上来,能力是最重要的. 最近在做LeetCodeOJ的题 ...

  9. .NET环境配置(二)

    打开IIS服务器   首先在设置程序池 应用程序池 设置  ASP.NET v4.0         ASP.NET v4.0 Classic CLassic.NET AppPool DefaultA ...

  10. C puzzles详解【9-12题】

    第九题 #include <stdio.h> int main() { float f=0.0f; int i; ;i<;i++) f = f + 0.1f; if(f == 1.0 ...