Nodejs公众号开发自动回复

1:需要搭建node服务器

首先我们先需要npm init 初始化项目,在根目录下创建主函数index.js,目录格式大概如下

接下来我们需要npm i express -S 下载express在index.js中引入代码如下,然后再node index 运行项目这样一个简单的服务器就搭建完成。

const express = require(express)
const app = express()
app.listen(80,()=>{
    console.log("服务启动")
})

我们配置完成之后点击提交显示显示token验证失效,这是因为我们并没有在服务器上进行配置,接下来我们需要在服务器上配置:

首先我们需要创建一个config文件夹里面index.js是我们的配置文件代码如下

const wxConfig = {
    appId: appId配置文件内有,
    appSecret: appSecret配置文件内有,
    token: token配置文件内有
}

module.exports = wxConfig
let express=require(express)
let router=express.Router()
const sha1 = require(sha1)
let wxConfig=require(../config/ws)
router.get(/wx, function (req, res) {
    var token = wxConfig.token
    var signature = req.query.signature
    var nonce = req.query.nonce
    var timestamp = req.query.timestamp
    var echostr = req.query.echostr
    var str = [token, timestamp, nonce].sort().join()
    var sha = sha1(str)
    if (sha === signature) {
        res.send(echostr)
    }else{
        res.send(error)
    }
})
module.exports=router

配置完成之后我们在根目录下引入

const express = require(express)
const app = express()
const router=require(./wxConfig)  
app.use(/user,router)
app.listen(80,()=>{
    console.log("服务启动")
})

目录

下载npm i xml2js


const { parseString } = require(xml2js)
module.exports = {
    getUserDataAsync(req) {
        return new Promise((resolve, reject) => {
            let xmlData = 
            req.on(data, data => {
                //
                console.log(data);
                xmlData += data.toString()
            })
                .on(end, () => {
                    //当数据接收完毕,会触发当前函数
                    resolve(xmlData)
                })
        })
    },
    parseXMLAsync(xmlData) {
        return new Promise((resolve, reject) => {
            parseString(xmlData, {trim: true}, (err, data) => {
                if (!err) {
                    resolve(data)
                } else {
                    reject(parseXMLtoJS + err)
                }
            })
        })
    },
    formatMessage(jsData) {
        let message = {}
        //获取xml对象
        jsData = jsData.xml
        //判断是否是一个对象
        if (typeof jsData === object) {
            //遍历对象
            for (let key in jsData) {
                let value = jsData[key]
                if (Array.isArray(value) && value.length > 0) {
                    message[key] = value[0]
                }
            }
        }
        return message
    }
}

封装好工具代码之后在wxConfig中我们写post请求代码如下

这样我们就完成了你问我答的基础内容。

这样你问我答就可以了

经验分享 程序员 微信小程序 职场和发展