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请求代码如下
这样我们就完成了你问我答的基础内容。
这样你问我答就可以了
