wx-gzh
Version:
63 lines (62 loc) • 1.66 kB
JavaScript
;
/*
* @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
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var crypto_1 = __importDefault(require("crypto"));
function sha1(str) {
return crypto_1.default.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) {
var keys = Object.keys(args).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;
}
/**
* JS-SDK使用权限签名算法 获取 signature
*/
function getSignature(href) {
var ret = {
jsapi_ticket: this.ticket,
nonceStr: createNonceStr(),
timestamp: createTimestamp(),
url: href,
};
ret.signature = sha1(raw(ret));
ret.appId = this.appID;
return ret;
}
exports.default = getSignature;