当我们首次进行一个借贷记交易时,卡插进POS终端,首先终端会判断卡片的通信协议类型和ATR值。
一  当终端能识别卡片时,终端开始下发一个选择PSE指令,即选择一个金融环境。
二 根据选择PSE命令的返回和读记录取得的应用,终端下发一个选择应用的指令来进入具体的应用。
如下指令:
--------------------------------------Application Selection--------------------------------------
[APDU Command]->[Card]:
Card Command : 00 A4 04 00 0E

Input   Data : 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31     ---->这里的数据表示的是PSE的应用环境名称,即1PAY.SYS.DDF01的ASSCI码
Output  Data : 
Card  Status : 61 20


[APDU Command]->[Card]:
Card Command : 00 C0 00 00 20 
Input   Data : 
Output  Data : 6F 1E 84 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 0C 88 01 01 5F 2D 02 7A 
               68 9F 11 01 01 
Card  Status : 90 00

选择后会返回一堆数据,叫做FCI模板数据,按照PBOC规范解析如下:
[84] DF Name  应用名称
31 50 41 59 2E 53 59 53 2E 44 44 46 30 31

[88] Short File Identifier (SFI),即目录文件的短文件表示符,下一条指令按照这个这个短文件标识符来找出卡片中所有的应用AID。
01

[5F2D] Language Preference
7A 68


[9F11] Issuer Code Table Index
01

通过读记录指令,来读出所有卡片中的应用AID,终端会一一把这些AID记录下来,直到找不到为止,形成一个应用的列表。
[APDU Command]->[Card]:
Card Command : 00 B2 01 0C 00

Input   Data : 
Output  Data : 
Card  Status : 6C 1D

[APDU Command]->[Card]:
Card Command : 00 B2 01 0C 1D

Input   Data : 
Output  Data : 70 1B 61 19 4F 08 A0 00 00 03 33 01 01 01 50 0A 50 42 4F 43 20 44 45 42 49 54 87 
               01 01 
Card  Status : 90 00


有木有?有木有,终端找到了一个AID为A0 00 00 03 33 01 01 01 的应用

[APDU Command]->[Card]:
Card Command : 00 B2 02 0C 00

Input   Data :

Output  Data :

Card  Status : 6A 83

直到返回6A83,终端就认为:亲,我把你所有房间都搜了遍,终于搜完了,我把搜到的宝贝的名字都记下来呈送给客人,等下要去根据客人的要求来点你们其中一个来来服务客人哦。
这个时候,假设客人想要A0 00 00 03 33 01 01 01(借记交易),点击了终端的列表,终端接收到指令,马上下发给卡片,选择这个应用:翠花,客人点了你,还不去更衣。
----------------------------------------Final Selection ----------------------------------------
[APDU Command]->[Card]:
Card Command : 00 A4 04 00 08

Input   Data : A0 00 00 03 33 01 01 01

Output  Data :

Card  Status : 61 36

[APDU Command]->[Card]:
Card Command : 00 C0 00 00 36

Input   Data :

Output  Data : 6F 34 84 08 A0 00 00 03 33 01 01 01 A5 28 50 0A 50 42 4F 43 20 44 45 42 49 54 87 
               01 01 9F 38 09 9F 7A 01 9F 02 06 5F 2A 02 5F 2D 02 7A 68 BF 0C 05 9F 4D 02 0B 0A

Card  Status : 90 00

卡片收到选择应用的指令,马上把这个应用的特性以FCI的形式返回给终端。


Information about the selected AID:
[84_1] DF Name
A0 00 00 03 33 01 01 01

[50] Application Lable
50 42 4F 43 20 44 45 42 49 54      我的标签是:PBOC DEBIT:借记卡

[87] Application Priority Indicator (API)
01

[9F38] Processing Options Data Object List (PDOL)  处理选项数据对象列表,后面在应用初始化中由终端根据这个列表组织好数据下发到卡片
9F 7A 01 9F 02 06 5F 2A 02

[5F2D_1] Language Preference
7A 68

[BF0C] File Control Information(FCI) Issuer Discretionary Data
9F 4D 02 0B 0A

注意,目前PBOC3.0删除了终端对DDF的支持并且要求IC卡不使用DDF,但并不意味着不支持选择PSE/PPSE,但很多终端如果存够多的AID数据的话,直接使用select Aid的方式。

PBOC借贷记交易流程与命令解析(二) -应用选择相关推荐

  1. 一张金融IC卡的交易流程(二)-----基本测试环境及借贷记交易流程(银联,交通部均为此流程)

    1.基本测试环境 读卡器:SDI011 密钥: ;3DES算法主密钥,应用密文计算 MdkAc_3DES=2F3D201558865D02A1497F04F820924C ;3DES算法主密钥,MAC ...

  2. strongswan常用命令解析(二)

    strongswan常用命令解析 0 > ipsec reload //重新加载 ipsec.conf文件 1 > ipsec rereadsecrets //重新加载ipsec.secr ...

  3. PBOC/EMV之小额支付, 电子钱包和借贷记

    EMV标准共分四册, 分别是book1到book4, 这四册里没有对小额支付和EP/ED的相关说明, 也就是说,PBOC L2的这两个标准在EMV L2里是没有的. 所以,PBOC L2里借贷记部分实 ...

  4. QPBOC快速借贷记流程(2)

    目录 目录 QPBOC快速借贷记流程 交易预处理 应用选择 最终选择 应用初始化 GPO命令报文发送 GPO响应报文接收 卡片行为分析 读取记录 脱机数据认证 QPBOC快速借贷记流程 在我的上一篇文 ...

  5. 借记/贷记交易处理流程

    功能概述 以下功能在借记/贷记交易处理中得到使用.尽管在必备(M)的功能中有些步骤也许是可选择的,但标记为必备的功能还是应该在所有交易中得到执行.标记为可选(O)的功能是可选择的并根据卡或终端的参数, ...

  6. uboot源码分析(1)uboot 命令解析流程简析

    uboot 命令解析流程简析 uboot正常启动后,会调用main_loop(void)函数,进入main_loop()之后,如果在规定的时间(CONFIG_BOOTDELAY)内,没有检查到任何按键 ...

  7. bs架构与cs架构的区别_Oracle vs Mysql--架构、sql查询执行流程及SQL解析顺序区别说明...

    概述 之前分享的主要是Oracle上的一些内容,那么mysql又有哪些地方不一样呢?下面从MySQL总体架构.sql查询执行流程和语句执行顺序来看一下.. 01 架构总览 下面看一下mysql的架构图 ...

  8. 【以太坊】javascript控制台完整交易流程

    一.前言 在前面几章,我们简单的在本地搭建了以太坊的测试网络.需要的小伙伴们可以看一下之前的那篇:搭建测试网络之ubuntu系统安装geth客户端以及同步区块数据,现在的问题是搭建完之后,该如何进行操 ...

  9. oracle和mysql文件怎么打开_Oracle vs Mysql--架构、sql查询执行流程及SQL解析顺序区别说明-sql文件怎么打开...

    概述 之前分享的主要是Oracle上的一些内容,那么mysql又有哪些地方不一样呢?下面从MySQL总体架构.sql查询执行流程和语句执行顺序来看一下.. 01 架构总览 下面看一下mysql的架构图 ...

最新文章

  1. 你玩《2048》能拿多少分?AI的最高分纪录:401912
  2. 为什么 Redis 单线程能支撑高并发?
  3. C++:构造函数2——拷贝构造函数
  4. PMcaff-活动| 产品经理免费培训最后一批通过名单公布啦!
  5. Linux集群和自动化维1.5.1 服务器物理硬件的优化
  6. 红茶一杯话Binder(ServiceManager篇)
  7. 从mysql读取数据保存成excel_小程序读取excel表格数据,并存储到云数据库
  8. matlab watershed函数简单实现_函数指针方法实现简单状态机(附代码)
  9. 前端学习(2978):上午回顾
  10. pyinstaller 打包出现问题
  11. 支付签约_已成燎原之势!蜻蜓支付出库、签约、地推火爆!
  12. P2234 [HNOI2002]营业额统计
  13. 山西计算机应用基本技能,山西应用科技学院计算机应用技术专业课程介绍/专业代码-卧龙指南...
  14. Lua游戏开发实践指南
  15. 机器学习6:单层感知器
  16. 一道智商测试题 月薪三万
  17. 智能窗帘传感器c语言程序,基于单片机的智能窗帘控制系统设计(附程序代码)
  18. 计算机能力提升培训感悟,计算机应用能力提升培训心得
  19. 海思NNIE开发(一):海思Hi3559AV100/Hi3519AV100 NNIE深度学习模块开发与调试记录
  20. 操作系统-AOSOA

热门文章

  1. 玩转Git三剑客——04. 创建第一个仓库并配置local用户信息、05. 通过几次commit来认识工作区和暂存区...
  2. js如何判断字符是中文,英文,数字还是字符
  3. 苹果(apple)支付退款通知、api
  4. 次世代游戏模型师已经饱和了吗?
  5. Mysql - 从一个小 case 理解 MVCC
  6. php选课系统(学生端)功能
  7. 浅析IPTV盒子和OTT盒子,如何选择?
  8. OCR二次开发宝典:飞桨联合多家企业和高校发布《OCR产业范例20讲》
  9. 正大国际:股指期货需要多少保证金?
  10. 机器人底盘的主要三大技术