blob: 5b7a544f616549b51386e92a7ab313d1a61f938d [file] [log] [blame]
linqing.he2e2edb52021-04-25 15:24:19 +08001---
2title: 一卡通v5二维码身份识别接口
3date: 2018-10-14
4tags:
5
6---
7
8## 1.1文档说明 ##
9
10本文档用于描述了一卡通二维码身份识别接口,供第三方系统(前置和应用)对接参考。
11
12## 1.2约定 ##
13
141. 传输编码统一为utf-8
152. RSA 加密算法为本接口采用的非对称加密算法,`SIGN_ALGORITHMS ="SHA1WithRSA"`;
163. RSA公钥由本系统提供,本系统返回信息的签名数据,第三方系统得到后通过公钥校验算法,验证返回数据的合法性
174. HMAC加密算法为用户请求本系统采用的加密算法,`SIGN_ALGORITHMS ="HMAC-SHA1"`;
185. 具体签名生成参考后面的签名章节
196. retcode等于0表示成功,非0表示失败,失败具体信息查看retmsg
20
21
22## 2.1 二维码身份识别 ##
23
24**请求URL:**
25
26- `https://ip:port/epayapi/services/thirdparty/common/qrcodecertification`
27
28**请求方式/格式:**
29
30- POST
31- application/x-www-form-urlencoded
32
33**请求参数:**
34
35|参数名 | 类型 | 必选 | 说明 |
36|-----|------|-----|------|
37|partner_id|String|是      |本系统分配给各个接入应用的合作伙伴id号|
38|qrcode|String|是      |二维码|
39|timestamp|String|是|时间戳格式为yyyyMMddhh24miss|
40|sign|String|是| 签名|
41|sign_method|String|是|参数的加密方法选择,可选值是:HMAC 加密方式为HAMC-SHA1|
42
43**请求内容示例:**
44```html
45URI:https://ip:port/epayapi/services/thirdparty/common/qrcodecertification
46
47partner_id:10000
48qrcode:GcS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiUSYrPCTzHH0cKkah0HFnr13ejXSL7vkAAQnuwXhoEwNZ11VsVslq95QxqCOisItFJnC1BTg7ZN23cIw1yYyeB2keMICo8FUDkpuUmEY=
49timestamp:20150119130901
50sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
51sign_method:HMAC
52```
53
54**返回示例:**
55
56- 成功
57
58```json
59{
60 "retcode":"0",
61 "retmsg":"query success",
62 "stuempno":"09893092",
63 "expiredate":"20191010",
64 "sign_method":"HMAC",
65 “sign”:5195f9b9116e4adf67eeebc9935d33dc683f677d
66}
67
68```
69
70- 失败
71
72```json
73{
74 "retcode":"1",
75 "retmsg":"account not exsit"
76}
77
78```
79
80**返回参数说明:**
81
82|参数名 | 类型 | 说明 |
83|-----|-----|------|
84|retcode|String|返回码(0=成功,其他为失败)|
85|retmsg|String|返回消息|
86|stuempno|String|学号|
87|expiredate|String|有效期|
88|sign|String|签名,与请求方式签名方式相同|
89
90## 附录A-用户请求HMAC签名算法 ##
91
92
93- 签名方式:`hmac-sha1`
94
95- 签名密钥由本系统统一线下提供
96
97
98- **签名校验的通用步骤如下:**
99
100 **第一步,**设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA
101
102> 假设传送的参数如下:
103
104
105```
106 partner_id:10000
107 qrcode:cS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiUSYrPCTzHH0cKkah0HFnr13ejXSL7vkAAQnuwXhoEwNZ11VsVslq95QxqCOisItFJnC1BTg7ZN23cIw1yYyeB2keMICo8FUDkpuUmEY=
108 timestamp:20150119130901
109 sign:5195f9b9116e4adf67eeebc9935d33dc683f677d
110 sign_method:HMAC
111```
112> 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
113
114
115```
116 partner_id=10000&qrcode=cS2nsBRzhW72lQgcGdI6s64YSaaWnxlWtIiUSYrPCTzHH0cKkah0HFnr13ejXSL7vkAAQnuwXhoEwNZ11VsVslq95QxqCOisItFJnC1BTg7ZN23cIw1yYyeB2keMICo8FUDkpuUmEY=&sign_method=HMAC&timestamp=20150119130901
117```
118
119 **特别注意以下重要规则:**
120
121
122- 参数名ASCII码从小到大排序(字典序);
123
124
125- 如果参数的值为空不参与签名;
126
127
128- 参数名区分大小写;
129
130
131- 传送的sign参数不参与签名,用该sign值作校验。
132
133 **第二步,**用密钥secretkeystringA字符串,进行hmac-sha1签名,得到signsignValuesignValue最后采用十六进制小写hex编码生成签名字符串。