读取PBOC电子现金指令流
该指令流仅适用于T=0协议卡片.
终端对IC卡的响应:
60 须要额外的工作等待时间,说明IC卡端数据还未处理好.
61 发送GET RESPONSE命令取应答数据
6C 加上取字节数,命令重发
按照其类型,文件可能通过文件名称和SFI进行查询.
卡中的不论什么ADF(应用定义文件)或DDF(文件夹定义文件)可通过其DF(专用文件)名查询,ADF的DF名相应其AID,每一个DF名在给定的卡中是唯一的.
SFI(短文件标识符)用于选择AEF(应用基本文件).对给定应用中的不论什么AEF,能够通过SFI(5位代码,取值范围1~30)查询.
S1: 读取ATR
<=3B 6D 00 00 80 65 08 49 04 86 53 00 00 00 00 00 00
ATR数据解析
|
字符 |
值 |
说明 |
|
TS |
3B |
正向约定,首先发送的是字符的最低有效位 |
|
T0 |
6D |
TB1和TC1存在,D表示历史字节的存在个数 |
|
TB1 |
00 |
不使用VPP |
|
TC1 |
00 |
指明所需额外保护的时间量 |
|
历史字节 |
80 65 08 49 04 86 53 00 00 00 00 00 00 |
S2:选择支付系统”1PAY.SYS.DDF01”,读取FCI(文件控制信息)
=>00 A4 04 00 0E
<=A4(INS)
=>31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 //”1PAY.SYS.DDF01”
<=61 28
=>00 C0 00 00 28
<=C0
<=6F 26 // FCI模板
84 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 3031 // DF名
A5 14 //FCI专用数据
88 01 01 5F 2D 02 7A 68 9F11 01 01 BF 0C 05 9F 4D 02 0B 0A //目标基本文件的SFI
<=90 00
命令解析
|
命令 |
|
|
00 A4 04 00 Lc |
SELECT, 04表示通过文件名称选择,Lc命令数据域中存在的字节数 |
|
00 C0 00 00 Le |
GET RESPONSE, Le表示响应的期望数据的最大长度 |
数据解析
SELECTDDF的响应报文(FCI)
|
标志 |
值 |
数据 |
|
6F |
FCI模板 |
|
|
84 |
DF名 |
|
|
A5 |
FCI专用数据 |
|
|
88目标基本文件的SFI |
S3: 依据卡片返回的FCI控制信息88,读取01文件的第一条记录,查找AID
=>00 B2 01 0C 00 // Care: high_5bits_SFI + low_3bits_0x04 = 0x01<< 3 + 0x01= 0x0c
<=6C 27
=>00 B2 01 0C 27
<=B2
<=70 25 // 结构数据对象标识
61 23 // 应用模板
4F 08 A0 00 00 03 33 01 0101 //ADF名称(AID)
50 0A 50 42 4F 43 20 44 4542 49 54 // 应用标签
9F 12 0A 50 42 4F 43 20 4445 42 49 54 // 应用优先名称
<=90 00
命令解析
|
命令 |
|
|
00 B2 01 0C 00 |
READ RECORD,用于读取记录文件的内容 |
数据解析
ADF文件夹入口地址格式
|
标志 |
长度 |
值 |
||||
|
70 |
var. |
结构对象数据标示 |
||||
|
61 |
Var. |
应用模板 |
||||
|
4F |
5-16 |
ADF名称(AID) |
||||
|
50 |
1-16 |
应用标签 |
||||
|
9F12 |
1-16 |
应用优先名称 |
||||
S4: 通过AID选择应用
=>00 A4 04 00 08
<=A4
=>A0 00 00 03 33 01 01 01
<=61 47
=>00 C0 00 00 47
<=C0
<=6F 45
84 08 A0 00 00 03 33 01 0101 // ADF名称(AID)
A5 39
50 0A 50 42 4F 43 20 44 4542 49 54 // 应用标签
87 01 01
9F 38 09 9F 7A 01 9F 02 065F 2A 02
5F 2D 02 7A 68
9F 11 01 01
9F 12 0A 50 42 4F 43 20 4445 42 49 54 // 应用优先名称
BF 0C 05 9F 4D 02 0B 0A
<=90 00
S5: 读取电子现金剩余金额
=>80 CA 9F 79 00
<=6C 09
=>80 CA 9F 79 09
<=CA
<=9F 79 06 00 00 00 00 00 00
<=90 00
命令解析
|
命令 |
说明 |
|
80 CA 9F 79 00 |
GET DATA,9F 79读取电子现金剩余金额 |
数据解析
9F 79 06 00 00 00 00 00 00,返回6字节的剩余金额数据,採用BCD编码,最后一个字节表示小数点后两位.
读取PBOC电子现金指令流的更多相关文章
- PBOC电子现金的交易流程
做一个电子现金的交易: 第一步当然是选中当前的应用, 方法是调用select命令, 传入当前的应用AID号, 如果卡片的状态码返回9000,则表示选中成功. 下面举一个例子: 发送: 00 a4 04 ...
- PBOC电子钱包与电子现金及QPBOC
电子钱包:EP 电子现金:EC,在PBOC规范中的13部分定义了<基于借贷记应用的小额支付规范中> QPBOC:在PBOC规范的12部分中定义了<费接触式IC卡支付规范> PB ...
- 电子现金、电子钱包、qPBOC、闪付、UPCash
一.关于金融IC卡领域的规范 由Europay.Mastercard.Visa三大国际信用卡组织联合制定的金融集成电路(IC)卡金融支付标准,称为EMV规范,其目的是为金融IC卡.金融终端.支付系统以 ...
- EMVTag系列11《电子现金发卡行授权码》
按照银联个人化模板的建议,如卡片支持非接触快速支付应用(qPBOC),则推荐将电子现金授权码(9F74)作为qPBOC 应用AFL列表中的最后一条记录,且最后一条记录仅包含该数据元. 原因是:在某些情 ...
- 基于PBOC电子钱包的圈存过程详解
基于pboc的电子钱包的圈存过程,供智能卡行业的开发人员参考 一. 圈存 首先终端和卡片有一个共同的密钥叫做圈存密钥:LoadKey (Load即圈存的意思,unLoad,是圈提的意思) 假设Lo ...
- 基于PBOC电子钱包的消费过程详解
智能卡金融行业应用电子钱包的消费交易流程,开发人员可参考 首先终端和卡片有一个共同的密钥叫做消费密钥:PurchKey (针对每种特定的交易,比如,圈存,消费,都有特定的密钥与之对应) 假设Purch ...
- PBOC
http://blog.sina.com.cn/s/blog_64cc82620100rcgu.html 最近在做一个基于PBOC电子现金卡的终端应用, 项目还没有完成, 但电子现金部分的处理模块已完 ...
- PBOC~PPT-补充内容B(转)
PBOC电子现金基于借记/贷记应用上小额支付的一种实现.在借记卡上可以解释为预付,在贷记卡上可以解释为预先授权.预付的金额或预授权额度在卡片中体现为可脱机消费的金额,也就是电子现金余额.电子现金解决方 ...
- EMV/PBOC 解析(二) 卡片数据读取
上一篇简单的了解了IC智能卡的文件结构和APDU报文,这篇我们直接来读取卡内的数据.下面我们主要参照<中国金融集成电路(IC)卡规范>. 好了废话不多说,下面贴指令: (1)卡片接收一个来 ...
随机推荐
- Python argparse 模块
Python argparse 模块 test.py: import argparse argparser = argparse.ArgumentParser(add_help=False) argp ...
- tp5的路由
路由模式:普通.强制和混合 普通模式: //配置文件关闭路由,完全使用默认的PATH_INFO方式URL 'url_route_on' => false, 关闭路由后的普通模式任然可以通过操作方 ...
- Python库: PrettyTable 模块
一,PrettyTable简介 PrettyTable是python中的一个第三方库,可用来生成美观的ASCII格式的表格: 二,PrettyTable安装 使用PIP即可十分方便的安装PrettyT ...
- 016.OpenStack及云计算(面试)常见问题
什么是云计算? 云计算是一种采用按量付费的模式,基于虚拟化技术,将相应计算资源(如网络.存储等)池化后,提供便捷的.高可用的.高扩展性的.按需的服务(如计算.存储.应用程序和其他 IT 资源). ...
- Django 学习第十天——状态保持及表单
状态保持: 1.http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态 2.客户端与服务器端的一次通信,就是一次会话实现状态保持的方式:在客户端或服务器端存储与会话有关的数据 3.存 ...
- AGC 002E.Candy Piles(博弈论)
题目链接 \(Description\) 给定\(n\)堆糖,数量分别为\(a_i\).Alice和Bob轮流操作.每次可以吃掉最多的一堆,也可以每堆各吃掉一个.无法操作的人输,求谁能赢. \(n\l ...
- Codeforces.662C.Binary Table(状压 FWT)
题目链接 \(Description\) 给定一个\(n\times m\)的\(01\)矩阵,你可以选择一些行和一些列并将其中所有的\(01\)反转.求操作后最少剩下多少个\(1\). \(n\le ...
- Java笔记(一)编程基础与二进制
编程基础与二进制 一.编程基础 函数调用的基本原理: 函数调用中的问题: 1)参数如何传递? 2)函数如何知道返回什么地方? 3)函数结果如何传递给调用方? 解决思路是使用内存来函数调用过程中需要的数 ...
- 数模转换ADC08009应用
#include <reg52.h> //头文件 #define uchar unsigned char //宏定义无符号字符型 #define uint unsigned int //宏 ...
- bzoj3376/poj1988[Usaco2004 Open]Cube Stacking 方块游戏 — 带权并查集
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3376 题目大意: 编号为1到n的n(1≤n≤30000)个方块正放在地上.每个构成一个立方 ...