Dieser Artikel stellt hauptsächlich die relevanten Informationen vor, die von nodeJS WeChat geteilt werden. Ich hoffe, dass er allen helfen kann.
1. Greifen Sie auf WeChat JSSDK zu
Sie können es direkt zitieren oder lokal herunterladen
2 Anforderungsknoten-Hintergrundsignatur, Zufallszahl, Zeitstempel usw.
function getWxSignature() { $.ajax({ url: "/activityWxShaer", type: 'post', data: { urlhref:location.href }, success: function(jsons) { var data = JSON.parse(jsons); wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: 'xxxxxxxxx', // 必填,公众号的唯一标识 timestamp: data.timestamp, // 必填,生成签名的时间戳 nonceStr: data.nonceStr, // 必填,生成签名的随机串 signature: data.signature, // 必填,签名,见附录1 jsApiList: [ 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone' ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); shareFunc();// 微信的分享接口 里面为ready } }); }
3. NodeJS-Express-Routing
/** * 分享 */ router.post('/activityWxShaer', function(req, res, next) { let hrefURL = req.body.urlhref; wxShare.prototype.accessToken(hrefURL, function(data) { res.json(data); }); });
4. NodeJS-Signatur, WeChat-Schlüsselsignatur, Ich verwende sha1, ich habe viele davon mit sha-1, HEX gesehen Ich weiß nicht, ob es ein Problem mit meiner Umgebung ist. Ich konnte es nicht verwenden, also musste ich es selbst schreiben, der Hintergrund gibt die gekapselten Daten zurück.
/** * 签名 * @param {*} url */ sign(url) { let _this = this; var ret = { jsapi_ticket: configEnd.ticket, nonceStr: configEnd.nonceStr, timestamp: configEnd.timestamp, url: url }; var string = _this.rawString(ret); var shaObjs = sha1(string); return shaObjs; }; 四、nodeJS后台代码直接上整体代码 [javascript] view plain copy var url = require('url'); var request = require('request'); var sha1 = require('sha1'); let config = { appID: "",// 微信公众号ID appSecret: "" //微信公众号里有 }, configEnd = { appID: '', access_token: '', ticket: '', timestamp: '', // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '', // 必填,签名,见附录1 }; /** * 微信分享 */ class wxShare { /** * 请求获取access_token 方法入口 * @param {* URL链接} hrefURL * @param {* 回调请求方法} callback */ accessToken(hrefURL, callback) { // 获取access_token let _this = this; var tokenUrl = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + config.appID + '&secret=' + config.appSecret; request(tokenUrl, function(error, response, body) { if (response.statusCode && response.statusCode === 200) { body = JSON.parse(body); configEnd.access_token = body.access_token; _this.upJsapiTicket(hrefURL, body.access_token, callback) } }); }; /** * 获取<span style="font-family:Arial;">Jsapi_Ticket</span> * @param {* URL链接} hrefURL * @param {* token} access_Ttoken * @param {* 回调请求方法} callback */ upJsapiTicket(hrefURL, access_Ttoken, callback) { // Jsapi_ticket let _this = this; var ticketUrl = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=' + access_Ttoken + '&type=jsapi'; request(ticketUrl, function(err, response, content) { content = JSON.parse(content); if (content.errcode == 0) { configEnd.ticket = content.ticket; // ticket configEnd.timestamp = _this.createTimestamp(); // 时间戳 configEnd.nonceStr = _this.createNonceStr(); // 随机数 configEnd.signature = _this.sign(hrefURL); // 签名 callback && callback(configEnd); // 回调前端JS方法 } }) }; /** * 随机字符串 */ createNonceStr() { return Math.random().toString(36).substr(2, 15); }; /** * 时间戳 */ createTimestamp() { return parseInt(new Date().getTime() / 1000).toString(); }; /** * 拼接字符串 * @param {*} args */ rawString(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; }; /** * 签名 * @param {*} url */ sign(url) { let _this = this; var ret = { jsapi_ticket: configEnd.ticket, nonceStr: configEnd.nonceStr, timestamp: configEnd.timestamp, url: url }; var string = _this.rawString(ret); var shaObjs = sha1(string); return shaObjs; }; } module.exports = wxShare;
nodejs WeChat öffentlich Kontozahlungsentwicklung
Beispiel für Nodejs, der WebService aufruft
Das obige ist der detaillierte Inhalt vonNodeJS implementiert die gemeinsame Nutzung von WeChat-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!