微信公众号,真TM的坑呀。。。
1、先说一个最坑的--消息回复
当一次用户请求时,微信服务器发送过来数据是一个XML格式的,这对于我们的开发十分的不友好,必须想一个办法把XML格式转化为JSON格式的数据,这样对于我们下一步的数据操作更加方便,这里我推荐的是使用xml2js模块
1 var xml2js = require('xml2js') 2 var Promise = require('bluebird') 3 4 exports.parseXMLAsync = function (xml) { 5 return new Promise(function (resolve, reject) { 6 xml2js.parseString(xml, { 7 trim: true, 8 explicitArray : false, 9 ignoreAttrs : true 10 }, function (err, content) { 11 if (err) reject(err) 12 else resolve(content) 13 }) 14 }) 15 }
其中explicitArray : false这个属性非常nice,可以把我们收到的XML格式的数据中的【】去掉
处理完数据返回给微信服务器时候,又得是一个XML数据格式的数据,我这里直接写在了body里
1 that.body = `<xml> 2 <ToUserName>< ![CDATA[${message.FromUserName}] ]></ToUserName> 3 <FromUserName>< ![CDATA[${message.ToUserName}] ]></FromUserName> 4 <CreateTime>${now}</CreateTime> 5 <MsgType>< ![CDATA[text] ]></MsgType> 6 <Content>< ![CDATA[${"傻子"}] ]></Content> 7 </xml>`
!!!!!XML格式中不能有空格,使用VSCode的小伙伴千万不能手贱一直格式化代码,格式化了,就是上面这个样子