微信开发的特点:
1.post请求 (一定要注意,这里和配置域名的时候不一样,配置域名是get请求)
2.数据包是xml格式的
3.你给微信返回的数据也是xml格式的
var parseString = require(‘xml2js‘).parseString;//引入xml2js包 /** * 处理微信post消息请求 */ router.post(‘/‘, function (req, res) { try{ var buffer = []; //监听 data 事件 用于接收数据 req.on(‘data‘, function (data) { buffer.push(data); }); //监听 end 事件 用于处理接收完成的数据 req.on(‘end‘, function () { //输出接收完成的数据 parseString(Buffer.concat(buffer).toString(‘utf-8‘),{explicitArray : false},function(err,result){ if(err){ //打印错误信息 console.log(err); }else{ //打印解析结果 console.log(result); result = result.xml; var toUser = result.ToUserName; //接收方微信 var fromUser = result.FromUserName;//发送仿微信 if(result.Event===‘subscribe‘){ //回复消息 var xml=this.returntext(fromUser,toUser,‘欢迎关注公众号,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) } }) //回复文本消息 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; }