开发者社区> 技术mix呢> 正文

QPBOC扩展应用交易流程

简介:
+关注继续查看

1 Q扩展部分数据


  • 添加3DGI。分别为:A00180209020

  • 9103中添加DF609F38中),DF61

  • 添加DF62DF63



1.1  A001扩展应用配置


DGI    

长度 

值(演示样例)   

A001       

7*N     

15 01 00 00 FF 00 00

数据按7个字节为一个单元进行组织,每一个单元相应一个扩展应用文件的配置信息,解析例如以下:

1字节扩展应用文件SFI;

1字节文件类型:01表示变长记录文件,

                       02表示循环记录文件;

1字节读权限:00表示採用Read CAPP Cache指令读

1字节写权限:00表示採用Update CAPP Cache指令更新

1字节单条记录最大长度:限制能够使用记录的最大长度

2字节文件大小配置:对于变长记录文件, 2字节表示预设的文件大小。00 00表示大小不限制;对于循环记录文件。为1字节记录条数和1字节记录大小。

能够依据应用须要使用的扩展应用文件的实际数量和实际SFI,对该DGI的数据域进行调整。每7个字节组成的单元的数量和顺序。决定了兴许8020数据域内开通密钥的数量和顺序,必须一一相应。

 


1.2    8020扩展应用开通子密钥


DGI数据组成及顺序例如以下。密钥顺序依照A001中定义的文件SFI顺序进行匹配,相应设置为每一个文件的开通密钥。

DGI     

Len      

Value

8020

10*N

0x13文件扩展应用开通保护密钥(16字节)

0x14文件扩展应用开通保护密钥(16字节)

……….

 



1.3    9020:扩展应用开通密钥校验值

  

   DGI数据组成例如以下,当中校验值(KCV)由8020中的每条密钥对8字节00加密后取左3字节组成,校验值密钥顺序必须与8020中的密钥顺序一致。

DGI

Len

Value

9020

03*N

0x13文件复合应用开通保护密钥校验值(3字节)

0x14文件复合应用开通保护密钥校验值(3字节)

…….

 

 

 

1.4     9103非接触返回值


l  9F38中添加CAPP交易指示位DF60

l  BF0C后面添加DF61

假设终端不支持非接触扩展应用,则设置DF60为00

 


1.5     0D01或0E01


假设支持押金抵扣交易。添加DF62,DF63

 


2     扩展应用指令



2.1     READ CAPP DATA


//TEST
CPURESET()
00A4040008A000000333010101
80B400A8020570  //读取0X15变成文件,ID为0570的记录
00B201F400       //读取0X1E循环文件,第一条记录
 
 
//16 RMAC
<commad 80B400b00A05701234567812345678 />
<return 057007000000000000001C895F11(4字节的RMAC) />
 
//校验MAC
KEY=D5F1FE4A7F8C20FDEC49150BA2E00EDF
3DES_MAC(1234567812345678 05700700000000000000800000000000,KEY,MAC)</span>


l  强制带有MAC,用来确认指令来自合法的终端

l  ID由支付系统定义,不足位数后补0

l  在同一SFI下,ID应保持唯一。

l  卡片支持RMAC,返回4字节MAC。用行业应用管理密钥计算MAC验证,初始向量为终端发送的随机数。

l  扩展应用支持应用失效功能,在更新应用数据时将应用有效标志置0.

 



2.2     APPEND RECORD

 

<span style="font-family:Microsoft YaHei;">CPURESET()
00A4040008A000000333010101
80CA9F3605(ATC+9000)
ATC=COPY(ATC,7,4)
ATC=000000000000+ATC
CAPPK1= D5F1FE4A7F8C20FDEC49150BA2E00EDF//应用开通密钥
CAPPK2= D5F1FE4A7F8C20FDEC49150BA2E00EDF//行业应用管理密钥
 
//写入0X16变成文件记录  B0:10110 000
ECB_3DES_EN(CAPPK2,CAPPK1,KEY2)
HMD=04E200A81E+KEY2+057007+STRING(0,07)  // TLV
3DES_MAC(ATC+HMD+8000000000,CAPPK1,MAC)
HMD+MAC
 
//写入0X1e循环文件记录
ECB_3DES_EN(CAPPK2,CAPPK1,KEY2)
HMD=04E200F01E+KEY2+057007+STRING(0,07)
3DES_MAC(ATC+HMD+8000000000,CAPPK1,MAC)
HMD+MAC</span>


l  扩展应用开通时,用来新增行业应用记录。

l  加密加MAC方式,强制带有MAC。用来确认指令来自合法的终端,MAC计算过程參考8.2 安全机制

l  持卡人在专用设备上开通。

l  循环记录开通业务时,可预先添加一条。该文件相应一条行业应用管理密钥。

l  卡片推断记录长度是否超出,是返回6A80.

l  卡片推断文件空间是否足够。否返回6A84.

 

 


2.3     UPDATE CAPP DATA CACHE


<span style="font-family:Microsoft YaHei;">//UPDATE CAPP DATA:
DATA=05700700000000002212
KEY= D5F1FE4A7F8C20FDEC49150BA2E00EDF
3DES_MAC(000000000000+ATC+84DE00+ID+0E+DATA+8000000000000000, KEY,MAC)
84DE00+ID+0E+DATA+MAC //RETURN 9000
 
//RMAC
<commad 84DE00b00e0570070000000000000017B8E975 />
<return 57C6C544(4字节的RMAC) />
 
//校验MAC  初始向量=4字节0+MAC  响应报文
KEY=D5F1FE4A7F8C20FDEC49150BA2E00EDF
3DES_MAC(00000000 17B8E975 9000 800000000000,KEY,MAC)</span>


更新的文件不存在。返回6A82

前续命令GPO命令或UPDATE CAPP 命令。返回6985.

变成文件,需检查是否存在此ID。否则返回6A83.

检查更新的长度是否与原来一致,否则返回6A80或6A84.

暂存数据。读记录完毕后,更新。

循环文件,更新最新一条记录。

 

 


2.4     GET TRANS PROVE

 

<span style="font-family:Microsoft YaHei;">CPURESET()
//2> 应用初始化(必备):
00A4040008A000000333010101
80CA9F3605(ATC+9000)
ATC=COPY(ATC,7,4)
//取脱机交易密文TC
805A000002+ATC+08</span>

l  终端在无法接收到最后一条交易指令响应数据的情况下,又一次上电并发送此命令,获取上笔交易TC,假设命令响应成功,则终端推断上笔交易成功。否则,按交易失败处理。

l  假设近期一笔交易是脱机预授权交易。返回全0.

l  该命令仅仅能获取近期一笔卡片成功完毕的扩展应用交易的TC。

 



3     交易流程



3.1     分时分段扣费交易



3.1.1          实例

<span style="font-family:Microsoft YaHei;">CPURESET()
//2> 应用初始化(必备):
00A4040008A000000333010101
//2.1> READ CAPP DATA:
80B400b0020570
//2.2> 交易前金额:
80CA9F7900
80CADF6200 //抵扣限额
80CADF6300 //已抵扣金额
 
//DF60=01   9F02 = 000000000100   实际金额=9F79+DF62-DF63
80A80000248322270000800000000001000000000000000156000000000001561410220111223344 01
 
//2.3>UPDATE CAPP DATA:
80CA9F3605(ATC+9000)
ATC=COPY(ATC,7,4)
 
DATA=05700700000000002212
3DES_MAC(000000000000+ATC+84DE00b00e+DATA+8000000000000000,D5F1FE4A7F8C20FDEC49150BA2E00EDF,MAC)
84DE00B00e+DATA+MAC;UPDATE APPDATA CACHE
80B400B0020570(AFTER+9000);READ APPDATA     //没有真正被改写,仅仅是缓存
 
 
//3> 读应用数据(必备):
00B2011400
00B2021400
00B2031400
00B2021c00
00B2023400
 
//13.2> 交易后金额:
80CA9F7900
 
80CADF6200 //抵扣限额
80CADF6300 //已抵扣金额
 </span>


 

3.1.2          流程图


 

 

 

 

 

3.1.3          注意事项

 

1.  先缓存,后更新。交易扣款和扩展应用记录的更新必须确保同一时候运行,RECORD READ成功读取最后一条AFL命令记录时统一进行更新。卡片保持本次TC

2.  验证方式fdda

0001.

3.  验证9F698字节与DF61值是否一致

4.  支持押金抵扣功能,需添加DF62DF63. 以手机话费为例。DF62为可透支额,DF63为已透支额。

5.  交易前剩余金额=9F79+DF62-DF63,交易后DF63=9F02-9F799F79=09F79=9F79-9F02

6.  圈存先抵消DF63,再添加9F79.

7.  改动DF62,值必须大于DF63,否则返回6A80.

 

 


3.2     脱机预授权交易

 


3.2.1          实例

<span style="font-family:Microsoft YaHei;">CPURESET()
//2> 应用初始化(必备):
00A4040008A000000333010101
//2.1> READ CAPP DATA:
ID=C0 //A8 B0 B8 C0
80B400+ID+020570
 
//2.2> 交易前金额:
80CA9F7900
80CADF6200 //抵扣限额
80CADF6300 //已抵扣金额
 
//DF60=02   9F02 = 000000000200  9F381B 9F6604 9F0206 9F03069F1A0295055F2A029A039C019F3704 DF6001
80A80000248322 270000800000 00000200 0000000000000156000000000001561410220111223344 02
 
//2.3>UPDATE CAPP DATA:
80CA9F3605(ATC+9000)
ATC=COPY(ATC,7,4)
 
ID=C0
DATA=05700700000000002212
3DES_MAC(000000000000+ATC+84DE00+ID+0e+DATA+8000000000000000,D5F1FE4A7F8C20FDEC49150BA2E00EDF,MAC)
84DE00+ID+0e+DATA+MAC;UPDATE APPDATA CACHE
80B400+ID+020570(AFTER+9000);READ APPDATA     //没有真正被改写,仅仅是缓存
 
//循环文件
DATA=01020700000000002212
3DES_MAC(000000000000+ATC+84DE00+f0+0e+DATA+8000000000000000,D5F1FE4A7F8C20FDEC49150BA2E00EDF,MAC)
84DE00+f0+0e+DATA+MAC;UPDATE APPDATA CACHE
//00B201F400 过程中。不同意读?
 
 
80CA9F7900
//3> 读应用数据(必备):
00B2011400
00B2021400
00B2031400
00B2021c00
00B2023400
 
//13.2> 交易后金额:
80CA9F7900
 
80CADF6200 //抵扣限额
80CADF6300 //已抵扣金额
 
//13> 卡片日志:
00B2015c00
00B2025c00
00B2035c00</span>


 

3.2.2          流程图




 

 

3.2.3          注意事项

 

1.  是特殊的分时,分段扣费交易,分为预授权(冻结金额),预授权完毕(扣款)。

表示选择或运行脱机预授权交易:DF60的值02,表示选择或运行脱机预授权完毕交易: DF60的值03

2.  不支持押金抵扣功能。

3.  更新的行业记录内容由行业自行定义,可是建议包含脱机预授权状态,脱机预授权金额和脱机预授权日期或者有效期。

4.  CAPP=2 9F79=9F79-预授权金额。CAPP=3 9F79=9F79+预授权金额-实际消费金额。

5.  支持3个脱机预授权交易。第4个返回6971.(pboc3.0能够,pboc2.0不能够,UPDATE返回6985)

6.  CAPP=2.同行业同应用(SFI同样ID),连续运行,返回6972.

7.  CAPP=3,无相应ID,返回6973. (pboc 3.0能够,pboc 2.0不能够,UPDATE返回6985)

8.  脱机预授权,不返回TC密文(9F26)。

9.  在最后一条记录被读出后,检測当前更新的CAPP记录是否与最后一条READ CAPP记录一致,否则返回6974.交易失败,剩余金额返还。

10.Fdda01时,比較9F698字节与DF61值。

11.Fdda完毕后,终端保存相关信息。以便上传。

12.多扣的钱优先补到DF63。少扣的钱从9F79取。

13.圈存时。剩余金额上限9F77必须大于等于9F79+未完毕的金额,否则返回6A80

 

 

 


4     扩展应用专有文件

 


4.1     变成记录文件

 


 

4.2     循环文件

 

 

支持换乘优惠的应用应将本次交易明细记录在扩展应用循环记录文件里,在换乘优惠时,可读取循环记录文件里的内容作为换乘优惠的根据。

 

 

4.3     文件类型




參考资料:中国金融集成电路(IC)卡规范 第14部分:非接触式IC卡小额支付扩展应用规范.pdf

 









本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5098251.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
秒合约交易系统如何开发搭建?(秒合约交易系统开发源码示例)
秒合约交易系统是一种基于区块链技术实现的去中心化交易系统,它通过智能合约来实现交易的自动执行和结算。这种交易系统需要设计智能合约、搭建交易平台、进行测试和优化,然后部署到区块链网络上供用户使用。
24 0
数字货币永续合约系统开发逻辑详情
数字货币永续合约系统开发逻辑详情
26 0
期货量化合约交易系统开发策略分析(源码案例)
期货量化交易系统是利用计算机技术和数学模型进行期货交易的系统。它通常基于量化投资的概念,利用数学模型和算法做出投资决策,以获得更高的回报。
33 0
合约量化(策略)系统开发规则及方案丨合约量化(源码)系统开发详细及案例
  Quantitative trading refers to the use of advanced mathematical models instead of artificial subjective judgments,and the use of computer technology to select multiple"high probability"events that can bring excess returns from huge historical data to formulate strategies,greatly reducing the impac
31 0
合约量化系统开发(策略及功能)丨合约量化开发运营版及源码部署
 随着人工智能、5G通信、工业互联网等技术的发展,智能工业正日益成为现代工业发展的主流趋势。智能工业可以通过数字化、智能化、绿色化、协同化的方式实现生产和管理的高效、智能、环保和协同,同时也面临着技术、安全和隐私等方面的挑战和问题。因此,需要加强技术研究和应用实践,保障系统的安全性和可靠性,加强隐私保护和数据安全,推动智能工业的健康发展,为实体经济高质量发展做出贡献。
33 0
what/clear量化合约交易软件开发源代码|现货合约跟单系统开发策略代码详情
what/clear量化合约交易软件开发源代码|现货合约跟单系统开发策略代码详情
30 0
量化合约开发(策略)丨量化合约系统开发(开发规则及详情)丨量化合约系统源码项目
什么是智能量化交易机器人?从本质上说,交易机器人是一种软件程序,它直接与交易所进行交互(通常使用API获取和解释相关信息),并根据市场数据的解释发出买卖订单。这些机器人通过监测市场价格走势,并根据一套预先设定和编程的规则做出反应,从而做出这些决定。通常,一个交易机器人会分析市场行为,例如交易量、订单、价格和时间,它们通常可以根据您自己的喜好进行编辑。
31 0
合约量化开发系统详情丨量化合约系统开发技术逻辑方案
合约量化开发系统详情丨量化合约系统开发技术逻辑方案
42 0
秒合约系统丨秒合约系统开发(逻辑及方案)丨秒合约开发源码案例设计
 用户界面是交易的脸面,在很大程度上也决定了用户的体验感。确保以简约的方式构建用户友好且直观的界面,以提供令人惊喜的交易体验,使用户更容易执行交易订单。另外我们使用前后台分离,数据库分离,保护数据安全与系统安全
161 0
+关注
技术mix呢
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
透明可控程序化投放实践
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载