node生成签名
一:node生成签名
继上一偏文章,需要在 config 文件夹下新建 setSdk.js 文件代码看 3.
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。使用:
1. app.js里引入
const setSdk = require('./config/setSdk')2. 前台会post一个url给后台,只需要给setSdk传入前台post的url,并返回给前台就行
ctx.body = await setSdk(ctx.request.body.url)
3. setSdk.js 代码如下:
const config = require('./config') const fsObj = require('./fsObj') const sha1 = require('sha1') // 生成字符串 const getStr = () => { return Math.random().toString(36).substr(2, 15) } // 时间戳 const getTimestamp = () => { return parseInt(new Date().getTime() / 1000) + '' } // 排序 const raw = args => { var keys = Object.keys(args) keys = keys.sort() var newArgs = {} keys.forEach(function (key) { newArgs[key.toLowerCase()] = args[key] }) var string = '' for (var k in newArgs) { string += '&' + k + '=' + newArgs[k] } string = string.substr(1) return string } // 返回数据 module.exports = url => { return new Promise((resolve, reject) => { fsObj.read('ticket', res => { let ret = { jsapi_ticket: res.jsapi_ticket.ticket, nonceStr: getStr(), timestamp: getTimestamp(), url } let string1 = raw(ret) let sha1Str = sha1(string1) resolve({ appId: config.appId, timestamp: ret.timestamp, nonceStr: ret.nonceStr, signature: sha1Str }) }) }) }
二:前端
前端需要post给后端一个当前页面的url
let url = location.href.split('#')[0] $.ajax({ type: 'post', url: '接口地址', dataType: 'json', data: { url }, success: (res) => { // res是后台返回给前端的签名信息, // 用来匹配 wx.config //包括: // appId: res.appId, // timestamp: res.timestamp, // nonceStr: res.nonceStr, // signature: res.signature, } })

更多精彩