文档更新
diff --git "a/source/_posts/Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-v5\347\273\237\344\270\200\346\224\257\344\273\230.pdf" "b/source/_posts/Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-v5\347\273\237\344\270\200\346\224\257\344\273\230.pdf"
new file mode 100644
index 0000000..5143930
--- /dev/null
+++ "b/source/_posts/Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-v5\347\273\237\344\270\200\346\224\257\344\273\230.pdf"
Binary files differ
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232V4\347\254\254\344\270\211\346\226\271\350\257\273\345\215\241\346\234\215\345\212\241\347\250\213\345\272\217\346\216\245\345\217\243\346\226\207\346\241\243.docx" "b/source/_posts/\344\270\200\345\215\241\351\200\232V4\347\254\254\344\270\211\346\226\271\350\257\273\345\215\241\346\234\215\345\212\241\347\250\213\345\272\217\346\216\245\345\217\243\346\226\207\346\241\243.docx"
index 4402761..8cbd777 100644
--- "a/source/_posts/\344\270\200\345\215\241\351\200\232V4\347\254\254\344\270\211\346\226\271\350\257\273\345\215\241\346\234\215\345\212\241\347\250\213\345\272\217\346\216\245\345\217\243\346\226\207\346\241\243.docx"
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232V4\347\254\254\344\270\211\346\226\271\350\257\273\345\215\241\346\234\215\345\212\241\347\250\213\345\272\217\346\216\245\345\217\243\346\226\207\346\241\243.docx"
Binary files differ
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232V5\347\254\254\344\270\211\346\226\271\350\257\273\345\215\241\346\234\215\345\212\241\347\250\213\345\272\217\346\216\245\345\217\243\346\226\207\346\241\243Lite.pdf" "b/source/_posts/\344\270\200\345\215\241\351\200\232V5\347\254\254\344\270\211\346\226\271\350\257\273\345\215\241\346\234\215\345\212\241\347\250\213\345\272\217\346\216\245\345\217\243\346\226\207\346\241\243Lite.pdf"
new file mode 100644
index 0000000..15e2dd3
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232V5\347\254\254\344\270\211\346\226\271\350\257\273\345\215\241\346\234\215\345\212\241\347\250\213\345\272\217\346\216\245\345\217\243\346\226\207\346\241\243Lite.pdf"
Binary files differ
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\346\266\210\350\264\271\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\344\272\214\347\273\264\347\240\201\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243.md"
new file mode 100644
index 0000000..d78c55f
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243.md"
@@ -0,0 +1,295 @@
+---
+title: 一卡通v5二维码消费接口文档
+date: 2021-04-25
+tags:
+
+---
+
+## 1.1文档说明 ##
+
+本文档用于描述了一卡通二维码消费相关接口,供第三方系统(前置和应用)对接参考。
+
+## 1.2约定 ##
+
+1. 传输编码统一为utf-8
+2. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
+3. 具体签名生成参考后面的签名章节
+4. retcode等于0表示成功,非0表示失败,失败具体信息查看retmsg
+5. 密码加密字段原始值为 timestamp+pwd ,3des秘钥单独分配
+
+
+## 2.1 二维码消费初始化 ##
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/qrcodepayinit`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|outtradeno|String|是 |第三方唯一流水号|
+|outtradename|String|是 |第三方交易名称|
+|qrcode|String|是 |二维码|
+|amount|String|是 |消费金额(分)|
+|calcmanagefee|String|否 |是否计算搭伙费折扣'T'-计算,不填不计算|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/qrcodepayinit
+
+partner_id:10000
+qrcode:GcS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiUSYrPCTzHH0cKkah0HFnr13ejXSL7vkAAQnuwXhoEwNZ11VsVslq95QxqCOisItFJnC1BTg7ZN23cIw1yYyeB2keMICo8FUDkpuUmEY=
+outtradeno:2019019291910292
+outtradename:图书馆扣费
+amount:2000
+calcmanagefee:T
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"初始化成功",
+ "refno":"201906101000001",
+ "needpwdconfirm":false
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"account not exsit"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|refno|String|交易参考号|
+|needpwdconfirm|boolean|是否需要密码确认|
+
+
+## 2.2 二维码消费确认 ##
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/qrcodepayconfirm`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|refno|String|是 |初始化返回的交易参考号|
+|amount|Integer|是 |消费金额(分)|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/qrcodepayconfirm
+
+partner_id:10000
+amount:2000
+refno:201906101000001
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"交易成功",
+ "refno":"201906101000001",
+ "dtlstatus":"success",
+ "amount":2100,
+ "balance":5200,
+ "stuempno":"03902910",
+ "custname":"王二"
+
+}
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"account not exsit"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|refno|String|交易参考号|
+|dtlstatus|String|流水状态,success=成功,paying=支付中(需要查询确认),fail=失败|
+|amount|Integer|交易金额|
+|balance|Integer|余额|
+|stuempno|String|用户学号|
+|custname|String|用户姓名|
+
+
+## 2.3 二维码消费流水查询 ##
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/qrcodepayquery`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|refno|String|是 |初始化返回的交易参考号|
+|amount|Integer|是 |消费金额(分)|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/qrcodepayquery
+
+partner_id:10000
+amount:2000
+refno:201906101000001
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"交易成功",
+ "refno":"201906101000001",
+ "dtlstatus":"success",
+ "amount":2100,
+ "balance":5200,
+ "stuempno":"03902910",
+ "custname":"王二"
+
+}
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"account not exsit"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|refno|String|交易参考号|
+|dtlstatus|String|流水状态,success=成功,paying=支付中(需要查询确认),fail=失败|
+|amount|Integer|交易金额|
+|balance|Integer|余额|
+|stuempno|String|用户学号|
+|custname|String|用户姓名|
+
+
+
+
+## 附录A-用户请求HMAC签名算法 ##
+
+
+- 签名方式:`hmac-sha1`
+
+- 签名密钥由本系统统一线下提供
+
+
+- **签名校验的通用步骤如下:**
+
+ **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+> 假设传送的参数如下:
+
+
+```
+ partner_id:10000
+ qrcode:cS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiU=
+ timestamp:20150119130901
+ sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+ sign_method:HMAC
+```
+> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+
+
+```
+ partner_id=10000&qrcode=cS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiU=
+ &sign_method=HMAC×tamp=20150119130901
+```
+
+ **特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+ **第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。
+
+
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243.pdf" "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243.pdf"
new file mode 100644
index 0000000..1e2d348
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243.pdf"
Binary files differ
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\347\224\263\347\240\201\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\344\272\214\347\273\264\347\240\201\347\224\263\347\240\201\346\216\245\345\217\243\346\226\207\346\241\243.md"
new file mode 100644
index 0000000..a3051a6
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\347\224\263\347\240\201\346\216\245\345\217\243\346\226\207\346\241\243.md"
@@ -0,0 +1,213 @@
+---
+title: 一卡通v5二维码申码接口文档
+date: 2019-10-21
+tags:
+
+---
+
+## 1.1文档说明 ##
+
+本文档用于描述了一卡通二维码申码相关接口,供第三方系统(前置和应用)对接参考。
+
+## 1.2约定 ##
+
+1. 传输编码统一为utf-8
+2. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
+3. 具体签名生成参考后面的签名章节
+4. retcode等于0表示成功,非0表示失败,失败具体信息查看retmsg
+
+
+
+## 2.1 二维码申码 ##
+
+**请求URL:**
+
+- `https://ip:port/epay/thirdapp/precreateqrcode`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|nonce|String|是 |随机数,用于判重|
+|amount|Integer|是 |消费金额(分)|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epay/thirdapp/precreateqrcode
+
+partner_id:10000
+nonce:xzf902100af19
+amount:2000
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"初始化成功",
+ "qrcode":"https://abc.com/epay/thirdapp/qrpayscan?q=ab39402bcc1029281c",
+ "refno":"2019080910201002000001"
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"account not exsit"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|refno|String|交易参考号|
+|qrcode|String|二维码内容,第三方自己转成二维码图片|
+
+
+## 2.2 二维码扫码支付查询 ##
+
+**请求URL:**
+
+- `https://ip:port/epay/thirdapp/precreateqrcodequery`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|refno|String|是 |初始化返回的交易参考号|
+|amount|Integer|是 |消费金额(分)|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epay/thirdapp/precreateqrcodequery
+
+partner_id:10000
+amount:2000
+refno:201906101000001
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"查询成功",
+ "refno":"201906101000001",
+ "dtlstatus":"success",
+ "amount":2100,
+ "balance":5200,
+ "stuempno":"03902910",
+ "custname":"王二"
+
+}
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"流水不存在"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|refno|String|交易参考号|
+|dtlstatus|String|流水状态,init=初始化未支付,success=成功,paying=支付中(需要查询确认),fail=失败|
+|amount|Integer|交易金额|
+|balance|Integer|余额|
+|stuempno|String|用户学号|
+|custname|String|用户姓名|
+
+
+
+
+## 附录A-用户请求HMAC签名算法 ##
+
+
+- 签名方式:`hmac-sha1`
+
+- 签名密钥由本系统统一线下提供
+
+
+- **签名校验的通用步骤如下:**
+
+ **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+> 假设传送的参数如下:
+
+
+```
+ partner_id:10000
+ qrcode:cS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiU=
+ timestamp:20150119130901
+ sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+ sign_method:HMAC
+```
+> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+
+
+```
+ partner_id=10000&qrcode=cS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiU=
+ &sign_method=HMAC×tamp=20150119130901
+```
+
+ **特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+ **第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。
+
+
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\347\224\263\347\240\201\346\216\245\345\217\243\346\226\207\346\241\243.pdf" "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\347\224\263\347\240\201\346\216\245\345\217\243\346\226\207\346\241\243.pdf"
new file mode 100644
index 0000000..504f18a
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\347\224\263\347\240\201\346\216\245\345\217\243\346\226\207\346\241\243.pdf"
Binary files differ
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\350\272\253\344\273\275\350\257\206\345\210\253\346\216\245\345\217\243" "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\350\272\253\344\273\275\350\257\206\345\210\253\346\216\245\345\217\243"
new file mode 100644
index 0000000..5b7a544
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\350\272\253\344\273\275\350\257\206\345\210\253\346\216\245\345\217\243"
@@ -0,0 +1,133 @@
+---
+title: 一卡通v5二维码身份识别接口
+date: 2018-10-14
+tags:
+
+---
+
+## 1.1文档说明 ##
+
+本文档用于描述了一卡通二维码身份识别接口,供第三方系统(前置和应用)对接参考。
+
+## 1.2约定 ##
+
+1. 传输编码统一为utf-8
+2. RSA 加密算法为本接口采用的非对称加密算法,`SIGN_ALGORITHMS ="SHA1WithRSA"`;
+3. RSA公钥由本系统提供,本系统返回信息的签名数据,第三方系统得到后通过公钥校验算法,验证返回数据的合法性
+4. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
+5. 具体签名生成参考后面的签名章节
+6. retcode等于0表示成功,非0表示失败,失败具体信息查看retmsg
+
+
+## 2.1 二维码身份识别 ##
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/qrcodecertification`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|qrcode|String|是 |二维码|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/qrcodecertification
+
+partner_id:10000
+qrcode:GcS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiUSYrPCTzHH0cKkah0HFnr13ejXSL7vkAAQnuwXhoEwNZ11VsVslq95QxqCOisItFJnC1BTg7ZN23cIw1yYyeB2keMICo8FUDkpuUmEY=
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"query success",
+ "stuempno":"09893092",
+ "expiredate":"20191010",
+ "sign_method":"HMAC",
+ “sign”:5195f9b9116e4adf67eeebc9935d33dc683f677d
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"account not exsit"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|stuempno|String|学号|
+|expiredate|String|有效期|
+|sign|String|签名,与请求方式签名方式相同|
+
+## 附录A-用户请求HMAC签名算法 ##
+
+
+- 签名方式:`hmac-sha1`
+
+- 签名密钥由本系统统一线下提供
+
+
+- **签名校验的通用步骤如下:**
+
+ **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+> 假设传送的参数如下:
+
+
+```
+ partner_id:10000
+ qrcode:cS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiUSYrPCTzHH0cKkah0HFnr13ejXSL7vkAAQnuwXhoEwNZ11VsVslq95QxqCOisItFJnC1BTg7ZN23cIw1yYyeB2keMICo8FUDkpuUmEY=
+ timestamp:20150119130901
+ sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+ sign_method:HMAC
+```
+> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+
+
+```
+ partner_id=10000&qrcode=cS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiUSYrPCTzHH0cKkah0HFnr13ejXSL7vkAAQnuwXhoEwNZ11VsVslq95QxqCOisItFJnC1BTg7ZN23cIw1yYyeB2keMICo8FUDkpuUmEY=&sign_method=HMAC×tamp=20150119130901
+```
+
+ **特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+ **第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\350\272\253\344\273\275\350\257\206\345\210\253\346\216\245\345\217\243.md" "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\350\272\253\344\273\275\350\257\206\345\210\253\346\216\245\345\217\243.md"
new file mode 100644
index 0000000..f9d803f
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\350\272\253\344\273\275\350\257\206\345\210\253\346\216\245\345\217\243.md"
@@ -0,0 +1,132 @@
+---
+title: 一卡通v5二维码身份识别接口
+date: 2018-10-14
+tags:
+
+---
+
+## 1.1文档说明 ##
+
+本文档用于描述了一卡通二维码身份识别接口,供第三方系统(前置和应用)对接参考。
+
+## 1.2约定 ##
+
+1. 传输编码统一为utf-8
+2. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
+3. 具体签名生成参考后面的签名章节
+4. retcode等于0表示成功,非0表示失败,失败具体信息查看retmsg
+
+
+## 2.1 二维码身份识别 ##
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/qrcodecertification`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|qrcode|String|是 |二维码|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/qrcodecertification
+
+partner_id:10000
+qrcode:GcS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiUSYrPCTzHH0cKkah0HFnr13ejXSL7vkAAQnuwXhoEwNZ11VsVslq95QxqCOisItFJnC1BTg7ZN23cIw1yYyeB2keMICo8FUDkpuUmEY=
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"query success",
+ "stuempno":"09893092",
+ "expiredate":"20191010",
+ "sign_method":"HMAC",
+ "sign":"5195f9b9116e4adf67eeebc9935d33dc683f677d"
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"account not exsit"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|stuempno|String|学号|
+|expiredate|String|有效期|
+|sign|String|签名,与请求方式签名方式相同|
+
+## 附录A-用户请求HMAC签名算法 ##
+
+
+- 签名方式:`hmac-sha1`
+
+- 签名密钥由本系统统一线下提供
+
+
+- **签名校验的通用步骤如下:**
+
+ **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+> 假设传送的参数如下:
+
+
+```
+ partner_id:10000
+ qrcode:cS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiU=
+ timestamp:20150119130901
+ sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+ sign_method:HMAC
+```
+> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+
+
+```
+ partner_id=10000&qrcode=cS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiU=
+ &sign_method=HMAC×tamp=20150119130901
+```
+
+ **特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+ **第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\350\272\253\344\273\275\350\257\206\345\210\253\346\216\245\345\217\243.pdf" "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\350\272\253\344\273\275\350\257\206\345\210\253\346\216\245\345\217\243.pdf"
new file mode 100644
index 0000000..24d6495
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\350\272\253\344\273\275\350\257\206\345\210\253\346\216\245\345\217\243.pdf"
Binary files differ
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\225\260\346\215\256\345\257\271\346\216\245\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\347\254\254\344\270\211\346\226\271\346\225\260\346\215\256\345\257\271\346\216\245\346\216\245\345\217\243\346\226\207\346\241\243.md"
index d271d06..49d36b0 100644
--- "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\225\260\346\215\256\345\257\271\346\216\245\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\347\254\254\344\270\211\346\226\271\346\225\260\346\215\256\345\257\271\346\216\245\346\216\245\345\217\243\346\226\207\346\241\243.md"
@@ -927,69 +927,69 @@
| dayTotalLimit |Integer|当天累计消费限额(分),超出要输入卡密码|
-## 2.6 验证学工号/卡号和密码
-
-**请求URL:**
-
-- `http://ip:port/epayapi/services/thirdparty/common/verify`
-
-**请求方式/格式:**
-
-- POST
-- application/x-www-form-urlencoded
-
-**请求参数:**
-
-|参数名 | 类型 | 必选 | 说明 |
-|-----|------|-----|------|
-|partner_id|String|是|合作方ID|
-|stuempno|String|否|学工号(二选一)|
-|cardphyid|String|否|物理卡号(二选一)|
-|cardpwd|String|是|卡密码AES加密,加密密钥线下提供|
-|timestamp|String|是|时间戳格式为yyyyMMddHHmmss|
-|sign|String|是|数据签名|
-|sign_method|String|是|签名方式,固定为:HMAC|
+## 2.6 验证学工号/卡号和密码
-
+**请求URL:**
+
+- `http://ip:port/epayapi/services/thirdparty/common/verify`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是|合作方ID|
+|stuempno|String|否|学工号(二选一)|
+|cardphyid|String|否|物理卡号(二选一)|
+|cardpwd|String|是|卡密码AES加密,加密密钥线下提供|
+|timestamp|String|是|时间戳格式为yyyyMMddHHmmss|
+|sign|String|是|数据签名|
+|sign_method|String|是|签名方式,固定为:HMAC|
+
+
**请求内容示例:**
```
-
-- URL:http://ip:port/epayapi/services/thirdparty/common/verify
-- partner_id:10000
-- stuempno:09893092
-- cardpwd:vj16YGawjSlYkaWOND+gog==
-- timestamp:20171219130901
-- sign:09ce91ba0c46b486f841caa51cff1589e9b83b2e
+
+- URL:http://ip:port/epayapi/services/thirdparty/common/verify
+- partner_id:10000
+- stuempno:09893092
+- cardpwd:vj16YGawjSlYkaWOND+gog==
+- timestamp:20171219130901
+- sign:09ce91ba0c46b486f841caa51cff1589e9b83b2e
- sign_method:HMAC
-
-
-**返回示例:**
-
-- 成功
-
-```json
-{
- "retcode":0,
- "retmsg":"验证成功"
-}
-
-```
-
-- 失败
-
-```json
-{
- "retcode":1,
- "retmsg":"错误信息"
-}
-
-```
-
-**返回参数说明:**
-
-|参数名 | 类型 | 说明 |
-|-----|-----|------|
-|retcode|String|返回码(0=成功,其他为失败)|
+
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":0,
+ "retmsg":"验证成功"
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":1,
+ "retmsg":"错误信息"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
|retmsg|String|返回消息|
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\225\260\346\215\256\345\257\271\346\216\245\346\216\245\345\217\243\346\226\207\346\241\243.pdf" "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\225\260\346\215\256\345\257\271\346\216\245\346\216\245\345\217\243\346\226\207\346\241\243.pdf"
new file mode 100644
index 0000000..2c2561e
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\225\260\346\215\256\345\257\271\346\216\245\346\216\245\345\217\243\346\226\207\346\241\243.pdf"
Binary files differ
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\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\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243.md"
index c3e15bb..b3f93c1 100644
--- "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\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\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243.md"
@@ -123,6 +123,7 @@
|tradename|String(60)|是|交易名称|
|amount|Integer|是|消费金额(分)|
|calcmanagefee|String|否|是否计算搭伙费T计算,F或不传不计算|
+|limitflag|String|否|是否打开消费限额,on/off|
|encryptpwd|Sting|否|卡片密码,消费超限额时需要密码校验,加密算法 AES/ECB/PKCS5Padding|
|termid|Integer|否|终端号,实体卡消费时需要|
|cardmac|Sting|否|卡片mac校验值,实体卡消费时需要|
@@ -160,6 +161,7 @@
"balance":4850,
"refno":"20160605190200000001",
"needpwdconfirm":false,
+ "nexttermseqno":2,
"timestamp":"20160606150902",
"sign":"hjAtBGygGjFyOKEZmWdxi1tk51/xqLYTr5tm2+zQVfD1RHRzGVC9GNm4ZaXnUsHnu5o3kAZ4U32m0YNiSFpncs0pl1AnnCf1n2hhn39ruABsvD//GzkEINHjyHsnxBr44G2UhyNxplUj+s7s0a7ggjbiMk+BYC3u7VkU9/l+kZOTkEyqs+wZKumfByMZGvKVkY2c2Nr67RaSWd7bsfOJ6HYw2spvu3ptAo2RTrfCxZ0Kn5DcSDm4cagzPMZSHxB8isqqNGrdUaAU0wzzC7704iA5zze//SvCqpCJfYt0OrHOiJEN5kw1d4KESrKGMG6bezlXzAp0LbNlhl+HwZJcag==",
"sign_method": "RSA"
@@ -203,6 +205,7 @@
|refno|String|本系统生成流水号|
|balance|Integer|余额(分)|
|needpwdconfirm|Boolean|是否需要输入密码|
+|nexttermseqno|Integer|下次终端流水号|
密码加密算法为 AES/ECB/PKCS5Padding 秘钥线下约定
@@ -226,6 +229,7 @@
|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
|cardphyid|String|二选一|查询对象的卡物理id|
|stuempno|String|二选一| 发起消费对象的学号|
+|termid|Integer|否|终端号,实体卡消费冲正时需要|
|tradeno|String(32)|是|第三方系统唯一流水号|
|reversetradeno|String(32)|是|第三方系统需要冲正的流水号|
|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
@@ -253,8 +257,9 @@
```json
{
"retcode":"0",
- "retmsg":"success"
+ "retmsg":"success",
"tradeno":"20160607000002",
+ "nexttermseqno":2,
"timestamp":"20160606150902",
"sign":"hjAtBGygGjFyOKEZmWdxi1tk51/xqLYTr5tm2+zQVfD1RHRzGVC9GNm4ZaXnUsHnu5o3kAZ4U32m0YNiSFpncs0pl1AnnCf1n2hhn39ruABsvD//GzkEINHjyHsnxBr44G2UhyNxplUj+s7s0a7ggjbiMk+BYC3u7VkU9/l+kZOTkEyqs+wZKumfByMZGvKVkY2c2Nr67RaSWd7bsfOJ6HYw2spvu3ptAo2RTrfCxZ0Kn5DcSDm4cagzPMZSHxB8isqqNGrdUaAU0wzzC7704iA5zze//SvCqpCJfYt0OrHOiJEN5kw1d4KESrKGMG6bezlXzAp0LbNlhl+HwZJcag==",
"sign_method": "RSA"
@@ -284,6 +289,289 @@
|retmsg|String|返回消息|
|tradeno|String|第三方流水号|
+## 2.4 扣款流水查询
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/payquery`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|stuempno|String|是| 发起消费对象的学号|
+|tradeno|String(32)|是|第三方系统唯一流水号|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/payquery
+
+partner_id:10000
+stuempno:09893092
+tradeno:20160607000001
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"success"
+ "tradeno":"20160607000001",
+ "balance":4850,
+ "refno":"20160605190200000001",
+ "tradestatus": "success",
+ "paytime":"20160606150902",
+ "timestamp":"20160606150902",
+ "sign":"hjAtBGygGjFyOKEZmWdxi1tk51/xqLYTr5tm2+zQVfD1RHRzGVC9GNm4ZaXnUsHnu5o3kAZ4U32m0YNiSFpncs0pl1AnnCf1n2hhn39ruABsvD//GzkEINHjyHsnxBr44G2UhyNxplUj+s7s0a7ggjbiMk+BYC3u7VkU9/l+kZOTkEyqs+wZKumfByMZGvKVkY2c2Nr67RaSWd7bsfOJ6HYw2spvu3ptAo2RTrfCxZ0Kn5DcSDm4cagzPMZSHxB8isqqNGrdUaAU0wzzC7704iA5zze//SvCqpCJfYt0OrHOiJEN5kw1d4KESrKGMG6bezlXzAp0LbNlhl+HwZJcag==",
+ "sign_method": "RSA"
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"成功",
+ "tradestatus": "fail",
+ "tradeno":"20160607000001",
+ "timestamp":"20160606150902",
+ "sign": "hjAtBGygGjFyOKEZmWdxi1tk51/xqLYTr5tm2+zQVfD1RHRzGVC9GNm4ZaXnUsHnu5o3kAZ4U32m0YNiSFpncs0pl1AnnCf1n2hhn39ruABsvD//GzkEINHjyHsnxBr44G2UhyNxplUj+s7s0a7ggjbiMk+BYC3u7VkU9/l+kZOTkEyqs+wZKumfByMZGvKVkY2c2Nr67RaSWd7bsfOJ6HYw2spvu3ptAo2RTrfCxZ0Kn5DcSDm4cagzPMZSHxB8isqqNGrdUaAU0wzzC7704iA5zze//SvCqpCJfYt0OrHOiJEN5kw1d4KESrKGMG6bezlXzAp0LbNlhl+HwZJcag==",
+ "sign_method":"RSA"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,1 - 流水不存在)|
+|retmsg|String|返回消息|
+|tradeno|String|第三方流水号|
+|refno|String|本系统生成流水号|
+|tradestatus|String|交易状态, success - 成功,fail - 失败 |
+|paytime|String|支付时间,交易成功才会返回 |
+|balance|Integer|余额(分)|
+
+
+## 2.5 交易明细下载
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/query_bill_list`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|accdate|String|是| 账单日期 |
+|pageno|String|否| 页码,默认1|
+|pagesize|String|否| 每页行数,默认10,范围10-500|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是| HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/query_bill_list
+
+partner_id:10000
+accdate:20190701
+pageno:1
+pagesize:10
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode": "0",
+ "retmsg": "查询成功",
+ "data": {
+ "totalCount": 11,
+ "pageSize": 10,
+ "pageNo": 1,
+ "list": [
+ {
+ "refno": "20170809160440168058",
+ "tradeno": "20170809160440168058",
+ "paytime": "20170809160449",
+ "billname": "IC卡消费",
+ "amount": 1,
+ "billtype": "联机刷卡消费",
+ "billstatus": 2,
+ "tradetype": "2",
+ "tradecode": "6630",
+ "termname":"第一食堂POS机1",
+ "aftbal": 65.21
+ },
+ {
+ "refno": "20170809103401168050",
+ "tradeno": "20170809103401168050",
+ "paytime": "20170809103413",
+ "billname": "IC卡消费",
+ "amount": 1,
+ "billtype": "联机刷卡消费",
+ "billstatus": 2,
+ "tradetype": "2",
+ "tradecode": "6630",
+ "termname":"第一食堂POS机3",
+ "aftbal": 66.21
+ },
+ {
+ "refno": "20170809101226168047",
+ "tradeno": "20170809101226168047",
+ "paytime": "20170809101238",
+ "billname": "IC卡消费",
+ "amount": 1,
+ "billtype": "联机刷卡消费",
+ "billstatus": 2,
+ "tradetype": "2",
+ "tradecode": "6630",
+ "termname":"第一食堂POS机2",
+ "aftbal": 67.21
+ },
+ {
+ "refno": "20170809101217168046",
+ "tradeno": "20170809101217168046",
+ "paytime": "20170809101229",
+ "billname": "IC卡消费",
+ "amount": 1,
+ "billtype": "联机刷卡消费",
+ "billstatus": 2,
+ "tradetype": "2",
+ "tradecode": "6630",
+ "termname":"第一食堂POS机1",
+ "aftbal": 68.21
+ },
+ {
+ "refno": "20170809100854168045",
+ "tradeno": "20170809100854168045",
+ "paytime": "20170809100905",
+ "billname": "IC卡消费",
+ "amount": 1,
+ "billtype": "联机刷卡消费",
+ "billstatus": 2,
+ "tradetype": "2",
+ "tradecode": "6630",
+ "termname":"第一食堂POS机1",
+ "aftbal": 69.21
+ },
+ {
+ "refno": "20170809100845168043",
+ "tradeno": "20170809100845168043",
+ "paytime": "20170809100824",
+ "billname": "IC卡消费",
+ "amount": 1,
+ "billtype": "联机刷卡消费",
+ "billstatus": 2,
+ "tradetype": "2",
+ "tradecode": "6630",
+ "termname":"第一食堂POS机1",
+ "aftbal": 70.21
+ },
+ {
+ "refno": "20170809100845168044",
+ "tradeno": "20170809100845168044",
+ "paytime": "20170809100824",
+ "billname": "IC卡消费",
+ "amount": 1,
+ "billtype": "联机刷卡消费撤销",
+ "billstatus": 2,
+ "tradetype": "1",
+ "tradecode": "6632",
+ "termname":"第一食堂POS机1",
+ "aftbal": 71.21
+ },
+ {
+ "refno": "20170807145900002705",
+ "tradeno": "20170807145900002705",
+ "paytime": "20170807145958",
+ "billname": "现金充值",
+ "amount": 70,
+ "billtype": "钱包充值",
+ "billstatus": 2,
+ "tradetype": "1",
+ "tradecode": "6500",
+ "termname":"第一食堂充值机1",
+ "aftbal": 70.21
+ }
+ ],
+ "firstResult": 0,
+ "totalPage": 2,
+ "firstPage": true,
+ "lastPage": false,
+ "nextPage": 2,
+ "prePage": 1
+ }
+}
+```
+
+- 失败
+
+```json
+{
+ "retcode": "304",
+ "retmsg": "签名验证失败",
+ "data": null
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|data|list|流水明细集合|
+
+**流水明细说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+| refno |String|交易参考号|
+| tradeno |String|第三方交易流水号|
+| paytime|String|交易时间 yyyyMMddhh24miss|
+| billname|String |交易名称 |
+|amount|Double|交易金额(元)|
+|billtype|String|交易类型|
+|billstatus|String|状态 2-成功 3-失败|
+| tradetype |String|交易方向 1-充值 2-消费|
+|tradecode|String|交易码|
+|termname | String|终端名称|
+|aftbal|Double|交易后余额(元)|
+
+
## 附录A-用户请求HMAC签名算法 ##
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243.pdf" "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243.pdf"
new file mode 100644
index 0000000..5dc0b76
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243.pdf"
Binary files differ
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243\347\232\204\346\235\234\345\205\213\347\211\210.md" "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243\347\232\204\346\235\234\345\205\213\347\211\210.md"
new file mode 100644
index 0000000..c911f1c
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243\347\232\204\346\235\234\345\205\213\347\211\210.md"
@@ -0,0 +1,267 @@
+---
+title: 一卡通v5第三方消费接口文档V1.2
+date: 2019-05-06
+tags:
+
+---
+
+## 1.1文档说明 ##
+
+本文档用于描述了一卡通对第三方应用提供的通用支付api接口文档,供第三方系统(前置和应用)对接参考。
+
+## 1.2约定 ##
+
+1. 传输编码统一为utf-8
+2. RSA 加密算法为本接口采用的非对称加密算法,`SIGN_ALGORITHMS ="SHA1WithRSA"`;
+3. RSA公钥由本系统提供,本系统返回信息的签名数据,第三方系统得到后通过公钥校验算法,验证返回数据的合法性
+4. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
+5. 具体签名生成参考后面的签名章节
+6. retcode等于0表示成功,非0表示失败,失败具体信息查看retmsg
+7. 密码加密的原始串为timestamp:pwd
+
+
+## 2.1 通用账户查询 ##
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/accountquery`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|cardphyid|String|是|查询对象的卡物理id|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/accountquery
+
+partner_id:10000
+stuempno:09893092
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"query success",
+ "onceTimeLimit":"5000",
+ "dayTotalLimit":"10000",
+ "expiredate":"20191010",
+ "balance":4850,
+ "frozenbal":0,
+ "status":"normal"
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"account not exsit"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|balance|Integer|余额(分)|
+|frozenbal|Integer|冻结余额(分)|
+|expiredate|String|卡有效期|
+|status|String|状态(正常)|
+|onceTimeLimit|String|单次限额(分)|
+|dayTotalLimit|String|日累计限额(分)|
+
+
+## 2.2 通用支付 ##
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/pay`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|cardphyid|String|是|查询对象的卡物理id|
+|tradeno|String(32)|是|第三方系统唯一流水号|
+|tradename|String(60)|是|交易名称|
+|amount|Integer|是|消费金额(分)|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/pay
+
+partner_id:10000
+stuempno:09893092
+tradeno:20160607000001
+trandename:print fee
+amount:2000
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"success",
+ "tradeno":"20160607000001",
+ "balance":4850,
+ "refno":"20160605190200000001"
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"账户余额不足",
+ "tradeno":"20160607000001"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|tradeno|String|第三方流水号|
+|refno|String|本系统生成流水号|
+|balance|Integer|余额(分)|
+
+
+## 附录A-用户请求HMAC签名算法 ##
+
+
+- 签名方式:`hmac-sha1`
+
+- 签名密钥由本系统统一线下提供
+
+
+- **签名校验的通用步骤如下:**
+
+ **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+> 假设传送的参数如下:
+
+
+```
+ partner_id:10000
+ stuempno:09893092
+ tradeno:20160607000001
+ trandename:printfee
+ amount:2000
+ timestamp:20150119130901
+ sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+ sign_method:HMAC
+```
+> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+
+
+```
+ amount=2000&partner_id=10000&sign_method=HMAC&stuempno=09893092
+ ×tamp=20150119130901&tradeno=20160607000001&trandename=printfee
+```
+
+ **特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+ **第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。
+
+
+## 附录B-服务端返回数据RSA签名校验算法 ##
+
+- 签名方式:`SHA1withRSA`
+- 签名校验的公钥key为本系统统一线下提供。
+
+- **签名校验的通用步骤如下:**
+
+**第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+**特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+
+**第二步,**对sign值进行base64解码,用本系统提供的公钥key对sign签名值解码后的数据基于stringA字符串,进行SHA1withRSA签名验证
+
+> 举例:
+
+
+假设传送的参数如下:
+```
+retcode:1
+retmsg:账户余额不足
+timestamp:20160513155100
+sign_mehtod:RSA
+```
+
+对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+```
+retcode=1&retmsg=账户余额不足×tamp=20160513155100&sign_mehtod=RSA
+```
+
+
+
+
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243\347\232\204\346\235\234\345\205\213\347\211\210.pdf" "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243\347\232\204\346\235\234\345\205\213\347\211\210.pdf"
new file mode 100644
index 0000000..a014fdf
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243\347\232\204\346\235\234\345\205\213\347\211\210.pdf"
Binary files differ
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243\347\232\204\347\272\275\345\244\247\347\211\210.md" "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243\347\232\204\347\272\275\345\244\247\347\211\210.md"
new file mode 100644
index 0000000..214c042
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243\347\232\204\347\272\275\345\244\247\347\211\210.md"
@@ -0,0 +1,267 @@
+---
+title: 一卡通v5第三方消费接口文档V1.1
+date: 2018-07-06
+tags:
+
+---
+
+## 1.1文档说明 ##
+
+本文档用于描述了一卡通对第三方应用提供的通用支付api接口文档,供第三方系统(前置和应用)对接参考。
+
+## 1.2约定 ##
+
+1. 传输编码统一为utf-8
+2. RSA 加密算法为本接口采用的非对称加密算法,`SIGN_ALGORITHMS ="SHA1WithRSA"`;
+3. RSA公钥由本系统提供,本系统返回信息的签名数据,第三方系统得到后通过公钥校验算法,验证返回数据的合法性
+4. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
+5. 具体签名生成参考后面的签名章节
+6. retcode等于0表示成功,非0表示失败,失败具体信息查看retmsg
+7. 密码加密的原始串为timestamp:pwd
+
+
+## 2.1 通用账户查询 ##
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/accountquery`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|cardphyid|String|二选一|查询对象的卡物理id|
+|stuempno|String|二选一| 查询对象的学号|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/accountquery
+
+partner_id:10000
+stuempno:09893092
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"query success",
+ "onceTimeLimit":"5000",
+ "dayTotalLimit":"10000",
+ "expiredate":"20191010",
+ "balance":4850,
+ "frozenbal":0,
+ "status":"normal"
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"account not exsit"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|balance|Integer|余额(分)|
+|frozenbal|Integer|冻结余额(分)|
+|expiredate|String|卡有效期|
+|status|String|状态(正常)|
+
+
+## 2.2 通用支付 ##
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/pay`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|cardphyid|String|二选一|查询对象的卡物理id|
+|stuempno|String|二选一| 发起消费对象的学号|
+|tradeno|String(32)|是|第三方系统唯一流水号|
+|tradename|String(60)|是|交易名称|
+|amount|Integer|是|消费金额(分)|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/pay
+
+partner_id:10000
+stuempno:09893092
+tradeno:20160607000001
+trandename:print fee
+amount:2000
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"success",
+ "tradeno":"20160607000001",
+ "balance":4850,
+ "refno":"20160605190200000001"
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"账户余额不足",
+ "tradeno":"20160607000001"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|tradeno|String|第三方流水号|
+|refno|String|本系统生成流水号|
+|balance|Integer|余额(分)|
+
+
+## 附录A-用户请求HMAC签名算法 ##
+
+
+- 签名方式:`hmac-sha1`
+
+- 签名密钥由本系统统一线下提供
+
+
+- **签名校验的通用步骤如下:**
+
+ **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+> 假设传送的参数如下:
+
+
+```
+ partner_id:10000
+ stuempno:09893092
+ tradeno:20160607000001
+ trandename:printfee
+ amount:2000
+ timestamp:20150119130901
+ sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+ sign_method:HMAC
+```
+> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+
+
+```
+ amount=2000&partner_id=10000&sign_method=HMAC&stuempno=09893092
+ ×tamp=20150119130901&tradeno=20160607000001&trandename=printfee
+```
+
+ **特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+ **第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。
+
+
+## 附录B-服务端返回数据RSA签名校验算法 ##
+
+- 签名方式:`SHA1withRSA`
+- 签名校验的公钥key为本系统统一线下提供。
+
+- **签名校验的通用步骤如下:**
+
+**第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+**特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+
+**第二步,**对sign值进行base64解码,用本系统提供的公钥key对sign签名值解码后的数据基于stringA字符串,进行SHA1withRSA签名验证
+
+> 举例:
+
+
+假设传送的参数如下:
+```
+retcode:1
+retmsg:账户余额不足
+timestamp:20160513155100
+sign_mehtod:RSA
+```
+
+对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+```
+retcode=1&retmsg=账户余额不足×tamp=20160513155100&sign_mehtod=RSA
+```
+
+
+
+
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243\347\232\204\347\272\275\345\244\247\347\211\210.pdf" "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243\347\232\204\347\272\275\345\244\247\347\211\210.pdf"
new file mode 100644
index 0000000..5e65262
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\346\266\210\350\264\271\346\216\245\345\217\243\346\226\207\346\241\243\347\232\204\347\272\275\345\244\247\347\211\210.pdf"
Binary files differ
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\347\246\273\346\240\241\345\257\271\346\216\245\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\347\254\254\344\270\211\346\226\271\347\246\273\346\240\241\345\257\271\346\216\245\346\216\245\345\217\243\346\226\207\346\241\243.md"
new file mode 100644
index 0000000..01e7d69
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\347\254\254\344\270\211\346\226\271\347\246\273\346\240\241\345\257\271\346\216\245\346\216\245\345\217\243\346\226\207\346\241\243.md"
@@ -0,0 +1,181 @@
+---
+title: 一卡通v5第三方离校对接接口文档V1.1
+date: 2019-06-13
+tags:
+
+---
+
+## 1.1文档说明 ##
+
+本文档用于描述了一卡通对第三方应用提供的通用对接接口文档-离校查询,供第三方系统(前置和应用)对接参考。
+
+## 1.2约定 ##
+
+1. 传输编码统一为utf-8
+2. RSA 加密算法为本接口采用的非对称加密算法,`SIGN_ALGORITHMS ="SHA1WithRSA"`;
+3. RSA公钥由本系统提供,本系统返回信息的签名数据,第三方系统得到后通过公钥校验算法,验证返回数据的合法性
+4. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
+5. 具体签名生成参考后面的签名章节
+6. retcode等于0表示成功,非0表示失败,失败具体信息查看retmsg
+
+
+
+## 2.1 通用账户查询 ##
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/graduation/statusquery`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|stuempno|String|是| 查询对象的学号|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/graduation/statusquery
+
+partner_id:10000
+stuempno:09893092
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"可以离校"
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"6",
+ "retmsg":"账户已欠费 10 元"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+
+
+
+## 附录A-用户请求HMAC签名算法 ##
+
+
+- 签名方式:`hmac-sha1`
+
+- 签名密钥由本系统统一线下提供
+
+
+- **签名校验的通用步骤如下:**
+
+ **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+> 假设传送的参数如下:
+
+
+```
+ partner_id:10000
+ stuempno:09893092
+ tradeno:20160607000001
+ trandename:printfee
+ amount:2000
+ timestamp:20150119130901
+ sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+ sign_method:HMAC
+```
+> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+
+
+```
+ amount=2000&partner_id=10000&sign_method=HMAC&stuempno=09893092
+ ×tamp=20150119130901&tradeno=20160607000001&trandename=printfee
+```
+
+ **特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+ **第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。
+
+
+## 附录B-服务端返回数据RSA签名校验算法 ##
+
+- 签名方式:`SHA1withRSA`
+- 签名校验的公钥key为本系统统一线下提供。
+
+- **签名校验的通用步骤如下:**
+
+**第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+**特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+
+**第二步,**对sign值进行base64解码,用本系统提供的公钥key对sign签名值解码后的数据基于stringA字符串,进行SHA1withRSA签名验证
+
+> 举例:
+
+
+假设传送的参数如下:
+```
+retcode:1
+retmsg:账户余额不足
+timestamp:20160513155100
+sign_mehtod:RSA
+```
+
+对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+```
+retcode=1&retmsg=账户余额不足×tamp=20160513155100&sign_mehtod=RSA
+```
+
+
+
+
+
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\350\231\232\346\213\237\345\215\241H5\345\257\271\346\216\245\346\216\245\345\217\243.md" "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\350\231\232\346\213\237\345\215\241H5\345\257\271\346\216\245\346\216\245\345\217\243.md"
new file mode 100644
index 0000000..510344d
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\350\231\232\346\213\237\345\215\241H5\345\257\271\346\216\245\346\216\245\345\217\243.md"
@@ -0,0 +1,99 @@
+---
+title: 一卡通v5二维码H5对接接入
+date: 2019-10-10
+tags:
+
+---
+
+## 1.1文档说明 ##
+
+本文档用于描述了一卡通二维码H5对接接入,供第三方系统(前置和应用)对接参考。
+
+## 1.2约定 ##
+
+1. 传输编码统一为utf-8
+2. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
+3. 具体签名生成参考后面的签名章节
+4. retcode等于0表示成功,非0表示失败,失败具体信息查看retmsg
+
+
+## 2.1 二维码H5对接 ##
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdconsume/app/qrcode`
+
+**请求方式/格式:**
+
+- GET
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|uid|String|是 |学号|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|nonce|String|是|随机数|
+|ip|String|是|客户端ip地址|
+|codetype|String|是|二维码类型,H5,O5|
+|codeversion|String|是|二维码版本,2.0|
+|sign|String|是|签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdconsume/app/qrcode?partner_id=100001&uid=200001×tamp=2019090910202019&nonce=abc123&ip=192.10.10.1&codetype=O5&codeversion=2.0&sign_method=HMAC&sign=5195f9b9116e4adf67eeebc9935d33dc683f677d
+
+```
+
+
+
+## 附录A-用户请求HMAC签名算法 ##
+
+
+- 签名方式:`hmac-sha1`
+
+- 签名密钥由本系统统一线下提供
+
+
+- **签名校验的通用步骤如下:**
+
+ **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+> 假设传送的参数如下:
+
+
+```
+ partner_id:10000
+ uid:20001
+ nonce:abc123
+ ip:192.10.10.10
+ codetype:O5
+ codeversion:2.0
+ timestamp:20150119130901
+ sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+ sign_method:HMAC
+```
+> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+
+
+```
+ codeversion=2.0&codetype=O5&ip=192.10.10.10&nonce=abc123&partner_id=10000&sign_method=HMAC×tamp=20150119130901&uid=20001
+```
+
+ **特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+ **第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。
diff --git "a/source/_posts/\344\270\200\345\215\241\351\200\232v5\350\231\232\346\213\237\345\215\241H5\345\257\271\346\216\245\346\216\245\345\217\243.pdf" "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\350\231\232\346\213\237\345\215\241H5\345\257\271\346\216\245\346\216\245\345\217\243.pdf"
new file mode 100644
index 0000000..b48fdb8
--- /dev/null
+++ "b/source/_posts/\344\270\200\345\215\241\351\200\232v5\350\231\232\346\213\237\345\215\241H5\345\257\271\346\216\245\346\216\245\345\217\243.pdf"
Binary files differ
diff --git "a/source/_posts/\344\270\212\346\265\267\346\265\267\344\272\213\345\244\247\345\255\246\347\273\237\344\270\200\346\224\257\344\273\230\345\271\263\345\217\260\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243.md" "b/source/_posts/\344\270\212\346\265\267\346\265\267\344\272\213\345\244\247\345\255\246\347\273\237\344\270\200\346\224\257\344\273\230\345\271\263\345\217\260\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243.md"
new file mode 100644
index 0000000..43de85f
--- /dev/null
+++ "b/source/_posts/\344\270\212\346\265\267\346\265\267\344\272\213\345\244\247\345\255\246\347\273\237\344\270\200\346\224\257\344\273\230\345\271\263\345\217\260\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243.md"
@@ -0,0 +1,394 @@
+---
+title: 统一支付平台网关接口文档
+date: 2019-10-23
+
+---
+
+## 1.1文档说明 ##
+
+本文档用于描述了统一支付平台提供第三方支付网关接口文档,供第三方系统接入对接参考。
+
+## 1.2约定 ##
+
+1. 传输编码统一为utf-8
+2. RSA 加密算法为本接口采用的非对称加密算法,`SIGN_ALGORITHMS ="SHA1WithRSA"`;
+3. RSA公钥由本系统提供,本系统返回信息的签名数据,第三方系统得到后通过公钥校验算法,验证返回数据的合法性
+4. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
+5. 具体签名生成参考后面的签名章节
+6. retcode等于success表示成功,其他表示失败,失败具体信息查看retmsg
+
+## 1.3 流程、数据交互 ##
+
+
+
+## 2.1 统一支付平台网关统一收单线下交易预创建接口 ##
+
+**请求URL:**
+
+- `https://ip:port/webgate/precreateorder`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|notify_url|String|否| 统一支付平台主动通知商户系统指定的回调地址|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 具体加密方式为HAMC-SHA1|
+|out_trade_no|String(20)|是|商户网站的唯一订单号,(确保商户系统中唯一)|
+|out_trade_name|String|是|交易名称,用户显示的支付信息|
+|total_amount|String|是|订单金额(rmb),单位分|
+|trade_route|String|是|支付途径 可选值:alipay|
+|remark|String|否|备注信息|
+|stuempno|String|否|用户唯一标识:学工号|
+|openid|String|否|微信支付需要传入用户的openid|
+
+
+**请求内容示例:**
+```html
+URI:https://ip:port/webgate/precreateorder
+
+partner_id:10001
+notify_url:http://***.***.edu.cn/receive_notify.htm
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+out_trade_no:2016062115020100000001
+out_trade_name:***打印费
+total_amount:200
+remark:打印费
+stuempno:99100210291
+openid:oW_0ystmvku==
+```
+
+
+
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"success",
+ "retmsg":"申码成功成功",
+ "qrcode":"https://qr.alipay.com/bax06824wnqpo0erskqs202e",
+ "refno":"2019080910201002000001"
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"illegal_param",
+ "retmsg":"参数错误"
+}
+
+```
+
+----------
+
+- 注意:
+
+1. 此接口原则上只支持 https请求;
+2. 请按照“签名机制”中的签名方法对输入参数进行签名,该接口请求才能够被本系统接收;
+3. 此接口支持重复调用,前提是交易基本信息(订单号、交易金额等)在多次调用中保持一致,且交易尚未完成支付。
+
+----------
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(success=成功,其他为失败)|
+|retmsg|String|返回消息|
+|refno|String|交易参考号|
+|qrcode|String|二维码内容,第三方自己转成二维码图片|
+
+
+## 2.2 统一支付平台服务器异步通知参数说明 ##
+
+**含义:**
+
+统一支付平台对商户的请求数据处理完成后,会将处理的结果数据通过服务器主动通知的方式通知给商户系统。这些处理结果数据就是服务器异步通知参数。
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|notify_time|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:RSA|
+|out_trade_no|String|是|商户系统的唯一订单号,(确保商户系统中唯一)|
+|out_channel_trade_no|String|是|第三方支付渠道的唯一流水号|
+|trade_no|String|是|易支付流水号|
+|pay_time|String|是|交易完成时间|
+|trade_status|String|是|交易状态,成功:TRADE_FINISHED、失败:TRADE_FAIL|
+|total_amount|String|是|订单金额(rmb),单位分|
+|out_channel|String|是|支付渠道,(alipay、wechat、ips)|
+|remark|String|否|备注信息|
+
+
+**请求内容示例:**
+```html
+URI:http://***.nyu.net/receive_notify.htm
+
+notify_time:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:RSA
+out_trade_no:2016062115020100000001
+out_channel_trade_no:2016062115020112903920
+trade_no:2016062115020100000002
+pay_time:20150119130901
+trade_status:TRADE_FINISHED
+total_amount:20000
+out_channel:alipay
+remark:打印
+```
+
+----------
+
+- 注意:
+
+1. 请按照“签名机制”中的签名方法对输入参数进行验签,确保请求为本系统发送;
+2. 必须保证服务器异步通知页面(notify_url)上无任何特殊字符,如空格、HTML标签、开发系统自带抛出的异常提示信息等;
+3. 第一次交易状态改变(即时到账中此时交易状态是交易完成)时,服务器异步通知地址会收到本系统发来的处理结果通知
+4. 程序执行完后必须打印输出success,否则本系统认为回调失败,会继续回调,直到次数限制。
+----------
+
+## 2.3 统一支付平台订单查询接口 ##
+
+**请求URL:**
+
+- `https://ip:port/webgate/precreateorderquery`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|pageno|String|否| 页码,默认1|
+|pagesize|String|否| 每页行数,默认10,范围10-500|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+|out_trade_no|String|二选一|商户网站的唯一订单号,单条查询(确保商户系统中唯一)|
+|order_date|String|二选一|查询日期,日对账批量查询时使用|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/webgate/precreateorderquery
+
+partner_id:10001
+pageno:1
+pagesize:10
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+out_trade_no:2016062115020100000001
+```
+
+
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode": "success",
+ "retmsg": "查询成功",
+ "page": {
+ "totalCount": 1,
+ "pageSize": 10,
+ "pageNo": 1,
+ "list": [
+ {
+ "trade_no": "2016062115020100000002",
+ "out_trade_no": "2016062115020100000001",
+ "out_channel_trade_no":"2016062115020112903920",
+ "pay_time": "20150119130901",
+ "trade_status": "TRADE_FINISHED",
+ "total_amount": "20000",
+ "out_channel": "alipay",
+ "remark": "打印",
+
+ }
+ ],
+ "firstResult": 0,
+ "firstPage": true,
+ "lastPage": true,
+ "nextPage": 1,
+ "totalPage": 1,
+ "prePage": 1
+ }
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"illegal_param",
+ "retmsg":"查询失败"
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(success=成功,其他为失败)|
+|retmsg|String|返回消息|
+|page|Pagination|Pagination分页|
+
+**Pagination分页说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|totalCount|int|流水记录总数|
+|pageSize|int|每页记录数|
+|pageNo|int|页码|
+|list|List|流水明细数据集|
+|totalPage|int|总页码|
+|firstResult|int|第一条数据位置|
+|firstPage|boolean|是否第一页|
+|lastPage|boolean|是否最后一页|
+|nextPage|int|下一页|
+|prePage|int|上一页|
+
+
+**流水明细说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+| tradeno |String|交易流水号|
+| out_trade_no |String|第三方交易流水号|
+| out_channel_trade_no |String|外部渠道流水号|
+| pay_time|String|交易时间 yyyyMMddhh24miss|
+|trade_status|String|状态 TRADE_FINISHED-交易完成 TRADE_INIT-交易未完成|
+| total_amount |Inteer|交易金额(分)|
+|out_channel|String|外部渠道标识,alipay|
+|remark | String|交易备注|
+
+----------
+
+- 注意:
+
+1. 此接口只支持 https请求;
+2. 请按照“签名机制”中的签名方法对输入参数进行签名,该接口请求才能够被本系统接收;
+
+----------
+
+
+
+## 附录A-用户请求HMAC签名算法 ##
+
+
+- 签名方式:`hmac-sha1`
+
+- 签名密钥由本系统统一线下提供
+
+
+- **签名校验的通用步骤如下:**
+
+ **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+> 假设传送的参数如下:
+
+
+```
+ partner_id:10000
+ stuempno:09893092
+ tradeno:20160607000001
+ trandename:printfee
+ amount:2000
+ timestamp:20150119130901
+ sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+ sign_method:HMAC
+```
+> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+
+
+```
+ amount=2000&partner_id=10000&sign_method=HMAC&stuempno=09893092
+ ×tamp=20150119130901&tradeno=20160607000001&trandename=printfee
+```
+
+ **特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+ **第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。
+
+
+## 附录B-服务端返回数据RSA签名校验算法 ##
+
+- 签名方式:`SHA1withRSA`
+- 签名校验的公钥key为本系统统一线下提供。
+
+- **签名校验的通用步骤如下:**
+
+**第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+**特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+
+**第二步,**对sign值进行base64解码,用本系统提供的公钥key对sign签名值解码后的数据基于stringA字符串,进行SHA1withRSA签名验证
+
+> 举例:
+
+
+假设传送的参数如下:
+```
+retcode:1
+retmsg:账户余额不足
+timestamp:20160513155100
+sign_mehtod:RSA
+```
+
+对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+```
+retcode=1&retmsg=账户余额不足×tamp=20160513155100&sign_mehtod=RSA
+```
diff --git "a/source/_posts/\344\270\212\346\265\267\346\265\267\344\272\213\345\244\247\345\255\246\347\273\237\344\270\200\346\224\257\344\273\230\345\271\263\345\217\260\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243.pdf" "b/source/_posts/\344\270\212\346\265\267\346\265\267\344\272\213\345\244\247\345\255\246\347\273\237\344\270\200\346\224\257\344\273\230\345\271\263\345\217\260\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243.pdf"
new file mode 100644
index 0000000..9a15b30
--- /dev/null
+++ "b/source/_posts/\344\270\212\346\265\267\346\265\267\344\272\213\345\244\247\345\255\246\347\273\237\344\270\200\346\224\257\344\273\230\345\271\263\345\217\260\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243.pdf"
Binary files differ
diff --git "a/source/_posts/\345\205\201\350\256\270\350\204\261\346\234\272\346\266\210\350\264\271\344\272\214\347\273\264\347\240\201\350\256\276\350\256\241\346\226\207\346\241\243.md" "b/source/_posts/\345\205\201\350\256\270\350\204\261\346\234\272\346\266\210\350\264\271\344\272\214\347\273\264\347\240\201\350\256\276\350\256\241\346\226\207\346\241\243.md"
index 48248c0..f73f7a7 100644
--- "a/source/_posts/\345\205\201\350\256\270\350\204\261\346\234\272\346\266\210\350\264\271\344\272\214\347\273\264\347\240\201\350\256\276\350\256\241\346\226\207\346\241\243.md"
+++ "b/source/_posts/\345\205\201\350\256\270\350\204\261\346\234\272\346\266\210\350\264\271\344\272\214\347\273\264\347\240\201\350\256\276\350\256\241\346\226\207\346\241\243.md"
@@ -49,12 +49,14 @@
* 对加密后的数据使用AES加密算法二次加密,最后进行base64输出
-* paymentToken = base64(AEScfb192(rootkey,schoolcode+':'+gid+':'+feetype+':'+balance+':'+totp+':'+sign+':'+encdata,iv))
+* paymentToken = base64(AEScfb256(rootkey,schoolcode+':'+gid+':'+stuempno+':'+feetype+':'+balance+':'+ntotp+':'+sign+':'+encdata,iv))
-* schoolcode为学校代码6,不足6位的前补0
+* schoolcode为学校代码
* 其中gid为激活接口返回的“系统分配唯一标识”
+* stuempno为学号
+
* rootkey为约定密钥串,iv为约定向量
* balance为账户余额单位为分
@@ -63,14 +65,14 @@
* sign签名算法见附录b
-* totp为6位数字,seedkey为预定秘钥串,步长为30s 有效期为前后3分钟
+* ntotp为6位数字,seedkey为预定秘钥串,步长为30s 有效期为前后3分钟
## 附录B-签名sign定义 ##
-* sign = MD5(schoolcode+':'+gid+':'+feetype+':'+balance+':'+totp +'{'+ Kp+'}')
+* sign = MD5(schoolcode+':'+gid+':'+stuempno+':'+feetype+':'+balance+':'+ntotp +'{'+ Kp+'}')
-* kp为单用户的分散密钥,由系统的卡片根密钥kr,通过分散因子schoolcode+gid 进行分散获得,分散算法为cpu卡密钥3DES分散算法
+* kp为单用户的签名盐值,由系统的卡片根密钥kr,通过分散因子paddingleft(schoolcode+gid,16,'0') 进行分散获得中间秘钥kt,再用kt通过3desmac(kr,ntotp)算法获得签名盐值kp
## 附录C-手机端安全控制 ##
diff --git "a/source/_posts/\345\205\201\350\256\270\350\204\261\346\234\272\346\266\210\350\264\271\344\272\214\347\273\264\347\240\201\350\256\276\350\256\241\346\226\207\346\241\243.pdf" "b/source/_posts/\345\205\201\350\256\270\350\204\261\346\234\272\346\266\210\350\264\271\344\272\214\347\273\264\347\240\201\350\256\276\350\256\241\346\226\207\346\241\243.pdf"
index 6590704..d6edda3 100644
--- "a/source/_posts/\345\205\201\350\256\270\350\204\261\346\234\272\346\266\210\350\264\271\344\272\214\347\273\264\347\240\201\350\256\276\350\256\241\346\226\207\346\241\243.pdf"
+++ "b/source/_posts/\345\205\201\350\256\270\350\204\261\346\234\272\346\266\210\350\264\271\344\272\214\347\273\264\347\240\201\350\256\276\350\256\241\346\226\207\346\241\243.pdf"
Binary files differ
diff --git "a/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-v5\347\273\237\344\270\200\346\224\257\344\273\230.md" "b/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-v5\347\273\237\344\270\200\346\224\257\344\273\230.md"
new file mode 100644
index 0000000..80139c1
--- /dev/null
+++ "b/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-v5\347\273\237\344\270\200\346\224\257\344\273\230.md"
@@ -0,0 +1,383 @@
+---
+title: 易支付Web网关接口文档-V5统一支付
+date: 2019-08-29
+tags:
+
+---
+
+## 1.1文档说明 ##
+
+本文档用于描述了一卡通易支付系统作为统一支付通道提供第三方支付网关接口文档,供第三方系统接入对接参考。
+
+## 1.2约定 ##
+
+1. 传输编码统一为utf-8
+2. RSA 加密算法为本接口采用的非对称加密算法,`SIGN_ALGORITHMS ="SHA1WithRSA"`;
+3. RSA公钥由本系统提供,本系统返回信息的签名数据,第三方系统得到后通过公钥校验算法,验证返回数据的合法性
+4. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
+5. 具体签名生成参考后面的签名章节
+6. retcode等于0表示成功,非0表示失败,失败具体信息查看retmsg
+
+## 1.3 流程、数据交互 ##
+
+
+
+
+## 2.1 易支付Web网关统一支付接口 ##
+
+**请求URL:**
+
+- `https://ip:port/webgate/unifiedorder`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|notify_url|String|否| 易支付主动通知商户里指定的http地址|
+|return_url|String|否| 当易支付处理完毕后当前页面跳转到商户网站指定的http路径|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+|out_trade_no|String|是|商户网站的唯一订单号,(确保商户系统中唯一)|
+|out_trade_name|String|是|交易名称|
+|total_amount|String|是|订单金额(rmb),单位分|
+|remark|String|否|备注信息|
+|netid|String|是|用户唯一标识NetID|
+|openid|String|否|微信支付需要传入用户的openid|
+
+
+**请求内容示例:**
+```html
+URI:https://ip:port/webgate/unifiedorder
+
+partner_id:10001
+notify_url:http://***.nyu.net/receive_notify.htm
+return_url:http://***.nyu.net/receive_return.htm
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+out_trade_no:2016062115020100000001
+out_trade_name:***缴费
+total_amount:20000
+remark:donate
+netid:ss999
+openid:oW_0ystmvku==
+```
+
+----------
+
+- 注意:
+
+1.此接口只支持 https请求;
+2.请按照“签名机制”中的签名方法对输入参数进行签名,该接口请求才能够被本系统接收;
+3.此接口支持重复调用,前提是交易基本信息(订单号、交易金额等)在多次调用中保持一致,且交易尚未完成支付。
+
+----------
+
+
+## 2.2 易支付页面跳转同步通知参数说明 ##
+
+**含义:**
+
+易支付对商户的请求数据处理完成后,会将处理的结果数据通过系统程序控制客户
+端页面自动跳转的方式通知给商户网站。这些处理结果数据就是页面跳转同步通知
+参数。
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|is_success|String|是 |表示接口调用是否成功,并不表明业务处理结果。成功:T、失败:F) |
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:RSA|
+|out_trade_no|String|是|商户网站的唯一订单号,(确保商户系统中唯一)|
+|out_channel_trade_no|String|是|第三方支付渠道的唯一流水号|
+|trade_no|String|是|易支付流水号|
+|trade_status|String|是|交易状态,成功:TRADE_FINISHED、失败:TRADE_FAIL|
+|total_amount|String|是|订单金额(rmb),单位分|
+|out_channel|String|是|支付渠道,(alipay、wechat、ips)|
+|remark|String|否|备注信息|
+
+
+**请求内容示例:**
+```html
+URI:http://***.nyu.net/receive_return.htm
+
+is_success:T
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:RSA
+out_trade_no:2016062115020100000001
+out_channel_trade_no:2016062115020112903920
+trade_no:2016062115020100000002
+trade_status:TRADE_FINISHED
+total_amount:20000
+out_channel:alipay
+remark:donate
+```
+
+----------
+
+- 注意:
+
+1. 请按照“签名机制”中的签名方法对输入参数进行签名,该接口请求才能够被本系统接收;
+1. 买家在支付成功后会看到一个易支付提示交易成功的页面,该页面会停留几秒,然后会自动跳转回商户指定的同步通知页面(参数 return_url),如果return_url为空则不跳转。
+1. 该方式仅仅在买家付款完成以后进行自动跳转,因此只会进行一次。
+2. 设置页面跳转同步通知页面(return_url)的路径时,不要在页面文件的后面再加上自定义参数
+----------
+
+
+## 2.3 易支付服务器异步通知参数说明 ##
+
+**含义:**
+
+易支付对商户的请求数据处理完成后,会将处理的结果数据通过服务器主动通知的方式通知给商户网站。这些处理结果数据就是服务器异步通知参数。
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|notify_time|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:RSA|
+|out_trade_no|String|是|商户网站的唯一订单号,(确保商户系统中唯一)|
+|out_channel_trade_no|String|是|第三方支付渠道的唯一流水号|
+|trade_no|String|是|易支付流水号|
+|pay_time|String|是|交易完成时间|
+|trade_status|String|是|交易状态,成功:TRADE_FINISHED、失败:TRADE_FAIL|
+|total_amount|String|是|订单金额(rmb),单位分|
+|out_channel|String|是|支付渠道,(alipay、wechat、ips)|
+|remark|String|否|备注信息|
+
+
+**请求内容示例:**
+```html
+URI:http://***.nyu.net/receive_notify.htm
+
+notify_time:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:RSA
+out_trade_no:2016062115020100000001
+out_channel_trade_no:2016062115020112903920
+trade_no:2016062115020100000002
+pay_time:20150119130901
+trade_status:TRADE_FINISHED
+total_amount:20000
+out_channel:alipay
+remark:donate
+```
+
+----------
+
+- 注意:
+
+1. 请按照“签名机制”中的签名方法对输入参数进行签名,该接口请求才能够被本系统接收;
+2. 必须保证服务器异步通知页面(notify_url)上无任何字符,如空格、HTML标签、开发系统自带抛出的异常提示信息等;
+3. 第一次交易状态改变(即时到账中此时交易状态是交易完成)时,不仅页面跳转同步通知页面会启用,而且服务器异步通知页面也会收到易支付发来的处理结果通知
+4. 程序执行完后必须打印输出success,否则本系统认为回调失败,会继续回调,直到次数限制。
+----------
+
+## 2.4 易支付Web查询订单 ##
+
+**请求URL:**
+
+- `https://ip:port/epay/webgate/orderquery`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|pageno|String|否| 页码,默认1|
+|pagesize|String|否| 每页行数,默认10,范围10-500|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+|out_trade_no|String|二选一|商户网站的唯一订单号,单条查询(确保商户系统中唯一)|
+|order_date|String|否|查询日期,日对账批量查询时使用|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epay/webgate/orderquery
+
+partner_id:10001
+pageno:1
+pagesize:10
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+out_trade_no:2016062115020100000001
+```
+
+
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode": "0",
+ "retmsg": "查询成功",
+ "data": null,
+ "page": {
+ "totalCount": 1,
+ "pageSize": 10,
+ "pageNo": 1,
+ "list": [
+ {
+ "trade_no": "2016062115020100000002",
+ "out_trade_no": "2016062115020100000001",
+ "out_channel_trade_no":"2016062115020112903920",
+ "pay_time": "20150119130901",
+ "trade_status": "TRADE_FINISHED",
+ "total_amount": "20000",
+ "out_channel": "alipay",
+ "remark": "donate",
+
+ }
+ ],
+ "firstResult": 0,
+ "firstPage": true,
+ "lastPage": true,
+ "nextPage": 1,
+ "totalPage": 1,
+ "prePage": 1
+ }
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"查询失败"
+
+```
+
+----------
+
+- 注意:
+
+1.此接口只支持 https请求;
+2.请按照“签名机制”中的签名方法对输入参数进行签名,该接口请求才能够被本系统接收;
+
+----------
+
+
+
+## 附录A-用户请求HMAC签名算法 ##
+
+
+- 签名方式:`hmac-sha1`
+
+- 签名密钥由本系统统一线下提供
+
+
+- **签名校验的通用步骤如下:**
+
+ **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+> 假设传送的参数如下:
+
+
+```
+ partner_id:10000
+ stuempno:09893092
+ tradeno:20160607000001
+ trandename:printfee
+ amount:2000
+ timestamp:20150119130901
+ sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+ sign_method:HMAC
+```
+> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+
+
+```
+ amount=2000&partner_id=10000&sign_method=HMAC&stuempno=09893092
+ ×tamp=20150119130901&tradeno=20160607000001&trandename=printfee
+```
+
+ **特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+ **第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。
+
+
+## 附录B-服务端返回数据RSA签名校验算法 ##
+
+- 签名方式:`SHA1withRSA`
+- 签名校验的公钥key为本系统统一线下提供。
+
+- **签名校验的通用步骤如下:**
+
+**第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+**特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+
+**第二步,**对sign值进行base64解码,用本系统提供的公钥key对sign签名值解码后的数据基于stringA字符串,进行SHA1withRSA签名验证
+
+> 举例:
+
+
+假设传送的参数如下:
+```
+retcode:1
+retmsg:账户余额不足
+timestamp:20160513155100
+sign_mehtod:RSA
+```
+
+对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+```
+retcode=1&retmsg=账户余额不足×tamp=20160513155100&sign_mehtod=RSA
+```
diff --git "a/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-\347\254\254\344\270\211\346\226\271\346\224\257\344\273\230.pdf" "b/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-\347\254\254\344\270\211\346\226\271\346\224\257\344\273\230.pdf"
new file mode 100644
index 0000000..848405d
--- /dev/null
+++ "b/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-\347\254\254\344\270\211\346\226\271\346\224\257\344\273\230.pdf"
Binary files differ
diff --git "a/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-\347\272\275\345\244\247\347\273\237\344\270\200\346\224\257\344\273\230.md" "b/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-\347\272\275\345\244\247\347\273\237\344\270\200\346\224\257\344\273\230.md"
new file mode 100644
index 0000000..53c05d3
--- /dev/null
+++ "b/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-\347\272\275\345\244\247\347\273\237\344\270\200\346\224\257\344\273\230.md"
@@ -0,0 +1,383 @@
+---
+title: 易支付Web网关接口文档-纽大统一支付
+date: 2019-08-29
+tags:
+
+---
+
+## 1.1文档说明 ##
+
+本文档用于描述了一卡通易支付系统作为统一支付通道提供纽约大学第三方支付网关接口文档,供第三方系统接入对接参考。
+
+## 1.2约定 ##
+
+1. 传输编码统一为utf-8
+2. RSA 加密算法为本接口采用的非对称加密算法,`SIGN_ALGORITHMS ="SHA1WithRSA"`;
+3. RSA公钥由本系统提供,本系统返回信息的签名数据,第三方系统得到后通过公钥校验算法,验证返回数据的合法性
+4. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
+5. 具体签名生成参考后面的签名章节
+6. retcode等于0表示成功,非0表示失败,失败具体信息查看retmsg
+
+## 1.3 流程、数据交互 ##
+
+
+
+
+## 2.1 易支付Web网关统一支付接口 ##
+
+**请求URL:**
+
+- `https://ip:port/webgate/unifiedorder`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|notify_url|String|否| 易支付主动通知商户里指定的http地址|
+|return_url|String|否| 当易支付处理完毕后当前页面跳转到商户网站指定的http路径|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+|out_trade_no|String|是|商户网站的唯一订单号,(确保商户系统中唯一)|
+|out_trade_name|String|是|交易名称|
+|total_amount|String|是|订单金额(rmb),单位分|
+|remark|String|否|备注信息|
+|netid|String|是|用户唯一标识NetID|
+|openid|String|否|微信支付需要传入用户的openid|
+
+
+**请求内容示例:**
+```html
+URI:https://ip:port/webgate/unifiedorder
+
+partner_id:10001
+notify_url:http://***.nyu.net/receive_notify.htm
+return_url:http://***.nyu.net/receive_return.htm
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+out_trade_no:2016062115020100000001
+out_trade_name:***缴费
+total_amount:20000
+remark:donate
+netid:ss999
+openid:oW_0ystmvku==
+```
+
+----------
+
+- 注意:
+
+1.此接口只支持 https请求;
+2.请按照“签名机制”中的签名方法对输入参数进行签名,该接口请求才能够被本系统接收;
+3.此接口支持重复调用,前提是交易基本信息(订单号、交易金额等)在多次调用中保持一致,且交易尚未完成支付。
+
+----------
+
+
+## 2.2 易支付页面跳转同步通知参数说明 ##
+
+**含义:**
+
+易支付对商户的请求数据处理完成后,会将处理的结果数据通过系统程序控制客户
+端页面自动跳转的方式通知给商户网站。这些处理结果数据就是页面跳转同步通知
+参数。
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|is_success|String|是 |表示接口调用是否成功,并不表明业务处理结果。成功:T、失败:F) |
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:RSA|
+|out_trade_no|String|是|商户网站的唯一订单号,(确保商户系统中唯一)|
+|out_channel_trade_no|String|是|第三方支付渠道的唯一流水号|
+|trade_no|String|是|易支付流水号|
+|trade_status|String|是|交易状态,成功:TRADE_FINISHED、失败:TRADE_FAIL|
+|total_amount|String|是|订单金额(rmb),单位分|
+|out_channel|String|是|支付渠道,(alipay、wechat、ips)|
+|remark|String|否|备注信息|
+
+
+**请求内容示例:**
+```html
+URI:http://***.nyu.net/receive_return.htm
+
+is_success:T
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:RSA
+out_trade_no:2016062115020100000001
+out_channel_trade_no:2016062115020112903920
+trade_no:2016062115020100000002
+trade_status:TRADE_FINISHED
+total_amount:20000
+out_channel:alipay
+remark:donate
+```
+
+----------
+
+- 注意:
+
+1. 请按照“签名机制”中的签名方法对输入参数进行签名,该接口请求才能够被本系统接收;
+1. 买家在支付成功后会看到一个易支付提示交易成功的页面,该页面会停留几秒,然后会自动跳转回商户指定的同步通知页面(参数 return_url),如果return_url为空则不跳转。
+1. 该方式仅仅在买家付款完成以后进行自动跳转,因此只会进行一次。
+2. 设置页面跳转同步通知页面(return_url)的路径时,不要在页面文件的后面再加上自定义参数
+----------
+
+
+## 2.3 易支付服务器异步通知参数说明 ##
+
+**含义:**
+
+易支付对商户的请求数据处理完成后,会将处理的结果数据通过服务器主动通知的方式通知给商户网站。这些处理结果数据就是服务器异步通知参数。
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|notify_time|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:RSA|
+|out_trade_no|String|是|商户网站的唯一订单号,(确保商户系统中唯一)|
+|out_channel_trade_no|String|是|第三方支付渠道的唯一流水号|
+|trade_no|String|是|易支付流水号|
+|pay_time|String|是|交易完成时间|
+|trade_status|String|是|交易状态,成功:TRADE_FINISHED、失败:TRADE_FAIL|
+|total_amount|String|是|订单金额(rmb),单位分|
+|out_channel|String|是|支付渠道,(alipay、wechat、ips)|
+|remark|String|否|备注信息|
+
+
+**请求内容示例:**
+```html
+URI:http://***.nyu.net/receive_notify.htm
+
+notify_time:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:RSA
+out_trade_no:2016062115020100000001
+out_channel_trade_no:2016062115020112903920
+trade_no:2016062115020100000002
+pay_time:20150119130901
+trade_status:TRADE_FINISHED
+total_amount:20000
+out_channel:alipay
+remark:donate
+```
+
+----------
+
+- 注意:
+
+1. 请按照“签名机制”中的签名方法对输入参数进行签名,该接口请求才能够被本系统接收;
+2. 必须保证服务器异步通知页面(notify_url)上无任何字符,如空格、HTML标签、开发系统自带抛出的异常提示信息等;
+3. 第一次交易状态改变(即时到账中此时交易状态是交易完成)时,不仅页面跳转同步通知页面会启用,而且服务器异步通知页面也会收到易支付发来的处理结果通知
+4. 程序执行完后必须打印输出success,否则本系统认为回调失败,会继续回调,直到次数限制。
+----------
+
+## 2.4 易支付Web查询订单 ##
+
+**请求URL:**
+
+- `https://ip:port/epay/webgate/orderquery`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|pageno|String|否| 页码,默认1|
+|pagesize|String|否| 每页行数,默认10,范围10-500|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+|out_trade_no|String|二选一|商户网站的唯一订单号,单条查询(确保商户系统中唯一)|
+|order_date|String|否|查询日期,日对账批量查询时使用|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epay/webgate/orderquery
+
+partner_id:10001
+pageno:1
+pagesize:10
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+out_trade_no:2016062115020100000001
+```
+
+
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode": "0",
+ "retmsg": "查询成功",
+ "data": null,
+ "page": {
+ "totalCount": 1,
+ "pageSize": 10,
+ "pageNo": 1,
+ "list": [
+ {
+ "trade_no": "2016062115020100000002",
+ "out_trade_no": "2016062115020100000001",
+ "out_channel_trade_no":"2016062115020112903920",
+ "pay_time": "20150119130901",
+ "trade_status": "TRADE_FINISHED",
+ "total_amount": "20000",
+ "out_channel": "alipay",
+ "remark": "donate",
+
+ }
+ ],
+ "firstResult": 0,
+ "firstPage": true,
+ "lastPage": true,
+ "nextPage": 1,
+ "totalPage": 1,
+ "prePage": 1
+ }
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"查询失败"
+
+```
+
+----------
+
+- 注意:
+
+1.此接口只支持 https请求;
+2.请按照“签名机制”中的签名方法对输入参数进行签名,该接口请求才能够被本系统接收;
+
+----------
+
+
+
+## 附录A-用户请求HMAC签名算法 ##
+
+
+- 签名方式:`hmac-sha1`
+
+- 签名密钥由本系统统一线下提供
+
+
+- **签名校验的通用步骤如下:**
+
+ **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+> 假设传送的参数如下:
+
+
+```
+ partner_id:10000
+ stuempno:09893092
+ tradeno:20160607000001
+ trandename:printfee
+ amount:2000
+ timestamp:20150119130901
+ sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+ sign_method:HMAC
+```
+> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+
+
+```
+ amount=2000&partner_id=10000&sign_method=HMAC&stuempno=09893092
+ ×tamp=20150119130901&tradeno=20160607000001&trandename=printfee
+```
+
+ **特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+ **第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。
+
+
+## 附录B-服务端返回数据RSA签名校验算法 ##
+
+- 签名方式:`SHA1withRSA`
+- 签名校验的公钥key为本系统统一线下提供。
+
+- **签名校验的通用步骤如下:**
+
+**第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+**特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+
+**第二步,**对sign值进行base64解码,用本系统提供的公钥key对sign签名值解码后的数据基于stringA字符串,进行SHA1withRSA签名验证
+
+> 举例:
+
+
+假设传送的参数如下:
+```
+retcode:1
+retmsg:账户余额不足
+timestamp:20160513155100
+sign_mehtod:RSA
+```
+
+对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+```
+retcode=1&retmsg=账户余额不足×tamp=20160513155100&sign_mehtod=RSA
+```
diff --git "a/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-\347\272\275\345\244\247\347\273\237\344\270\200\346\224\257\344\273\230.pdf" "b/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-\347\272\275\345\244\247\347\273\237\344\270\200\346\224\257\344\273\230.pdf"
new file mode 100644
index 0000000..ea77c95
--- /dev/null
+++ "b/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-\347\272\275\345\244\247\347\273\237\344\270\200\346\224\257\344\273\230.pdf"
Binary files differ
diff --git "a/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-\347\272\275\345\244\247\351\200\232\347\224\250\346\224\257\344\273\230.md" "b/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-\347\272\275\345\244\247\351\200\232\347\224\250\346\224\257\344\273\230.md"
new file mode 100644
index 0000000..ba1d2b4
--- /dev/null
+++ "b/source/_posts/\346\230\223\346\224\257\344\273\230Web\347\275\221\345\205\263\346\216\245\345\217\243\346\226\207\346\241\243-\347\272\275\345\244\247\351\200\232\347\224\250\346\224\257\344\273\230.md"
@@ -0,0 +1,382 @@
+---
+title: 易支付Web网关接口文档-纽大统一支付
+date: 2019-08-29
+tags:
+
+---
+
+## 1.1文档说明 ##
+
+本文档用于描述了一卡通易支付系统作为统一支付通道提供纽约大学第三方支付网关接口文档,供第三方系统接入对接参考。
+
+## 1.2约定 ##
+
+1. 传输编码统一为utf-8
+2. RSA 加密算法为本接口采用的非对称加密算法,`SIGN_ALGORITHMS ="SHA1WithRSA"`;
+3. RSA公钥由本系统提供,本系统返回信息的签名数据,第三方系统得到后通过公钥校验算法,验证返回数据的合法性
+4. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
+5. 具体签名生成参考后面的签名章节
+6. retcode等于0表示成功,非0表示失败,失败具体信息查看retmsg
+
+## 1.3 流程、数据交互 ##
+
+
+
+## 2.1 易支付Web网关统一支付接口 ##
+
+**请求URL:**
+
+- `https://ip:port/webgate/unifiedorder`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|notify_url|String|否| 易支付主动通知商户里指定的http地址|
+|return_url|String|否| 当易支付处理完毕后当前页面跳转到商户网站指定的http路径|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+|out_trade_no|String|是|商户网站的唯一订单号,(确保商户系统中唯一)|
+|out_trade_name|String|是|交易名称|
+|total_amount|String|是|订单金额(rmb),单位分|
+|remark|String|否|备注信息|
+|netid|String|是|用户唯一标识NetID|
+|openid|String|否|微信支付需要传入用户的openid|
+
+
+**请求内容示例:**
+```html
+URI:https://ip:port/webgate/unifiedorder
+
+partner_id:10001
+notify_url:http://***.nyu.net/receive_notify.htm
+return_url:http://***.nyu.net/receive_return.htm
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+out_trade_no:2016062115020100000001
+out_trade_name:***缴费
+total_amount:20000
+remark:donate
+netid:ss999
+openid:oW_0ystmvku==
+```
+
+----------
+
+- 注意:
+
+1.此接口只支持 https请求;
+2.请按照“签名机制”中的签名方法对输入参数进行签名,该接口请求才能够被本系统接收;
+3.此接口支持重复调用,前提是交易基本信息(订单号、交易金额等)在多次调用中保持一致,且交易尚未完成支付。
+
+----------
+
+
+## 2.2 易支付页面跳转同步通知参数说明 ##
+
+**含义:**
+
+易支付对商户的请求数据处理完成后,会将处理的结果数据通过系统程序控制客户
+端页面自动跳转的方式通知给商户网站。这些处理结果数据就是页面跳转同步通知
+参数。
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|is_success|String|是 |表示接口调用是否成功,并不表明业务处理结果。成功:T、失败:F) |
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:RSA|
+|out_trade_no|String|是|商户网站的唯一订单号,(确保商户系统中唯一)|
+|out_channel_trade_no|String|是|第三方支付渠道的唯一流水号|
+|trade_no|String|是|易支付流水号|
+|trade_status|String|是|交易状态,成功:TRADE_FINISHED、失败:TRADE_FAIL|
+|total_amount|String|是|订单金额(rmb),单位分|
+|out_channel|String|是|支付渠道,(alipay、wechat、ips)|
+|remark|String|否|备注信息|
+
+
+**请求内容示例:**
+```html
+URI:http://***.nyu.net/receive_return.htm
+
+is_success:T
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:RSA
+out_trade_no:2016062115020100000001
+out_channel_trade_no:2016062115020112903920
+trade_no:2016062115020100000002
+trade_status:TRADE_FINISHED
+total_amount:20000
+out_channel:alipay
+remark:donate
+```
+
+----------
+
+- 注意:
+
+1. 请按照“签名机制”中的签名方法对输入参数进行签名,该接口请求才能够被本系统接收;
+1. 买家在支付成功后会看到一个易支付提示交易成功的页面,该页面会停留几秒,然后会自动跳转回商户指定的同步通知页面(参数 return_url),如果return_url为空则不跳转。
+1. 该方式仅仅在买家付款完成以后进行自动跳转,因此只会进行一次。
+2. 设置页面跳转同步通知页面(return_url)的路径时,不要在页面文件的后面再加上自定义参数
+----------
+
+
+## 2.3 易支付服务器异步通知参数说明 ##
+
+**含义:**
+
+易支付对商户的请求数据处理完成后,会将处理的结果数据通过服务器主动通知的方式通知给商户网站。这些处理结果数据就是服务器异步通知参数。
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|notify_time|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:RSA|
+|out_trade_no|String|是|商户网站的唯一订单号,(确保商户系统中唯一)|
+|out_channel_trade_no|String|是|第三方支付渠道的唯一流水号|
+|trade_no|String|是|易支付流水号|
+|pay_time|String|是|交易完成时间|
+|trade_status|String|是|交易状态,成功:TRADE_FINISHED、失败:TRADE_FAIL|
+|total_amount|String|是|订单金额(rmb),单位分|
+|out_channel|String|是|支付渠道,(alipay、wechat、ips)|
+|remark|String|否|备注信息|
+
+
+**请求内容示例:**
+```html
+URI:http://***.nyu.net/receive_notify.htm
+
+notify_time:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:RSA
+out_trade_no:2016062115020100000001
+out_channel_trade_no:2016062115020112903920
+trade_no:2016062115020100000002
+pay_time:20150119130901
+trade_status:TRADE_FINISHED
+total_amount:20000
+out_channel:alipay
+remark:donate
+```
+
+----------
+
+- 注意:
+
+1. 请按照“签名机制”中的签名方法对输入参数进行签名,该接口请求才能够被本系统接收;
+2. 必须保证服务器异步通知页面(notify_url)上无任何字符,如空格、HTML标签、开发系统自带抛出的异常提示信息等;
+3. 第一次交易状态改变(即时到账中此时交易状态是交易完成)时,不仅页面跳转同步通知页面会启用,而且服务器异步通知页面也会收到易支付发来的处理结果通知
+4. 程序执行完后必须打印输出success,否则本系统认为回调失败,会继续回调,直到次数限制。
+----------
+
+## 2.4 易支付Web查询订单 ##
+
+**请求URL:**
+
+- `https://ip:port/epay/webgate/orderquery`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|pageno|String|否| 页码,默认1|
+|pagesize|String|否| 每页行数,默认10,范围10-500|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名,参见附录|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+|out_trade_no|String|二选一|商户网站的唯一订单号,单条查询(确保商户系统中唯一)|
+|order_date|String|否|查询日期,日对账批量查询时使用|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epay/webgate/orderquery
+
+partner_id:10001
+pageno:1
+pagesize:10
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+out_trade_no:2016062115020100000001
+```
+
+
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode": "0",
+ "retmsg": "查询成功",
+ "data": null,
+ "page": {
+ "totalCount": 1,
+ "pageSize": 10,
+ "pageNo": 1,
+ "list": [
+ {
+ "trade_no": "2016062115020100000002",
+ "out_trade_no": "2016062115020100000001",
+ "out_channel_trade_no":"2016062115020112903920",
+ "pay_time": "20150119130901",
+ "trade_status": "TRADE_FINISHED",
+ "total_amount": "20000",
+ "out_channel": "alipay",
+ "remark": "donate",
+
+ }
+ ],
+ "firstResult": 0,
+ "firstPage": true,
+ "lastPage": true,
+ "nextPage": 1,
+ "totalPage": 1,
+ "prePage": 1
+ }
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"查询失败"
+
+```
+
+----------
+
+- 注意:
+
+1.此接口只支持 https请求;
+2.请按照“签名机制”中的签名方法对输入参数进行签名,该接口请求才能够被本系统接收;
+
+----------
+
+
+
+## 附录A-用户请求HMAC签名算法 ##
+
+
+- 签名方式:`hmac-sha1`
+
+- 签名密钥由本系统统一线下提供
+
+
+- **签名校验的通用步骤如下:**
+
+ **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+> 假设传送的参数如下:
+
+
+```
+ partner_id:10000
+ stuempno:09893092
+ tradeno:20160607000001
+ trandename:printfee
+ amount:2000
+ timestamp:20150119130901
+ sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+ sign_method:HMAC
+```
+> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+
+
+```
+ amount=2000&partner_id=10000&sign_method=HMAC&stuempno=09893092
+ ×tamp=20150119130901&tradeno=20160607000001&trandename=printfee
+```
+
+ **特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+ **第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。
+
+
+## 附录B-服务端返回数据RSA签名校验算法 ##
+
+- 签名方式:`SHA1withRSA`
+- 签名校验的公钥key为本系统统一线下提供。
+
+- **签名校验的通用步骤如下:**
+
+**第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+**特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+
+**第二步,**对sign值进行base64解码,用本系统提供的公钥key对sign签名值解码后的数据基于stringA字符串,进行SHA1withRSA签名验证
+
+> 举例:
+
+
+假设传送的参数如下:
+```
+retcode:1
+retmsg:账户余额不足
+timestamp:20160513155100
+sign_mehtod:RSA
+```
+
+对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+```
+retcode=1&retmsg=账户余额不足×tamp=20160513155100&sign_mehtod=RSA
+```
diff --git "a/source/_posts/\351\207\215\345\272\206\351\225\277\346\261\237\345\270\210\350\214\203\346\260\264\346\216\247\345\257\271\346\216\245\346\216\245\345\217\243.md" "b/source/_posts/\351\207\215\345\272\206\351\225\277\346\261\237\345\270\210\350\214\203\346\260\264\346\216\247\345\257\271\346\216\245\346\216\245\345\217\243.md"
new file mode 100644
index 0000000..588f14f
--- /dev/null
+++ "b/source/_posts/\351\207\215\345\272\206\351\225\277\346\261\237\345\270\210\350\214\203\346\260\264\346\216\247\345\257\271\346\216\245\346\216\245\345\217\243.md"
@@ -0,0 +1,599 @@
+<!-- TITLE: 重庆长江师范水控对接接口 -->
+<!-- SUBTITLE: A quick summary of 重庆长江师范水控对接接口 -->
+
+
+# 重庆长江师范学院水控对接接口
+
+## 1.1文档说明 ##
+
+本文档用于描述了重庆长江师范学院水控对接接口api文档,供水控厂商对接参考。
+
+## 1.2约定 ##
+
+1. 传输编码统一为utf-8
+2. RSA 加密算法为本接口采用的非对称加密算法,`SIGN_ALGORITHMS ="SHA1WithRSA"`;
+3. RSA公钥由本系统提供,本系统返回信息的签名数据,第三方系统得到后通过公钥校验算法,验证返回数据的合法性
+4. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
+5. 具体签名生成参考后面的签名章节
+6. retcode等于0表示成功,非0表示失败,失败具体信息查看retmsg
+7. 密码加密的原始串为timestamp:pwd
+
+
+## 2.1 账户查询 ##
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/accountquery`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|cardphyid|String|二选一|查询对象的卡物理id|
+|stuempno|String|二选一| 查询对象的学号|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/accountquery
+
+partner_id:10000
+stuempno:09893092
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"query success",
+ "stuempno":"09893092",
+ "username":"王二小",
+ "balance":4850,
+ "cardno":103920299,
+ "status":"normal",
+ "timestamp":"20160606150902",
+ "sign":"hjAtBGygGjFyOKEZmWdxi1tk51/xqLYTr5tm2+zQVfD1RHRzGVC9GNm4ZaXnUsHnu5o3kAZ4U32m0YNiSFpncs0pl1AnnCf1n2hhn39ruABsvD//GzkEINHjyHsnxBr44G2UhyNxplUj+s7s0a7ggjbiMk+BYC3u7VkU9/l+kZOTkEyqs+wZKumfByMZGvKVkY2c2Nr67RaSWd7bsfOJ6HYw2spvu3ptAo2RTrfCxZ0Kn5DcSDm4cagzPMZSHxB8isqqNGrdUaAU0wzzC7704iA5zze//SvCqpCJfYt0OrHOiJEN5kw1d4KESrKGMG6bezlXzAp0LbNlhl+HwZJcag==",
+ "sign_method": "RSA"
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"account not exsit",
+ "timestamp":"20160606150902",
+ "sign": "hjAtBGygGjFyOKEZmWdxi1tk51/xqLYTr5tm2+zQVfD1RHRzGVC9GNm4ZaXnUsHnu5o3kAZ4U32m0YNiSFpncs0pl1AnnCf1n2hhn39ruABsvD//GzkEINHjyHsnxBr44G2UhyNxplUj+s7s0a7ggjbiMk+BYC3u7VkU9/l+kZOTkEyqs+wZKumfByMZGvKVkY2c2Nr67RaSWd7bsfOJ6HYw2spvu3ptAo2RTrfCxZ0Kn5DcSDm4cagzPMZSHxB8isqqNGrdUaAU0wzzC7704iA5zze//SvCqpCJfYt0OrHOiJEN5kw1d4KESrKGMG6bezlXzAp0LbNlhl+HwZJcag==",
+ "sign_method":"RSA"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|stuempno|String|学号|
+|username|String|姓名|
+|balance|Integer|余额(分)|
+|cardno|Integer|卡号|
+|status|String|状态(正常)|
+
+
+
+
+## 2.2 扣款接口 ##
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/pay`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|stuempno|String|是| 发起消费对象的学号|
+|tradeno|String(32)|是|第三方系统唯一流水号|
+|tradename|String(60)|是|交易名称|
+|amount|Integer|是|消费金额(分)|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/pay
+
+partner_id:10000
+stuempno:09893092
+tradeno:20160607000001
+trandename:print fee
+amount:2000
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"success"
+ "tradeno":"20160607000001",
+ "balance":4850,
+ "refno":"20160605190200000001",
+ "timestamp":"20160606150902",
+ "sign":"hjAtBGygGjFyOKEZmWdxi1tk51/xqLYTr5tm2+zQVfD1RHRzGVC9GNm4ZaXnUsHnu5o3kAZ4U32m0YNiSFpncs0pl1AnnCf1n2hhn39ruABsvD//GzkEINHjyHsnxBr44G2UhyNxplUj+s7s0a7ggjbiMk+BYC3u7VkU9/l+kZOTkEyqs+wZKumfByMZGvKVkY2c2Nr67RaSWd7bsfOJ6HYw2spvu3ptAo2RTrfCxZ0Kn5DcSDm4cagzPMZSHxB8isqqNGrdUaAU0wzzC7704iA5zze//SvCqpCJfYt0OrHOiJEN5kw1d4KESrKGMG6bezlXzAp0LbNlhl+HwZJcag==",
+ "sign_method": "RSA"
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"账户余额不足",
+ "tradeno":"20160607000001",
+ "timestamp":"20160606150902",
+ "sign": "hjAtBGygGjFyOKEZmWdxi1tk51/xqLYTr5tm2+zQVfD1RHRzGVC9GNm4ZaXnUsHnu5o3kAZ4U32m0YNiSFpncs0pl1AnnCf1n2hhn39ruABsvD//GzkEINHjyHsnxBr44G2UhyNxplUj+s7s0a7ggjbiMk+BYC3u7VkU9/l+kZOTkEyqs+wZKumfByMZGvKVkY2c2Nr67RaSWd7bsfOJ6HYw2spvu3ptAo2RTrfCxZ0Kn5DcSDm4cagzPMZSHxB8isqqNGrdUaAU0wzzC7704iA5zze//SvCqpCJfYt0OrHOiJEN5kw1d4KESrKGMG6bezlXzAp0LbNlhl+HwZJcag==",
+ "sign_method":"RSA"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|tradeno|String|第三方流水号|
+|refno|String|本系统生成流水号|
+|balance|Integer|余额(分)|
+
+
+## 2.3 扣款流水查询
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/payquery`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|stuempno|String|是| 发起消费对象的学号|
+|tradeno|String(32)|是|第三方系统唯一流水号|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/payquery
+
+partner_id:10000
+stuempno:09893092
+tradeno:20160607000001
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"success"
+ "tradeno":"20160607000001",
+ "balance":4850,
+ "refno":"20160605190200000001",
+ "tradestatus": "success",
+ "paytime":"20160606150902",
+ "timestamp":"20160606150902",
+ "sign":"hjAtBGygGjFyOKEZmWdxi1tk51/xqLYTr5tm2+zQVfD1RHRzGVC9GNm4ZaXnUsHnu5o3kAZ4U32m0YNiSFpncs0pl1AnnCf1n2hhn39ruABsvD//GzkEINHjyHsnxBr44G2UhyNxplUj+s7s0a7ggjbiMk+BYC3u7VkU9/l+kZOTkEyqs+wZKumfByMZGvKVkY2c2Nr67RaSWd7bsfOJ6HYw2spvu3ptAo2RTrfCxZ0Kn5DcSDm4cagzPMZSHxB8isqqNGrdUaAU0wzzC7704iA5zze//SvCqpCJfYt0OrHOiJEN5kw1d4KESrKGMG6bezlXzAp0LbNlhl+HwZJcag==",
+ "sign_method": "RSA"
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"成功",
+ "tradestatus": "fail",
+ "tradeno":"20160607000001",
+ "timestamp":"20160606150902",
+ "sign": "hjAtBGygGjFyOKEZmWdxi1tk51/xqLYTr5tm2+zQVfD1RHRzGVC9GNm4ZaXnUsHnu5o3kAZ4U32m0YNiSFpncs0pl1AnnCf1n2hhn39ruABsvD//GzkEINHjyHsnxBr44G2UhyNxplUj+s7s0a7ggjbiMk+BYC3u7VkU9/l+kZOTkEyqs+wZKumfByMZGvKVkY2c2Nr67RaSWd7bsfOJ6HYw2spvu3ptAo2RTrfCxZ0Kn5DcSDm4cagzPMZSHxB8isqqNGrdUaAU0wzzC7704iA5zze//SvCqpCJfYt0OrHOiJEN5kw1d4KESrKGMG6bezlXzAp0LbNlhl+HwZJcag==",
+ "sign_method":"RSA"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,1 - 流水不存在)|
+|retmsg|String|返回消息|
+|tradeno|String|第三方流水号|
+|refno|String|本系统生成流水号|
+|tradestatus|String|交易状态, success - 成功,fail - 失败 |
+|paytime|String|支付时间,交易成功才会返回 |
+|balance|Integer|余额(分)|
+
+## 2.4 交易明细下载
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/query_bill_list`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|accdate|String|是| 账单日期 |
+|pageno|String|否| 页码,默认1|
+|pagesize|String|否| 每页行数,默认10,范围10-500|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是| HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/query_bill_list
+
+partner_id:10000
+accdate:20190701
+pageno:1
+pagesize:10
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode": "0",
+ "retmsg": "查询成功",
+ "data": {
+ "totalCount": 11,
+ "pageSize": 10,
+ "pageNo": 1,
+ "list": [
+ {
+ "refno": "20170809160440168058",
+ "tradeno": "20170809160440168058",
+ "paytime": "20170809160449",
+ "billname": "IC卡消费",
+ "amount": 1,
+ "billtype": "联机刷卡消费",
+ "billstatus": 2,
+ "tradetype": "2",
+ "tradecode": "6630",
+ "termname":"第一食堂POS机1",
+ "aftbal": 65.21
+ },
+ {
+ "refno": "20170809103401168050",
+ "tradeno": "20170809103401168050",
+ "paytime": "20170809103413",
+ "billname": "IC卡消费",
+ "amount": 1,
+ "billtype": "联机刷卡消费",
+ "billstatus": 2,
+ "tradetype": "2",
+ "tradecode": "6630",
+ "termname":"第一食堂POS机3",
+ "aftbal": 66.21
+ },
+ {
+ "refno": "20170809101226168047",
+ "tradeno": "20170809101226168047",
+ "paytime": "20170809101238",
+ "billname": "IC卡消费",
+ "amount": 1,
+ "billtype": "联机刷卡消费",
+ "billstatus": 2,
+ "tradetype": "2",
+ "tradecode": "6630",
+ "termname":"第一食堂POS机2",
+ "aftbal": 67.21
+ },
+ {
+ "refno": "20170809101217168046",
+ "tradeno": "20170809101217168046",
+ "paytime": "20170809101229",
+ "billname": "IC卡消费",
+ "amount": 1,
+ "billtype": "联机刷卡消费",
+ "billstatus": 2,
+ "tradetype": "2",
+ "tradecode": "6630",
+ "termname":"第一食堂POS机1",
+ "aftbal": 68.21
+ },
+ {
+ "refno": "20170809100854168045",
+ "tradeno": "20170809100854168045",
+ "paytime": "20170809100905",
+ "billname": "IC卡消费",
+ "amount": 1,
+ "billtype": "联机刷卡消费",
+ "billstatus": 2,
+ "tradetype": "2",
+ "tradecode": "6630",
+ "termname":"第一食堂POS机1",
+ "aftbal": 69.21
+ },
+ {
+ "refno": "20170809100845168043",
+ "tradeno": "20170809100845168043",
+ "paytime": "20170809100824",
+ "billname": "IC卡消费",
+ "amount": 1,
+ "billtype": "联机刷卡消费",
+ "billstatus": 2,
+ "tradetype": "2",
+ "tradecode": "6630",
+ "termname":"第一食堂POS机1",
+ "aftbal": 70.21
+ },
+ {
+ "refno": "20170809100845168044",
+ "tradeno": "20170809100845168044",
+ "paytime": "20170809100824",
+ "billname": "IC卡消费",
+ "amount": 1,
+ "billtype": "联机刷卡消费撤销",
+ "billstatus": 2,
+ "tradetype": "1",
+ "tradecode": "6632",
+ "termname":"第一食堂POS机1",
+ "aftbal": 71.21
+ },
+ {
+ "refno": "20170807145900002705",
+ "tradeno": "20170807145900002705",
+ "paytime": "20170807145958",
+ "billname": "现金充值",
+ "amount": 70,
+ "billtype": "钱包充值",
+ "billstatus": 2,
+ "tradetype": "1",
+ "tradecode": "6500",
+ "termname":"第一食堂充值机1",
+ "aftbal": 70.21
+ }
+ ],
+ "firstResult": 0,
+ "totalPage": 2,
+ "firstPage": true,
+ "lastPage": false,
+ "nextPage": 2,
+ "prePage": 1
+ }
+}
+```
+
+- 失败
+
+```json
+{
+ "retcode": "304",
+ "retmsg": "签名验证失败",
+ "data": null
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|data|list|流水明细集合|
+
+**流水明细说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+| refno |String|交易参考号|
+| tradeno |String|第三方交易流水号|
+| paytime|String|交易时间 yyyyMMddhh24miss|
+| billname|String |交易名称 |
+|amount|Double|交易金额(元)|
+|billtype|String|交易类型|
+|billstatus|String|状态 2-成功 3-失败|
+| tradetype |String|交易方向 1-充值 2-消费|
+|tradecode|String|交易码|
+|termname | String|终端名称|
+|aftbal|Double|交易后余额(元)|
+
+## 2.5 水控明细上传
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/yznu_water_record`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+用户ID、用水开始时间、用水结束时间、用水量、热水单价、实际消费金额等
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|tradeno|String|是|第三方系统唯一流水号, 主键唯一标识|
+|stuempno|String|是| 学工号|
+|start_time|String(32)|是|开始时间,格式 YYYYMMDDHHMISS, 例如 2018年9月8日15点7分34秒 表示为 20180908150734 |
+|end_time|String(32)|是|结束时间,格式同上|
+|volumn |String(32)|是|单位升|
+|unit_price |string(16)|是|-|
+|device_name| string(60)|是| 设备名称 |
+|pay_amount |integer|是|实际消费金额(单位分)|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+
+
+## 附录A-用户请求HMAC签名算法 ##
+
+
+- 签名方式:`hmac-sha1`
+
+- 签名密钥由本系统统一线下提供
+
+
+- **签名校验的通用步骤如下:**
+
+ **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+> 假设传送的参数如下:
+
+
+```
+ partner_id:10000
+ stuempno:09893092
+ tradeno:20160607000001
+ trandename:printfee
+ amount:2000
+ timestamp:20150119130901
+ sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+ sign_method:HMAC
+```
+> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+
+
+```
+ amount=2000&partner_id=10000&sign_method=HMAC&stuempno=09893092
+ ×tamp=20150119130901&tradeno=20160607000001&trandename=printfee
+```
+
+ **特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+ **第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。
+
+
+## 附录B-服务端返回数据RSA签名校验算法 ##
+
+- 签名方式:`SHA1withRSA`
+- 签名校验的公钥key为本系统统一线下提供。
+
+- **签名校验的通用步骤如下:**
+
+**第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+**特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+
+**第二步,**对sign值进行base64解码,用本系统提供的公钥key对sign签名值解码后的数据基于stringA字符串,进行SHA1withRSA签名验证
+
+> 举例:
+
+
+假设传送的参数如下:
+```
+retcode:1
+retmsg:账户余额不足
+timestamp:20160513155100
+sign_mehtod:RSA
+```
+
+对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+```
+retcode=1&retmsg=账户余额不足×tamp=20160513155100&sign_mehtod=RSA
+```
+
+
+
+
+
+
diff --git "a/source/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\350\272\253\344\273\275\350\257\206\345\210\253\346\216\245\345\217\243.md" "b/source/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\350\272\253\344\273\275\350\257\206\345\210\253\346\216\245\345\217\243.md"
new file mode 100644
index 0000000..f9d803f
--- /dev/null
+++ "b/source/\344\270\200\345\215\241\351\200\232v5\344\272\214\347\273\264\347\240\201\350\272\253\344\273\275\350\257\206\345\210\253\346\216\245\345\217\243.md"
@@ -0,0 +1,132 @@
+---
+title: 一卡通v5二维码身份识别接口
+date: 2018-10-14
+tags:
+
+---
+
+## 1.1文档说明 ##
+
+本文档用于描述了一卡通二维码身份识别接口,供第三方系统(前置和应用)对接参考。
+
+## 1.2约定 ##
+
+1. 传输编码统一为utf-8
+2. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
+3. 具体签名生成参考后面的签名章节
+4. retcode等于0表示成功,非0表示失败,失败具体信息查看retmsg
+
+
+## 2.1 二维码身份识别 ##
+
+**请求URL:**
+
+- `https://ip:port/epayapi/services/thirdparty/common/qrcodecertification`
+
+**请求方式/格式:**
+
+- POST
+- application/x-www-form-urlencoded
+
+**请求参数:**
+
+|参数名 | 类型 | 必选 | 说明 |
+|-----|------|-----|------|
+|partner_id|String|是 |本系统分配给各个接入应用的合作伙伴id号|
+|qrcode|String|是 |二维码|
+|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
+|sign|String|是| 签名|
+|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
+
+**请求内容示例:**
+```html
+URI:https://ip:port/epayapi/services/thirdparty/common/qrcodecertification
+
+partner_id:10000
+qrcode:GcS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiUSYrPCTzHH0cKkah0HFnr13ejXSL7vkAAQnuwXhoEwNZ11VsVslq95QxqCOisItFJnC1BTg7ZN23cIw1yYyeB2keMICo8FUDkpuUmEY=
+timestamp:20150119130901
+sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+sign_method:HMAC
+```
+
+**返回示例:**
+
+- 成功
+
+```json
+{
+ "retcode":"0",
+ "retmsg":"query success",
+ "stuempno":"09893092",
+ "expiredate":"20191010",
+ "sign_method":"HMAC",
+ "sign":"5195f9b9116e4adf67eeebc9935d33dc683f677d"
+}
+
+```
+
+- 失败
+
+```json
+{
+ "retcode":"1",
+ "retmsg":"account not exsit"
+}
+
+```
+
+**返回参数说明:**
+
+|参数名 | 类型 | 说明 |
+|-----|-----|------|
+|retcode|String|返回码(0=成功,其他为失败)|
+|retmsg|String|返回消息|
+|stuempno|String|学号|
+|expiredate|String|有效期|
+|sign|String|签名,与请求方式签名方式相同|
+
+## 附录A-用户请求HMAC签名算法 ##
+
+
+- 签名方式:`hmac-sha1`
+
+- 签名密钥由本系统统一线下提供
+
+
+- **签名校验的通用步骤如下:**
+
+ **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
+
+> 假设传送的参数如下:
+
+
+```
+ partner_id:10000
+ qrcode:cS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiU=
+ timestamp:20150119130901
+ sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
+ sign_method:HMAC
+```
+> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
+
+
+```
+ partner_id=10000&qrcode=cS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiU=
+ &sign_method=HMAC×tamp=20150119130901
+```
+
+ **特别注意以下重要规则:**
+
+
+- 参数名ASCII码从小到大排序(字典序);
+
+
+- 如果参数的值为空不参与签名;
+
+
+- 参数名区分大小写;
+
+
+- 传送的sign参数不参与签名,用该sign值作校验。
+
+ **第二步,**用密钥secretkey对stringA字符串,进行hmac-sha1签名,得到sign值signValue。signValue最后采用十六进制小写hex编码生成签名字符串。