nodejs 对接微信 express 对接微信
安装引用
npm install express npm install body-parser npm install express-xml-bodyparser npm install axios
使用express框架对接微信
var express = require('express'); var xmlparser = require('express-xml-bodyparser'); var crypto = require('crypto'); var path = require('path'); var bodyParser = require('body-parser'); var app = new express(); app.use(express.static(path.join(__dirname, 'public'))); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(xmlparser()); app.get('/', (req, res) => { res.end('hello world'); })
//对接验证 app.get('/wx', (req, res) => { if (!req.query.signature) { res.end('hello,this is handle view'); return; } const { signature, timestamp, nonce, echostr } = req.query; var token = "mydemo"; var array = [token, timestamp, nonce]; array.sort() var sha1 = crypto.createHash('sha1'); var str = array.toString().replace(/,/g, ''); var hashcode = sha1.update(str).digest('hex'); if (hashcode == signature) { res.end(echostr); } else { res.end(""); } });
//实现你问我答 文本消息回复 app.post('/wx', (req, res) => { console.log(req.body); const { tousername, fromusername, createtime, msgtype, content } = req.body.xml; var xml = `<xml> <ToUserName><![CDATA[${fromusername}]]></ToUserName>' <FromUserName><![CDATA[${tousername}]]></FromUserName>' <CreateTime><![CDATA[${createtime}]]></CreateTime>' <MsgType><![CDATA[${msgtype}]]></MsgType>' <Content><![CDATA[${content}]]></Content>' </xml>`; res.end(xml); }); app.listen(80, '0.0.0.0', () => { console.log('listen 80'); })
微信公众号 配置 http://ip或域名/wx