推薦微信開(kāi)發(fā)入門(mén)教程: https://cnodejs.org/topic/59294bff9e32cc84569a746a
先說(shuō)一些微信開(kāi)發(fā)的特點(diǎn):
1.post請(qǐng)求
2.數(shù)據(jù)包是xml格式的
3.你給微信返回的數(shù)據(jù)也是xml格式的
coding吧
var parseString = require('xml2js').parseString;//引入xml2js包
/**
* 處理微信post消息請(qǐng)求
*/
router.post('/', function (req, res) {
try{
var buffer = [];
//監(jiān)聽(tīng) data 事件 用于接收數(shù)據(jù)
req.on('data', function (data) {
buffer.push(data);
});
//監(jiān)聽(tīng) end 事件 用于處理接收完成的數(shù)據(jù)
req.on('end', function () {
//輸出接收完成的數(shù)據(jù)
parseString(Buffer.concat(buffer).toString('utf-8'),{explicitArray : false},function(err,result){
if(err){
//打印錯(cuò)誤信息
console.log(err);
}else{
//打印解析結(jié)果
console.log(result);
result = result.xml;
var toUser = result.ToUserName; //接收方微信
var fromUser = result.FromUserName;//發(fā)送仿微信
if(result.Event==='subscribe'){
//回復(fù)消息
var xml=this.returntext(fromUser,toUser,'歡迎關(guān)注公眾號(hào),hahhh');
console.log(xml)
res.send(xml)
}else{
var xml=this.returntext(fromUser,toUser,'您好');
console.log(xml)
res.send(xml)
}
}
})
});
}catch(err){
console.log(err)
}
})
//回復(fù)文本消息
function returntext(toUser, fromUser, content){
var xmlContent = "<xml><ToUserName><![CDATA["+ toUser +"]]></ToUserName>";
xmlContent += "<FromUserName><![CDATA["+ fromUser +"]]></FromUserName>";
xmlContent += "<CreateTime>"+ new Date().getTime() +"</CreateTime>";
xmlContent += "<MsgType><![CDATA[text]]></MsgType>";
xmlContent += "<Content><![CDATA["+ content +"]]></Content></xml>";
return xmlContent;
}
微信開(kāi)發(fā)其實(shí)就是后臺(tái)開(kāi)發(fā),只是多了一些微信制定的條條框框,文檔都有說(shuō)明的。感覺(jué)微信開(kāi)發(fā)跟寫(xiě)前臺(tái)js一樣脂凶,事件驅(qū)動(dòng)诵盼。
多看文檔杯活,微信開(kāi)發(fā)多看文檔