记一下学习过程,顺便吐槽。
1 交易开始选择PSE,然后根据返回的FCI里面的88tag得到目录基本文件的SFI
2 read record读取上面88tag的SFI文件的记录,从第一条开始读,直到未找到记录6A83
这里要吐槽一下了,PBOC.5文档里面的read record.
后面的”记录模板“没有说具体格式,找了一大圈,后来发现A.2 卡片和发卡行数据元需求 里面有各种Tag,后面取回栏里面有读记录。
应该是读记录时可能返回的所有Tag都在里面。
整理了一下(按Tag排序):
应用标识符(AID) | 4F |
应用标签 | 50 |
磁条 2 等效数据 | 57 |
应用 PAN | 5A |
目录自定义模板 | 73 |
应用优先指示器 | 87 |
卡片风险管理数据对象列表 1(CDOL1) | 8C |
卡片风险管理数据对象列表 2(CDOL2) | 8D |
持卡人验证方法(CVM)列表 | 8E |
CA 公钥索引 | 8F |
发卡行公钥证书 | 90 |
发卡行公钥余数 | 92 |
签名的静态应用数据 | 93 |
交易证书数据对象列表(TDOL) | 97 |
持卡人姓名 | 5F20 |
应用失效日期 | 5F24 |
应用生效日期 | 5F25 |
发卡行国家代码 | 5F28 |
服务码 | 5F30 |
应用 PAN 序列号 | 5F34 |
应用自定义数据 | 9F05 |
应用用途控制(AUC) | 9F07 |
应用版本号 | 9F08 |
持卡人姓名扩展 | 9F0B |
发卡行行为代码-缺省 | 9F0D |
发卡行行为代码-拒绝 | 9F0E |
发卡行行为代码-联机 | 9F0F |
应用首选名称 | 9F12 |
连续脱机交易下限 | 9F14 |
磁条 1 自定义数据 | 9F1F |
连续脱机交易上限 | 9F23 |
发卡行公钥模数 | 9F32 |
应用货币代码 | 9F42 |
应用货币指数 | 9F44 |
数据认证码 | 9F45 |
公钥 RSA 模数 | 9F46 |
公钥证书 | 9F47 |
公钥 RSA 余数 | 9F48 |
动态数据认证数据对象列表(DDOL) | 9F49 |
静态数据认证标签列表 | 9F4A |
持卡人证件号 | 9F61 |
持卡人证件类型 | 9F62 |
产品标识信息 | 9F63 |
终端需要建立一个共同支持的应用列表然后根据支持情况选择一个用来交易。
1 首先尝试目录选择方法
2 AID 列表选择方法对于卡片和终端都是必备的
总结一下:
1 选择PSE
2 根据返回值的88标签读记录取得4F标签的交易应用AID
3 选择交易应用,获取PDOL,如果存在的话
第一步就算结束了。