t-comm
Version:
专业、稳定、纯粹的工具库
68 lines (66 loc) • 2.05 kB
JavaScript
/* eslint-disable @typescript-eslint/no-require-imports */
var URL_MAP = {
ACCESS_TOKEN: 'https://api.weixin.qq.com/cgi-bin/token',
TICKET: 'https://api.weixin.qq.com/cgi-bin/ticket/getticket'
};
var sha1 = function sha1(content) {
return require('crypto').createHash('sha1').update(content).digest('hex');
};
function getAccessToken(_a) {
var appId = _a.appId,
appSecret = _a.appSecret;
var axios = require('axios');
return new Promise(function (resolve, reject) {
axios({
url: "".concat(URL_MAP.ACCESS_TOKEN, "?grant_type=client_credential&appid=").concat(appId, "&secret=").concat(appSecret)
}).then(function (res) {
resolve(res.data || {});
})["catch"](function (err) {
reject(err);
});
});
}
function getAPITicket(accessToken) {
var axios = require('axios');
return new Promise(function (resolve, reject) {
axios({
url: "".concat(URL_MAP.TICKET, "?access_token=").concat(accessToken, "&type=jsapi")
}).then(function (res) {
if (res === void 0) {
res = {};
}
resolve(res.data || {});
})["catch"](function (err) {
reject(err);
});
});
}
function getNonceStr() {
var buf = require('crypto').randomBytes(12);
var hexToDec = buf.toString('hex');
return hexToDec;
}
/**
* 获取jsAPI签名
*
* 校验地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
*
* 文档地址:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html
* @param ticket 票据
* @param url 当前url,不包括#之后的部分
* @returns signature
*/
function genSignature(ticket, url) {
var timestamp = Math.floor(Date.now() / 1000);
var nonceStr = getNonceStr();
var list = ["jsapi_ticket=".concat(ticket), "noncestr=".concat(nonceStr), "timestamp=".concat(timestamp), "url=".concat(url)];
var str = list.join('&');
var signature = sha1(str);
return {
timestamp: timestamp,
nonceStr: nonceStr,
signature: signature,
url: url
};
}
export { genSignature, getAPITicket, getAccessToken };