参数签名
参数签名相关有三个基本参数,每个请求都需要附带,说明如下:
name | 意义 |
---|---|
appId | 基本参数 代理商的唯一id 需要申请 |
timeStamp | 基本参数 当前时间戳(毫秒数) 有效期10分钟 |
sign | 参数签名 |
sign生成算法 :
sign生成算法需要secretKey,该secretKey在开通appId时一并给到,请小心保存。
- 将请求中所有参数(包括appId、timeStamp和其他业务参数)按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。如果中文参数需要URL Encode,请使用URL Encode之前的值。
- 将
key=${secretKey}
拼接到stringA末尾,得到拼接好后的stringB。 - 将stringB全部转化为小写,得到stringC
- 对stringC进行MD5(注意字符编码为utf-8)加密,然后把加密结果的小写字母转化为大写字母,从而得到加密后的32位字符串(sign)。
示例:
请求:http://openapibeta.piaoniu.com/openapi/v2/tickets/batchDetails?ids=1000&appId=10000&timeStamp=1489756931881
secrectKey为iev7j3ttwgh8kwz
- 将
ids=1000&appId=10000&timeStamp=1489756931881
重新排序和拼接为stringA:appId=10000&ids=1000&timeStamp=1489756931881
- 将secretKey加到末尾,得到stringB
appId=10000&ids=1000&timeStamp=1489756931881&key=iev7j3ttwgh8kwz
- 将stringB全部转化为小写,得到stringC
appid=10000&ids=1000×tamp=1489756931881&key=iev7j3ttwgh8kwz
- 对stringC进行MD5加密并转为大写,得到sign=25F13FD81E314ECA7768B03F2E3D2AD2,最终请求为:
http://openapibeta.piaoniu.com/openapi/v2/tickets/batchDetails?ids=1000&appId=10000&timeStamp=1489756931881&sign=25F13FD81E314ECA7768B03F2E3D2AD2
注意点
签名易错点:
- 值在签名过程中值不需要转化成小写。 e.g. 身份证字段值中的idCard切勿转小写。