一,获取卡片信息
1,选择交通部电子钱包应用
指令:00A4 + 04 + 00 + AID长度 + AID
AID:A000000632010105
具体可参照城市公共交通IC卡技术规范第二部分 应用指令 选择命令部分
2,读取15文件公共信息基本文件
指令:00B0 +9500
指令返回:公共信息基本文件
具体可参照 城市公共交通IC卡技术规范第二部分 读二进制文件命令和应用与数据文件部分
3,其他二进制文件读取
具体可参照当体交通部卡片结构文档需求说明
二,读取记录文件
根据当地卡片结构,选择性读取复合交易记录文件
指令:00B2 + 记录号+P2参数
返回记录文件数据
具体可参照城市公共交通IC卡技术规范第二部分 读记录命令部分
三,消费初始化
指令:805003020B +密钥索引+交易金额+终端号+0F
我使用的是复合消费的方式,可根据需求修改
具体参考 市公共交通IC卡技术规范第二部分 初始化复合应用消费命令部分
四,计算MAC1
给psam卡发送指令 80700000 + 后续数据长度 + 4字节随机数(初始化获取) + 2字节交易序号 + 4字节金额 + 1字节交易类型09 + 7字节交易时间 + 1字节密钥版本 + 1字节算法标识 + 8字节卡片序列号 + 8字节的发卡机构标识
具体参照 交通部或者住建部PSAM卡部分
五,更新复合交易记录文
各地需求不同,更新的文件不同
指令:80DC 或者00DC
具体可参照 市公共交通IC卡技术规范第二部分 修改记录命令部分
六 ,扣费
指令:805401000F+ 4字节终端交易序号 + 7字节终端交易时间 + 4字节MAC1 + 08
具体可参照 市公共交通IC卡技术规范第二部分 消费命令部分
七,验证MAC2
给psam卡发送指令: 8072
具体可参照PSMA卡相关文档