修改合作伙伴签名的验证方式
This commit is contained in:
parent
a2de599f81
commit
946c3b2065
@ -7,7 +7,16 @@
|
||||
## 说明
|
||||
|
||||
1. 所有请求参数中带*号的不能为空
|
||||
2. 如无特殊说明, 所有接口返回json, 顶级结构如下, 接口Response的数据结构说明只包含data部分
|
||||
2. 接口签名字段说明
|
||||
|
||||
```
|
||||
# 1. 将参与签名的参数按照key=value的格式,并按照参数名ASCII字典序升序排序, 例如:
|
||||
var signStr = 'name=一品漫城&sid=65AB7856FE×tamp=1624332778169'
|
||||
# 2. 把我们提供的 secretKey(37284c327e10d8b73cf4325f33a3de4b34032e3e) 作为key, 使用HMAC-SHA256得到签名
|
||||
var sign = HmacSHA256(signStr, secretKey)
|
||||
|
||||
```
|
||||
3. 如无特殊说明, 所有接口返回json, 顶级结构如下, 接口Response的数据结构说明只包含data部分
|
||||
|
||||
``` JSON
|
||||
{
|
||||
@ -17,7 +26,7 @@
|
||||
}
|
||||
```
|
||||
|
||||
2. 页面列表
|
||||
4. 页面列表
|
||||
|
||||
> 所有的页面均可单独调用, url: https://puzzle-admin.kingsome.cn/页面url?token=token&mini=1
|
||||
> token为 1号接口获取
|
||||
@ -57,16 +66,7 @@
|
||||
| timestamp | *10或13位均可 |
|
||||
| sign | *签名 |
|
||||
|
||||
> 签名字段说明:
|
||||
>
|
||||
> 取name,sid, timestamp和我们提供的SecretKey字段拼接成 name=店铺名称&sid=店铺id:timestamp:SecretKey, 取该字符串的sha1
|
||||
|
||||
```js
|
||||
let signStr = `name=${name}&sid=${sid}:${timestamp}:${secretKey}`
|
||||
let sha1sum = crypto.createHash('sha1')
|
||||
sha1sum.update(signStr)
|
||||
let sign = sha1sum.digest('hex')
|
||||
```
|
||||
> 签名字段: name, sid, timestamp
|
||||
|
||||
|
||||
3. Response: JSON
|
||||
|
@ -27,8 +27,8 @@ class PartnerController extends BaseController {
|
||||
if (!name || !sid || !timestamp || !sign) {
|
||||
throw new ZError(10, '缺少必要参数')
|
||||
}
|
||||
const signKeys = ['name', 'sid']
|
||||
if (!checkSign({ secretKey: SECRET_KEY, data: req.params, timestamp, sign, signKeys })) {
|
||||
const signKeys = ['name', 'sid', 'timestamp']
|
||||
if (!checkSign({ secretKey: SECRET_KEY, data: req.params, sign, signKeys })) {
|
||||
throw new ZError(21, 'sign error')
|
||||
}
|
||||
sname = sname || name
|
||||
|
@ -30,6 +30,13 @@ export function sha1(str) {
|
||||
return str
|
||||
}
|
||||
|
||||
export function hmacSha256(str: string, key: any) {
|
||||
const md5sum = crypto.createHmac('sha256', key)
|
||||
md5sum.update(str)
|
||||
str = md5sum.digest('hex')
|
||||
return str
|
||||
}
|
||||
|
||||
export function md5(str) {
|
||||
const md5sum = crypto.createHash('md5')
|
||||
md5sum.update(str)
|
||||
@ -45,13 +52,11 @@ export function createSign(secretKey, paramStr, timestamp) {
|
||||
export function checkSign({
|
||||
secretKey,
|
||||
data,
|
||||
timestamp,
|
||||
sign,
|
||||
signKeys,
|
||||
}: {
|
||||
secretKey: string
|
||||
data: {}
|
||||
timestamp: string
|
||||
sign: string
|
||||
signKeys: string[]
|
||||
}) {
|
||||
@ -63,6 +68,6 @@ export function checkSign({
|
||||
}
|
||||
signStr += `${key}=${data[key]}`
|
||||
}
|
||||
let sign1 = createSign(secretKey, signStr, timestamp)
|
||||
let sign1 = hmacSha256(signStr, secretKey)
|
||||
return sign1 === sign
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user