微信公众号认证 express 代码
来源:互联网 发布:美国大数据公司 编辑:程序博客网 时间:2024/04/28 02:17
var express = require('express');var router = express.Router();const crypto = require('crypto');/* GET home page. */router.get('/wechat/hello', function (req, res, next) { res.render('index', {title: 'hello Wechat'});});const token = 'lK67K01kkC3X8Te2EN6d0qkd7s9RBRf9';const handleWechatRequst = function (req, res, next) { const {signature, timestamp, nonce, echostr}= req.query; if (!signature || !timestamp || !nonce) { return res.send('invalid request'); } if ('POST' === req.method) { console.log('handleWechatRequst.post:', {body: req.body, query: req.query}); } if ('GET' === req.method) { console.log('handleWechatRequst.get:', {body: req.body}); if (!echostr) { return res.send('invalid request'); } } const params = [token, timestamp, nonce]; params.sort(); const hash = crypto.createHash('sha1'); const sign = hash.update(params.join('')).digest('hex'); if (signature === sign) { console.log('~~~~~~~~~~~~~~~~~~~1'); if ('GET' === req.method) { console.log('~~~~~~~~~~~~~~~~~~~2'); res.send(echostr ? echostr : 'invaid sign'); } else { console.log('~~~~~~~~~~~~~~~~~~~3'); const tousername = req.body.xml.tousername[0].toString(); const fromusername = req.body.xml.fromusername[0].toString(); const createtime = Math.round(Date.now() / 1000); const msgtype = req.body.xml.msgtype[0].toString(); const content = req.body.xml.content[0].toString(); const msgid = req.body.xml.msgid[0].toString(); console.log('~~~~~~~~~~~~~~~~~~~4'); console.log(tousername); console.log(fromusername); console.log(createtime); console.log(msgid); const response = `<xml> <ToUserName> <![CDATA[${fromusername}]]> </ToUserName> <FromUserName> <![CDATA[${tousername}]]> </FromUserName> <CreateTime >${createtime}</CreateTime> <MsgType> <![CDATA[${msgtype}]]> </MsgType> <Content> <![CDATA[${content}]]> </Content> </xml>`; res.set('Content-Type', 'text/xml'); res.send(response); } } else { res.send('invaid sign'); }};router.get('/api/wechat', handleWechatRequst);router.post('/api/wechat', handleWechatRequst);module.exports = router;
0 0
- 微信公众号认证 express 代码
- ThinkPHP 微信公众号接口 认证
- 微信公众号认证全过程
- 微信公众号授权认证实现
- 微信公众号认证流程-微信公众号使用教程3
- 下载微信公众号认证申请公函-微信公众号使用教程4
- 基于Django的微信公众号开发(3) -- 通过微信公众号开发者认证
- 微信公众平台开发:基础篇(申请微信公众号认证流程及注意事项)
- 微信公众号人才插件代码
- 微信公众号代码推送
- 微信公众平台认证流程
- 微信公众号(认证)订阅号和(认证)服务号的权限区别
- 【分享】微信公众平台开发中, 认证号远程异步下载微信关注者头像到服务器的代码
- 怎么认证微信服务号-微信公众号使用教程27
- 微信公众服务号申请、认证(开通支付)-微信开发图文教程
- 怎么认证微信支付服务商-微信公众号使用教程30
- 微信公众号开发后台基本搭建(基于NodeJs的express框架)
- 微信公众号开发及NodeJS+Express技术栈,出坑笔记一
- c++ vector::iterator
- 基础动画效果
- Abstract Types VS Parameterized Types
- VS2010插件之NuGet
- JSP如何与数据库交互?即JSP与后台Servlet之间的关系,如何交互
- 微信公众号认证 express 代码
- mybatis学习三(逆向工程)
- C/S通讯模型
- VS2010类模板的修改
- 浅谈Java的本地方法
- 129. Sum Root to Leaf Numbers
- kafka 伪集群搭建及java代码实现
- Python json 反序列化自定义对象
- VS2010自带的性能分析工具分析.NET程序的性能