UNPKG

wx-gzh

Version:
67 lines (57 loc) 1.43 kB
/* * @Description: 微信网页版 sdk 开发 * @Author: chtao * @Email: victoryct@163.com * @Github: https://github.com/LadyYang * @Date: 2020-06-05 15:58:35 * @LastEditors: chtao * @LastEditTime: 2020-08-02 09:07:01 * @FilePath: \wx-gzh\lib\sdk.ts */ import crypto from 'crypto'; import WeChat from '..'; function sha1(str: string) { return crypto.createHash('sha1').update(str, 'utf8').digest('hex'); } /** * 生成签名的时间戳 */ function createTimestamp() { return Math.floor(new Date().getTime() / 1000); } /** * 生成签名的随机串 */ function createNonceStr() { return Math.random().toString(36).substr(2, 15); } /** * 对参数对象进行字典排序 */ function raw(args: any) { const keys = Object.keys(args).sort(); const newArgs: any = {}; keys.forEach(function (key) { newArgs[key.toLowerCase()] = args[key]; }); let string = ''; for (const k in newArgs) { string += '&' + k + '=' + newArgs[k]; } string = string.substr(1); return string; } /** * JS-SDK使用权限签名算法 获取 signature */ export default function getSignature(this: WeChat, href: string) { var ret: any = { jsapi_ticket: this.ticket, nonceStr: createNonceStr(), timestamp: createTimestamp(), url: href, }; ret.signature = sha1(raw(ret)); ret.appId = this.appID; return ret; }