- 指令回复错误描述
- 常用指令作用及解析
指令回复错误描述
- 6200 “警告 信息未提供”
- 6281 “警告 回送数据可能”
- 6282 “警告 文件长度小于Le”
- 6283 “警告 选中的文件无效”
- 6284 “警告 FCI格式与P2指定的不符”
- 6300 “警告 鉴别失败”
- 63Cx “警告 校验失败(x-允许重试次数)”
- 6400 “状态标志位没有变”
- 6581 “内存失败”
- 6700 “长度错误”
- 6882 “不支持安全报文”
- 6981 “命令与文件结构不相容,当前文件非所需文件”
- 6982 “操作条件(AC)不满足,没有校验PIN”
- 6983 “您的卡已被锁定”
- 6984 “随机数无效,引用的数据无效”
- 6985 “使用条件不满足”
- 6986 “不满足命令执行条件(不允许的命令,INS有错)”
- 6987 “MAC丢失”
- 6988 “MAC不正确”
- 698D “保留”
- 6A80 “数据域参数不正确”
- 6A81 “功能不支持;创建不允许;目录无效;应用锁定”
- 6A82 “该文件未找到”
- 6A83 “该记录未找到”
- 6A84 “文件预留空间不足”
- 6A86 “P1或P2不正确”
- 6A88 “引用数据未找到”
- 6B00 “参数错误”
- 6Cxx “Le长度错误,实际长度是xx”
- 6E00 “不支持的类:CLA有错”
- 6F00 “数据无效”
- 6F01 “连接中断”
- 6D00 “不支持的指令代码”
- 9301 “您的卡余额不足”
- 9302 “MAC2错误”
- 9303 “应用被永久锁定”
- 9401 “您的卡余额不足”
- 9402 “交易计数器达到最大值”
- 9403 “密钥索引不支持”
- 9406 “所需MAC不可用”
- 6900 “不能处理”
- 6901 “命令不接受(无效状态)”
- 61xx “正常 需发GET RESPONSE命令” 读取指令00C00000xx
- 6600 “接收通讯超时”
- 6601 “接收字符奇偶错”
- 6602 “校验和不对”
- 6603 “警告 当前DF文件无FCI”
- 6604 “警告 当前DF下无SF或KF”
- 6E81 “卡片已离开”
常用指令作用及解析
以下为cpu卡充值流程
- 选择主文件
00a40000023f00(住建部卡主文件一般都是这条指令)
- 读取05文件
00b0850000
响应报文如下:
字节 | 数据元 | 长度 | 格式 | 说明 |
01-02 | 发卡方代码 | 2 | BCD | |
03-04 | 城市代码 | 2 | BCD | |
05-06 | 行业代码 | 2 | BCD | |
07-08 | 预留 | 2 | HEX | 不同城市有不用的含义,视情况解析 |
09-16 | 应用序列号 | 8 | 2:城市代码BCD 1:卡主类型BCD 1:卡子类型BCD 4:发行流水HEX | |
17 | 卡主类型 | 1 | BCD | |
18 | 卡子类型 | 1 | BCD | |
19-22 | 发行日期 | 4 | BCD | YYYYMMDD |
23-28 | 发行设备信息 | 6 | BCD | |
29-30 | 应用版本号 | 2 | BCD |
- 选择文件标识
00a40000023f01
00a4000002df01
00a4000002df04
00a4040009a00000000386980701
….
根据不同的城市,所处的文件可能有所不同
- 读取15文件
00b0950000
响应报文如下:
字节 | 数据元 | 长度 | 格式 | 说明 |
1-2 | 发卡方代码 | 2 | BCD | |
3-4 | 城市代码 | 2 | BCD | |
5-6 | 行业代码 | 2 | BCD | |
7-8 | 押金 | 2 | BCD | |
9 | 应用类型标识(启用标志) | 1 | BCD | 00:未启用 |
01 | 启用 | |||
10 | 应用版本 | 1 | BCD | |
11-12 | 互联互通标识(参与互通城市的标识) | 2 | BCD | |
13-20 | 应用序列号 | 8 | BCD | 2:城市代码 BCD 1:卡主类型 BCD 1:卡子类型 BCD 4:发行流水HEX |
21-24 | 应用启动日期 | 4 | BCD | YYYYMMDD启用时更新 |
25-28 | 应用有效日期 | 4 | BCD | YYYYMMDD启用时更新 |
29 | 卡主类型 | 1 | BCD | |
30 | 卡子类型 | 1 | BCD | |
31-34 | 业务位图数据 | 4 | HEX |
- 读取余额
805c000204
响应报文如下:
字节 | 数据元 | 长度 | 格式 | 说明 |
01-04 | 余额 | 4 | HEX |
- 电子钱包交易记录
00b2xxc400(18号文件)
00b2xxd400(1a号文件)
根据不同城市不同的卡类型去读取
- xx标识读取的第几条记录
01:第一条
02:第二条
….
0a:第10条
响应报文如下:
字节 | 数据元 | 长度 | 格式 | 说明 |
01-02 | 电子钱包消费、充值交易序号 | HEX | 2 | |
03-05 | 透支限额 | HEX | 3 | |
06-09 | 交易金额 | HEX | 4 | |
10-10 | 交易类型 | BCD | 1 | |
11-16 | 交易终端编号 | BCD | 6 | |
17-20 | 交易日期 | BCD | 4 | YYYYMMDD |
21-23 | 交易时间 | BCD | 3 | HHMMSS |
- 验证PIN
命令解析:
数据 | 描述 |
CLA | 00 |
INS | 20 |
P1 | 00 |
P2 | 00 |
LC | PIN的长度 |
PIN | PIN码 |
LE | 无 |
0020000003123456
回包9000即为成功
务必要注意,一般卡只有3次尝试机会,如果3次pin验证都失败,会将卡片锁定
部分城市的卡片需要在文件选中之后就验证pin,才能进行余额查询及交易记录查询
- 初始化圈存交易
命令解析:
数据 | 描述 |
CLA | 80 |
INS | 50 |
P1 | 00 |
P2 | 01:ED圈存 02:EP圈存 |
LC | 0B |
DATA | 见下表 |
LE | 10 |
DATA
数据 | 长度(字节) |
密钥索引 | 1 |
交易金额 | 4 |
终端机编号 | 6 |
805000020B0100000001112233445566
响应报文:
字节 | 数据元 | 长度 | 格式 | 说明 |
01-04 | ED或EP余额 | 4 | ||
05-06 | ED或EP联机交易序号 | 2 | ||
07 | 密钥版本号(DLK) | 1 | ||
08 | 算法标识(DLK) | 1 | ||
09-12伪随机数(IC卡) | 4 | |||
13-16 | MAC1 | 4 |
- 充值确认
命令格式:
数据 | 描述 |
CLA | 80 |
INS | 52 |
P1 | 00 |
P2 | 00 |
LC | 0B |
DATA | 见下表 |
LE | 04 |
DATA:
数据 | 长度(字节) |
交易日期(主机) | 4 |
交易时间(主机) | 3 |
MAC2 | 4 |
响应报文:
字节 | 数据元 | 长度 | 格式 | 说明 |
01-04 | TAC | 4 |
以上的各个指令,各种情况仅供参考,均需要根据不同的城市不同的卡进行调整,住建部的卡大的规范是一样的,但因为不同城市的cos不太一样会导致在操作上也会存在一些差异,需要酌情进行调整。