1. 程式人生 > >node js 微信公眾號,模板訊息開發測試

node js 微信公眾號,模板訊息開發測試

需要先確認下 有沒有 相關介面的呼叫許可權。



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;