const crypto = require("crypto")
const app = require("./app")
let gw = 'http://gw.open.1688.com/openapi'
module.exports = (code_arr, apiInfo) => {
//将token加入参数列表
code_arr.access_token = app.access_token
//将第一个签名因子 urlPath 加上 appkey
apiInfo += app.appKey
//构造第二个签名因子 排序
let aliParams = []
Object.keys(code_arr).forEach((val) => {
aliParams.push(val + code_arr[val])
})
aliParams.sort()
let sign_str = aliParams.join('')
// 得出要签名的字符串
sign_str = apiInfo + sign_str
//签名
let code_sign = (crypto.createHmac('sha1', app.appSecret).update(sign_str).digest('hex')).toUpperCase()
//得出url中的参数
let urlParams = ''
Object.keys(code_arr).forEach((val) => {
urlParams += `${val}=${code_arr[val]}&`
})
// 生成url
let url = `${gw}/${apiInfo}?${urlParams}_aop_signature=${code_sign}`
return url
}
code_arr 为入参,apiinfo为要请求的api接口