node js 微信公眾號,模板訊息開發測試
阿新 • • 發佈:2019-01-02
需要先確認下 有沒有 相關介面的呼叫許可權。
var Q = require('q'); var request = require('request'); var a = {}; var b = {}; //需要是服務號的 var APPID = 'wx232df512421'; var APPSECRET = 'a7c5cfa3d62f664d5fed'; var accesstoken = ''; var accesstoken_date; var expiretime = 0; var WeiXinTest = function () { _service.call(this); } Array.minus = function (a, b) { a.uniquelize().forEach(function (data, n) { if (!b.contains(data)) { return data; } else return null; }) }; Array.prototype.contains = function (obj) { var i = this.length; while (i--) { if (this[i] === obj) { return true; } } return false; } Array.prototype.uniquelize = function () { var ra = new Array(); for (var i = 0; i < this.length; i++) { if (!ra.contains(this[i])) { ra.push(this[i]); } } return ra; }; WeiXinTest.prototype.TestWeiXin = function (servicereq, callback) { var self = this; // GetWNUserList(function (err, result1) { // a = result1.data.openid; // GetWNUserList(function (err, result2) { // b = result2.data.openid; // var c = Array.minus(a, b); sendTemplateMessage(function (result3) { var aaaaaa = 0; }); // }); // }); } function userinfo (openid,cb) { getAccessToken(function (token) { var url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='+token+'&openid='+openid+'&lang=zh_CN'; getWebContent(url,'GET',null,cb); }); } function sendTemplateMessage(cb) { var today = new Date(); var current = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate(); var myopenid = 'oDmw3v1WxTPk3TNsEmZN_Ml2jlTM'; var msg = GetJSON(myopenid); getAccessToken(function (token) { var url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=' + token; getWebContent(url, 'POST', msg, cb); }); } function get_all_private_template(cb) { var self = this; getAccessToken(function (token) { var url = 'https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token=' + token; getWebContent(url, 'GET', null).then(function (result) { var aaaa = result; }); }); } function api_add_template(cb) { var self = this; getAccessToken(function (token) { var url = 'https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=' + token; var data = { "template_id_short": "TM00015123123123123123123123" }; getWebContent(url, 'POST', data, cb); }); } //oDmw3v1WxTPk3TNsEmZN_Ml2jlTM function GetWNUserList(callback) { var self = this; getAccessToken(function (token) { var url = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token=' + token; getWebContent(url, 'GET', null).then(function (result) { callback(null, result); }).catch(function (error) { callback(error); }); }); } function setindustry(cb) { var self = this; getAccessToken(function (token) { var url = 'https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token=' + token; var data = { "industry_id1": "1", "industry_id2": "2" }; getWebContent(url, 'POST', data, cb); }); } function getAccessToken(cb) { var uri = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&;appid=' + APPID + '&secret=' + APPSECRET; var date = new Date(); if (!accesstoken || (date - accesstoken_date) / 1000 >= expiretime + 1) { console.log('-----------no valid token'); //無accesstoken或者超時 getWebContent(uri, 'POST', null).then(function (result) { accesstoken = result.access_token; accesstoken_date = new Date(); expiretime = result.expires_in; cb(accesstoken); }).catch(function (err) { cb(null); }) } else { cb(accesstoken) } } function GetJSON(openid) { return { "touser": openid, "template_id": "NalzLqYJSyxMxyPN08SGLzAP2_cjkA", "url": 'www.baidu.com', "data": { "first": { "value": "老師,您好,test邀請您應標", "color": "#000" }, "keyword1": { "value": "\n佣金總數:\n工作地點:test", "color": "#173177" }, "keyword2": { "value": '兼職人員', "color": "#173177" }, "keyword3": { "value": '123123', "color": "#173177" }, "remark": { "value": "點選詳情檢視,<span style="font-family: Arial, Helvetica, sans-serif;">兼職人員</span>。", "color": "#000" } } }; } var getWebContent = function (uri, method, data, callback) { method = method || "POST"; var defer = Q.defer(); var requestdata = { "method": method, "uri": uri, "json": true }; if (data) { requestdata['body'] = data; requestdata['qs'] = data; } request(requestdata, function (error, response, body) { if (error) { console.log(error); defer.reject(error); } else { defer.resolve(body); } } ); return defer.promise.nodeify(callback); } function done(err, result) { if (err) console.log(err); } util.inherits(WeiXinTest, _service); module.exports = WeiXinTest;