美文网首页
node 开发微信公众号(三.最简单的自动回复)

node 开发微信公众号(三.最简单的自动回复)

作者: Sxy97 | 来源:发表于2018-02-23 18:16 被阅读0次

    推荐微信开发入门教程: https://cnodejs.org/topic/59294bff9e32cc84569a746a

    先说一些微信开发的特点:
    1.post请求
    2.数据包是xml格式的
    3.你给微信返回的数据也是xml格式的

    coding吧

    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;
    }
    

    微信开发其实就是后台开发,只是多了一些微信制定的条条框框,文档都有说明的。感觉微信开发跟写前台js一样,事件驱动。

    多看文档,微信开发多看文档

    相关文章

      网友评论

          本文标题:node 开发微信公众号(三.最简单的自动回复)

          本文链接:https://www.haomeiwen.com/subject/etnxxftx.html