1688开放平台API接口http请求链接生成代码nodejs版本

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接口