整理读卡服务文档
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\350\200\203\345\213\244\346\234\272\346\216\245\345\217\243\346\226\207\346\241\243.md" "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\350\200\203\345\213\244\346\234\272\346\216\245\345\217\243\346\226\207\346\241\243.md"
index 9324ba0..d7e4ebd 100644
--- "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\350\200\203\345\213\244\346\234\272\346\216\245\345\217\243\346\226\207\346\241\243.md"
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\350\200\203\345\213\244\346\234\272\346\216\245\345\217\243\346\226\207\346\241\243.md"
@@ -40,7 +40,7 @@
> 应答
-```
+```json
{"sys_time": }
```
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232\350\257\273\345\215\241\346\234\215\345\212\241\346\216\245\345\217\243\346\226\207\346\241\243.md" "b/source/_posts/\344\270\200\345\215\241\351\200\232\350\257\273\345\215\241\346\234\215\345\212\241\346\216\245\345\217\243\346\226\207\346\241\243.md"
index ceb76ae..75b6f42 100644
--- "a/source/_posts/\344\270\200\345\215\241\351\200\232\350\257\273\345\215\241\346\234\215\345\212\241\346\216\245\345\217\243\346\226\207\346\241\243.md"
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232\350\257\273\345\215\241\346\234\215\345\212\241\346\216\245\345\217\243\346\226\207\346\241\243.md"
@@ -8,8 +8,6 @@
# 一卡通读卡服务接口文档
version : 1.4
-[TOC]
-
## 错误码定义
* 100 - 一般错误
@@ -19,162 +17,230 @@
* 104 - 写卡失败
* 105 - 未认证
-## 版本信息
-#### URL: /4/
+## 版本信息请求参数
+* **URL: /4/**
-#### 参数说明
+* **请求参数**
无
-#### 返回值
-* version - 读卡服务版本
-* card\_version - 读卡模块版本
-* card\_info - 读卡模块编译信息
-
+* **返回**
+`version` - 读卡服务版本
+`card_version` - 读卡模块版本
+`card_info` - 读卡模块编译信息
## 服务认证
-#### URL: /4/auth/\<action\>
-* 请求方式: GET
-* action : 可选 init, verify; init 是认证初始化获取token, verify 是验证 token , 获取 request_token
+* **URL: /4/auth/\<action\>**
-#### 参数说明
-* init : 获取认证 token
-* verify: 验证 token 的签名
- * signature: token 签名, 签名算法 SHA1withRSA
+* **请求方式**
+`GET`
-#### 返回值
-* token: init 请求时返回的token
-* request_token : verify 成功后返回 request_token
-* token_expired : verify 成功后返回的 token 的有效期
+* **Url 参数**
+`action` : 可选 init, verify; init 是认证初始化获取token, verify 是验证 token , 获取 request_token
+
+* **请求参数**
+`init` : 获取认证 token
+`verify`: 验证 token 的签名
+`signature`: token 签名, 签名算法 SHA1withRSA
+
+* **返回**
+`token`: init 请求时返回的token
+`request_token` : verify 成功后返回 request_token
+`token_expired` : verify 成功后返回的 token 的有效期
## 读卡器控制
-#### URL: /4/device/\<action\>
-* 请求方式: GET
-* action : 可选值 open 打开读卡器, close 关闭读卡器, isopen 判读读卡器是否已打开, beep 读卡器蜂鸣
+* **URL: /4/device/\<action\>**
-#### 参数说明
+* **请求方式**
+`GET`
-* open : 打开读卡器, 参数 port, baud, samport
- * port (可选)读卡器端口, 100 表示USB接口, 默认100
- * baud (可选)读卡器波特率,默认 57600
- * samport (可选)SAM 卡槽号, 可选值 1, 2 ,3 ,4
-* close : 关闭读卡器
-* isopen: 判断读卡器是否已打开
-* beep: 读卡器蜂鸣
+* **Url 参数**
+`action` : 可选值 open 打开读卡器, close 关闭读卡器, isopen 判读读卡器是否已打开, beep 读卡器蜂鸣
+
+* **请求参数**
+`open`: 打开读卡器, 参数 port, baud, samport
+> port (可选)读卡器端口, 100 表示USB接口, 默认100
+> baud (可选)读卡器波特率,默认 57600
+> samport (可选)SAM 卡槽号, 可选值 1, 2 ,3 ,4
+
+ `close` : 关闭读卡器
+ `isopen`: 判断读卡器是否已打开
+ `beep`: 读卡器蜂鸣
+* **返回**
+无
## 加载密钥卡
-#### URL: /4/keycard/\<action\>
-* 请求方式: GET
-* action: 可选 load , setkey
+* **URL: /4/keycard/\<action\>**
-#### 参数说明
-* load
- * pin - 密钥卡PIN码
-* setkey
- * key - 密钥
+* **请求方式**
+`GET`
+* **Url 参数**
+`action`: 可选 load , setkey
+
+* **请求参数**
+`load`: 可选参数 pin
+> pin - 密钥卡PIN码
+
+ `setkey`: 可选参数 key
+> key - 密钥
+
+* **返回**
+无
## PSAM卡操作
-#### URL: /4/samcard/\<action\>
-* 请求方式: GET
-* action: 可选值 setport , readsamno
+* **URL: /4/samcard/\<action\>**
-#### 参数说明
-* setport - 设置卡槽号
- * port : SAM 卡槽号,可选 1,2,3,4
-* readsamno - 读取SAM卡号
+* **请求方**
+`GET`
-#### 返回值
-* samno - SAM卡号
+* **Url 参数**
+`action`: 可选值 setport , readsamno, publish, recycle, read, readtermseqno
+
+* **请求参数**
+`setport`: 设置卡槽号
+> port : SAM 卡槽号,可选 1,2,3,4
+
+ `publish`: 发行PSAM卡
+> cardno - 卡号
+ cardtype - 卡类别
+ expiredate - 有效期
+ termseqno(可选) - 流水号
+ cardver - 版本
+ termid - ID号
+ keyindex - 密钥索引
+ startdate - 启用日期
+ publishid - 发行方ID
+ userid - 用户ID
+
+
+ `recycle`: 回收PSAM卡
+ `read`: 读取PSAM卡信息
+ `readsamno`: 读取SAM卡号
+ `readtermno`: 读取SAM卡号
+ `readtermseqno`: 读取SAM卡流水号
+
+* **返回**
+`readsamno` 请求时返回
+> samno` - SAM卡号
+
+ `readtermno` 请求时返回
+> termno - SAM卡号
+
+ `read` 请求时返回
+> cardno - 卡号
+cardtype - 卡类别
+expiredate - 有效期
+termseqno - 流水号
+cardver - 版本
+termid - ID号
+keyindex - 密钥索引
+startdate - 启用日期
+publishid - 发行方ID
+userid - 用户ID
+
+ `readtermseqno`:
+> termseqno - 终端流水号
## 卡片初始化回收
-#### URL: /4/cardinit/\<action\>
-* 请求 GET
-* action :可选值 init , recycle
+* **URL: /4/cardinit/\<action\>**
+* **请求方式**
+`GET`
-#### 参数说明
-* init 表示初始化卡片
- * cardphyid - (必须)物理卡号
- * showcardno - (可选) 显示卡号
-* recycle 表示回收卡, 无参数
+* **Url 参数**
+`action`:可选值 init , recycle
+
+* **请求参数**
+`init`: 表示初始化卡片
+> cardphyid - (必须)物理卡号
+showcardno - (可选) 显示卡号
+
+ `recycle`: 表示回收卡, 无参数
+
+* **返回**
+无
## 寻卡
-#### URL:/4/requestcard
-* 请求 GET
+* **URL:/4/requestcard**
+* **请求方式**
+`GET`
-#### 参数说明
-* beep - 不为空时,寻卡成功读卡器蜂鸣
+* **请求参数**
+`beep`: 不为空时,寻卡成功读卡器蜂鸣
-#### 返回值
-* cardphyid - 物理卡号
-* cardtype_code - 卡类型码
+* **返回**
+`cardphyid`: 物理卡号
+`cardtype_code`: 卡类型码
## 读卡
-#### URL: /4/readcard/\<cardphyid\>
-* 请求: GET
-* cardphyid - 物理卡号
+* **URL: /4/readcard/\<cardphyid\>**
+* **请求方式**
+`GET`
+* **Url 参数**
+`cardphyid`: 物理卡号
-#### 参数说明
-* cardmode - 为 1 时读取消费属性,0 或者没有参数时不读取消费模式
-* beep - 不为空时成后读卡器蜂鸣
-* fields - 卡属性列表多个属性用分号(;)
- * CF\_CARDNO - 交易卡号
- * CF\_SHOWCARDNO - 显示卡号
- * CF\_FEETYPE - 收费类别(卡主类别)
- * CF\_SUBSIDYNO - 补助批次号
- * CF\_CARDVERNO - 卡版本号
- * CF\_CARDSTATUS - 卡状态 0正常, 1锁定,2冻结卡, 3挂失卡, 4注销卡, 5过期卡
- * CF\_STARTDATE - 启用日期
- * CF\_EXPIREDATE - 过期日期
- * CF\_PUBLISHID - 发行方标识
- * CF\_CARDTYPE - 卡类别
- * CF\_APPTYPE - 应用类型
- * CF\_CARDSTRUCTVER - 卡结构版本(应用版本)
- * CF\_SCHOOLCODE - 校区代码
- * CF\_CUSTID - 客户号
- * CF\_CUSTTYPE - 客户类别
- * CF\_STUEMPNO - 学工号
- * CF\_NAME - 姓名
- * CF\_SEX - 性别
- * CF\_DEPTCODE - 部门代码
- * CF\_IDNO - 证件号码
- * CF\_IDTYPE - 证件类型
- * CF\_DUTYCODE - 职务代码
- * CF\_BANKCARDNO - 银行卡号
- * CF\_LOCKTERMID - 锁卡交易时终端机号
- * CF\_LOCKTRANSDATE - 锁卡交易日期
- * CF\_LOCKTRANSTIME - 锁卡交易时间
- * CF\_DAYSUMAMT - 当日累计交易金额
- * CF\_LOCKCARDCNT - 锁卡交易时交易次数
- * CF\_SINGLEMAXAMT - 单次消费限额
- * CF\_DAYMAXAMT - 日消费累计限额
- * CF\_CARDCNT - 卡交易次数(最后一次交易)
- * CF\_TRANSAMT - 交易金额(最后一次交易)
- * CF\_TRANSTYPE - 交易类型(最后一次交易)
- * CF\_TERMID - 交易终端机编号(最后一次交易)
- * CF\_TRANSDATE - 交易日期(最后一次交易)
- * CF\_TRANSTIME - 交易时间(最后一次交易)
- * CF\_CARDBAL - 卡余额
- * CF\_CARDPWD - 卡密码
- * CF\_DPSCNT - 充值交易次数
- * CF\_PAYCNT - 消费交易次数
- * CF\_NATIONALITY - 民族
- * CF\_COUNTRY - 国籍
- * CF\_IDCODE - 身份代码
- * CF\_CREDITLIMIT - 授信额度
- * CF\_CREDITSEQNO - 授权额度批次
+* **请求参数**
+`cardmode`: 为 1 时读取消费属性,0 或者没有参数时不读取消费模式
+`beep`: 不为空时成后读卡器蜂鸣
+`fields`: 卡属性列表多个属性用分号(;)
+ > CF\_CARDNO - 交易卡号
+ CF\_SHOWCARDNO - 显示卡号
+ CF\_FEETYPE - 收费类别(卡主类别)
+ CF\_SUBSIDYNO - 补助批次号
+ CF\_CARDVERNO - 卡版本号
+ CF\_CARDSTATUS - 卡状态 0正常, 1锁定,2冻结卡, 3挂失卡, 4注销卡, 5过期
+ CF\_STARTDATE - 启用日期
+ CF\_EXPIREDATE - 过期日期
+ CF\_PUBLISHID - 发行方标识
+ CF\_CARDTYPE - 卡类别
+ CF\_APPTYPE - 应用类型
+ CF\_CARDSTRUCTVER - 卡结构版本(应用版本)
+ CF\_SCHOOLCODE - 校区代码
+ CF\_CUSTID - 客户号
+ CF\_CUSTTYPE - 客户类别
+ CF\_STUEMPNO - 学工号
+ CF\_NAME - 姓名
+ CF\_SEX - 性别
+ CF\_DEPTCODE - 部门代码
+ CF\_IDNO - 证件号码
+ CF\_IDTYPE - 证件类型
+ CF\_DUTYCODE - 职务代码
+ CF\_BANKCARDNO - 银行卡号
+ CF\_LOCKTERMID - 锁卡交易时终端机号
+ CF\_LOCKTRANSDATE - 锁卡交易日期
+ CF\_LOCKTRANSTIME - 锁卡交易时间
+ CF\_DAYSUMAMT - 当日累计交易金额
+ CF\_LOCKCARDCNT - 锁卡交易时交易次数
+ CF\_SINGLEMAXAMT - 单次消费限额
+ CF\_DAYMAXAMT - 日消费累计限额
+ CF\_CARDCNT - 卡交易次数(最后一次交易)
+ CF\_TRANSAMT - 交易金额(最后一次交易)
+ CF\_TRANSTYPE - 交易类型(最后一次交易)
+ CF\_TERMID - 交易终端机编号(最后一次交易)
+ CF\_TRANSDATE - 交易日期(最后一次交易)
+ CF\_TRANSTIME - 交易时间(最后一次交易)
+ CF\_CARDBAL - 卡余额
+ CF\_CARDPWD - 卡密码
+ CF\_DPSCNT - 充值交易次数
+ CF\_PAYCNT - 消费交易次数
+ CF\_NATIONALITY - 民族
+ CF\_COUNTRY - 国籍
+ CF\_IDCODE - 身份代码
+ CF\_CREDITLIMIT - 授信额度
+ CF\_CREDITSEQNO - 授权额度批次
-#### 返回
-* cardmode - 卡模式,可选值 A, B
+* **返回**
+`cardmode` - 卡模式,可选值 A, B
## 写卡
-#### URL: /4/writecard/\<cardphyid\>
-* 请求方式: GET
+* **URL: /4/writecard/\<cardphyid\>**
+* **请求方式**
+ `GET`
-#### 参数
-* cardmode : 卡模式,可选值 'A', 'B'
-* nobeep - 不为空,成功后不会蜂鸣
-* fields : 写卡的属性 key=value 格式,用分号(;)分割
+* **请求参数**
+`cardmode`: 卡模式,可选值 'A', 'B'
+`nobeep`: 不为空,成功后不会蜂鸣
+`fields`: 写卡的属性 key=value 格式,用分号(;)分割
* CF\_CARDNO - 交易卡号
* CF\_SHOWCARDNO - 显示卡号
* CF\_FEETYPE - 收费类别(卡主类别)
@@ -202,127 +268,175 @@
* CF\_CREDITLIMIT - 授信额度
* CF\_CREDITSEQNO - 授权额度批次
+* **返回**
+无
+
## 读取授信交易流水
-#### URL: /4/read\_credit\_record/\<record\_id\>
-* 请求方式: GET
-* record\_id : 1 - 10 表示流水号, 0 表示最近一笔流水
+* **URL: /4/read\_credit\_record/\<record\_id\>**
+* **请求方式**
+`GET`
-#### 参数
-* nobeep - 不为空时,读取到记录读卡器不会蜂鸣
+* **Url 参数**
+`record_id`: 1 - 10 表示流水号, 0 表示最近一笔流水
-#### 返回
-* record\_count: 记录条数
-* records : 交易记录
- * transdate: 交易日期, 格式YYYYMMDD
- * transtime: 交易时间, HHMISS
- * devphyid : 终端编号, 8个字符
- * seqno: 终端流水号, 整数
- * totalamt: 累计授信交易总金额, 单位分
- * amount : 本次交易金额, 单位分
- * extrafee: 本次交易搭伙费/折扣, 单位分
- * daytotalamt: 当天累计授信交易总金额, 单位分
- * creditlimit: 剩余授信额度,单位分
- * paycnt: 交易前次数,整数
- * creditseqno: 授信序号
- * transflag: 交易标志
- * legal: 认证状态: valid 表示合法,invalid 表示不合法
+* **请求参数**
+`nobeep`: 不为空时,读取到记录读卡器不会蜂鸣
+
+* **返回**
+`record_count`: 记录条数
+`records`: 交易记录
+ > transdate: 交易日期, 格式YYYYMMDD
+ transtime: 交易时间, HHMISS
+ devphyid : 终端编号, 8个字符
+ seqno: 终端流水号, 整数
+ totalamt: 累计授信交易总金额, 单位分
+ amount : 本次交易金额, 单位分
+ extrafee: 本次交易搭伙费/折扣, 单位分
+ daytotalamt: 当天累计授信交易总金额, 单位分
+ creditlimit: 剩余授信额度,单位分
+ paycnt: 交易前次数,整数
+ creditseqno: 授信序号
+ transflag: 交易标志
+> legal: 认证状态: valid 表示合法,invalid 表示不合法
+
## 清空卡信息
-#### URL: /4/cardoper/\<action\>
-* 请求方式 GET
-* action : recycle
+* **URL: /4/cardoper/\<action\>**
+* **请求方式**
+`GET`
-#### 参数
-* recyle - 清空卡信息
- * water - 水控钱包号列表,例如 1,2
+* **Url 参数**
+`action` : recycle
-#### 返回
+* **请求参数**
+`recyle`: 清空卡信息
+> water - 水控钱包号列表,例如 1,2
+
+* **返回**
+无
+
## 卡电子钱包充值初始化
-#### URL:/4/init4load/\<cardphyid\>
-* 请求方式GET
-* cardphyid - 物理卡号
+* **URL:/4/init4load/\<cardphyid\>**
+* **请求方式**
+`GET`
-#### 参数
-* cardno - 交易卡号
-* amount - 充值金额,单位为分
-* dpscnt - 卡充值前次数,通过读卡获取
+* **Url 参数**
+`cardphyid`: 物理卡号
-#### 返回
-* random - 卡随机数
-* samno - 终端号
-* mac1
+* **请求参数**
+`cardno`: 交易卡号
+`amount`: 充值金额,单位为分
+`dpscnt`: 卡充值前次数,通过读卡获取
+
+* **返回**
+`random`: 卡随机数
+`samno`: 终端号
+`mac1`
## 卡电子钱包充值确认
-#### URL: /4/credit4load/\<cardphyid\>
-* 请求方式 GET
-* cardphyid - 物理卡号
+* **URL: /4/credit4load/\<cardphyid\>**
+* **请求方式**
+`GET`
-#### 参数
-* hostdate - 主机日期,YYYYMMDD
-* hosttime - 主机时间,HH24MISS
-* mac2
+* **Url 参数**
+`cardphyid`: 物理卡号
-#### 返回
-* tac - 成功返回 tac
+* **请求参数**
+`hostdate`: 主机日期,YYYYMMDD
+`hosttime`: 主机时间,HH24MISS
+`mac2`
+
+* **返回**
+`tac`: 成功返回 tac
## 卡电子钱包消费
-#### URL: /4/cardpurchase/\<cardphyid\>
-* 请求方式 GET
-* cardphyid - 物理卡号
+* **URL: /4/cardpurchase/\<cardphyid\>**
+* **请求方式**
+`GET`
-#### 参数
-* cardno - 交易卡号
-* amount - 消费金额,单位分
-* paycnt - 消费前次数,通过读卡获取
-* transdate - 终端日期,格式 YYYYMMDD
-* transtime - 终端时间,格式 HH24MISS
+* **Url 参数**
+`cardphyid`: 物理卡号
-#### 返回
-* tac - 成功返回 tac
+* **请求参数**
+`cardno`: 交易卡号
+`amount`: 消费金额,单位分
+`paycnt`: 消费前次数,通过读卡获取
+`transdate`: 终端日期,格式 YYYYMMDD
+`transtime`: 终端时间,格式 HH24MISS
+
+* **返回**
+`tac`: 成功返回 tac
## 水控钱包相关
-#### URL: /4/watercard/\<action\>
-* 请求方式 POST
-* action - 操作 , publish, recycle, read, write
+* **URL: /4/watercard/\<action\>**
+* **请求方式**
+`POST`
-#### 参数
-* nobeep - 水控操作成功后不产生蜂鸣
-* publish - 初始化水控钱包
- * waterid - 水控钱包号
- * cardno - 卡号
- * custid - 客户号
- * cardtype - 卡类别
- * amount - 初始化时,写入卡金额, 单位分
- * price1 - 水价1, 单位分
- * price2 - 水价2, 单位分
- * price3 - 水价3, 单位分
- * expireddate - 有效期, 格式 YYYYMMDD
-* recycle - 回收水控钱包
- * waterid - 水控钱包号
-* read - 读取水控钱包信息
- * waterid - 水控钱包号
+* **Url 参数**
+`action`: 操作 , publish, recycle, read, write
+
+* **请求参数**
+`nobeep`: 水控操作成功后不产生蜂鸣
+`publish`: 初始化水控钱包
+> waterid - 水控钱包号
+ cardno - 卡号
+ custid - 客户号
+ cardtype - 卡类别
+ amount - 初始化时,写入卡金额, 单位分
+ price1 - 水价1, 单位分
+ price2 - 水价2, 单位分
+ price3 - 水价3, 单位分
+ expireddate - 有效期, 格式 YYYYMMDD
-* write - 写水控钱包
- * waterid - 水控钱包号
- * cardno - 卡号
- * custid - 客户号
- * cardtype - 卡类别
- * amount - 写入水控钱包余额, 单位 分
- * price1 - 水价1, 单位分
- * price2 - 水价2, 单位分
- * price3 - 水价3, 单位分
- * expiredate - 有效期, 格式 YYYYMMDD
+ `recycle`: 回收水控钱包
+ > waterid - 水控钱包号
-#### 返回
-* waterid - 被操作的水控钱包号
-* cardno - 卡号
-* custid - 客户号
-* cardtype - 卡类别
-* cardbal - 水控钱包余额
-* expireddate - 卡上有效期
-* price1 - 水价1
-* price2 - 水价2
-* price3 - 水价3
+ `read`: 读取水控钱包信息
+ > waterid - 水控钱包号
+
+ `write`: 写水控钱包
+ > waterid - 水控钱包号
+ cardno - 卡号
+ custid - 客户号
+ cardtype - 卡类别
+ amount - 写入水控钱包余额, 单位 分
+ price1 - 水价1, 单位分
+ price2 - 水价2, 单位分
+ price3 - 水价3, 单位分
+ expiredate - 有效期, 格式 YYYYMMDD
+
+* **返回**
+`waterid`: 被操作的水控钱包号
+`cardno`: 卡号
+`custid`: 客户号
+`cardtype`: 卡类别
+`cardbal`: 水控钱包余额
+`expireddate`: 卡上有效期
+`price1`: 水价1
+`price2`: 水价2
+`price3`: 水价3
+
+## 密钥卡发行、克隆、回收
+* **URL: /4/key/\<action\>**
+* **请求方式**
+`GET`
+
+* **Url 参数**
+`action`: 可选参数包括 publishkeycard, clonekeycard, loadkeycard
+
+* **请求参数**
+`publishkeycard`: 发行密钥卡
+> pin - PIN 码
+> masterkey - 主密钥
+
+ `clonekeycard`: 克隆密钥卡
+ > pin - 新密钥卡 PIN 码
+
+ `loadkeycard`: 加载密钥卡
+ > pin - PIN 码
+
+* **返回**
+无