教程: nodejs 做微信公众号开发,回复 xml 消息
首先需要你的后台跟服务器已经可以建立连接,这个不再冗述看官方教程就好 接入指南 。此篇介绍的是如何获取用户发来的信息,并回复它。
一、接收 xml 信息内容
我用的是 nodejs 的 express 后台框架,这个用什么都无所谓哈。
我要说的是,它的 xml 信息内容既不在 req.body 中,也不在 req.query 中,也不在 req.params 中,这个看了别人的文章才知道它在这:
let xmlData = ''
req
    .on('data', data => {
        xmlData += data.toString()
/*                xmlData =
            `<xml><ToUserName><![CDATA[gh_44543146fe48]]></ToUserName>
            <FromUserName><![CDATA[oU9gc6M5bCiuL5rSfsCRn5djrtm0]]></FromUserName>
            <CreateTime>1673838891</CreateTime>
            <MsgType><![CDATA[text]]></MsgType>
            <Content><![CDATA[这]]></Content>
            <MsgId>23963610449099327</MsgId>
            </xml>`*/
    })
    .on('end', () => {
        let receiveMsg = JSON.parse(xml2json.toJson(xmlData))
    })
你要做的判断逻辑放到 req.on('end') 中即可。
这里需要再提一点,需要使用 xml2json 插件,用于将 xml 转成 json 数据,好获取其内容,具体用法看这 xml2json usage。之后从微信服务器获取到数据就是这样:

二、回复消息
在向微信服务器回复信息的时候需要严格按照它的格式来,所以这里就只能使用 模板语法了。发送的时候将接收和发送者的位置调换即可。
    .on('end', () => {
        let receiveMsg = JSON.parse(xml2json.toJson(xmlData))
        console.log('received msg: ',receiveMsg)
        let responseMsg = `<xml>
                                <ToUserName><![CDATA[${receiveMsg.xml.FromUserName}]]></ToUserName>
                                <FromUserName><![CDATA[${receiveMsg.xml.ToUserName}]]></FromUserName>
                                <CreateTime>${new Date().getTime()}</CreateTime>
                                <MsgType><![CDATA[text]]></MsgType>
                                <Content><![CDATA[这是后台回复的内容]]></Content>
                            </xml>`
        console.log(responseMsg)
        res.send (responseMsg)
    })
结果就是:



















