github:https://github.com/liuyinglong/node-wechat
npm:https://www.npmjs.com/package/wechat-plus

install

npm install wechat-plus --save

use

//引入
var WeChat=require("wechat-plus");
let weChat= new WeChat({
token: "your token",
appid: "your appid",
secret: "your secret",
}); //文字消息
weChat.event.on("weChat_msg_text", function (res, msg) {
// msg接受到的消息内容
// res对象
// replay 方法 第一个参数为消息 第二个参数为消息类型 默认为text
res.reply({
ToUserName: msg.FromUserName,
FromUserName: msg.ToUserName,
Content: "ee" //回复内容
},"text");
}); //语音消息
weChat.event.on("weChat_msg_voice", function (res, msg) {
// msg接受到的消息内容
// res对象
// replay 方法 第一个参数为消息 第二个参数为消息类型
res.reply({
ToUserName: msg.FromUserName,
FromUserName: msg.ToUserName,
Content: "ee" //回复内容
},"text");
}); /**
* 生成授权链接
* @param redirectUrl
* @param state 默认为空
* @param scope 默认为"snsapi_userinfo"
* @returns {string}
*/
let authUrl=weChat.authUrl("http://youAddress.com/code","STATE","snsapi_userinfo") /**
* 获取用户信息
* @param code
* @returns {Promise.<TResult>|Request}
*/
weChat.getUserInfo("CODE").then(function(res){
//userInfo 为res.body
}); /**
* 生成jsSDK签名
* @param url 链接地址
* @returns {Promise.<TResult>}
* noncestr:随机字符串,
timestamp: 时间戳,
signature: 签名
*/ weChat.jssdkSignature("url").then(function(result){ })

express 路由示例

let express = require('express');
let router = express.Router();
let WeChat = require("wechat-plus");
let weChat=new WeChat({ //以下参数自行替换
token: "******",
appid: "***************************",
secret: "***************************",
}); //文字消息事件
weChat.event.on("weChat_msg_text", function (res, msg) {
//回复内容
res.reply({
ToUserName: msg.FromUserName,
FromUserName: msg.ToUserName,
Content: "ee"
});
}); // 开发者认证
router.get('/wechat', function (req, res, next) {
if (weChat.auth(req)) {
res.send(req.query.echostr)
} else {
res.send("false")
}
}); router.post("/wechat", function (req, res, next) {
//用户消息处理函数 如果为进行消息监听 则向微信服务器返回空数据
weChat.userMessage(req, res);
}); //获取用户信息 跳转到授权页面
router.get("/wechat/auth", function (req, res, next) {
let t = weChat.authUrl("http://vpn.getlove.cn/api/wechat/code");
res.redirect(t);
}); //根据code 获取用户的基本信息
router.get("/wechat/code", function (req, res, next) {
weChat.getUserInfo(req.query.code).then(function(data){
//data中包含用户信息
}).catch(function(err){
let t = weChat.authUrl("http://vpn.getlove.cn/api/wechat/code");
res.redirect(t);
})
}); //jssdk获取签名
router.post("/share", function (req, res, next) {
weChat.jssdkSignature(req.body.url).then(function (data) {
res.send(data);
})
}); module.exports = router;

原文地址 :http://www.jianshu.com/p/eedfde5a408d
如有问题 可在原文中留言

wechat-plus 使用node开发微信公众号的更多相关文章

  1. vue+node.js+webpack开发微信公众号功能填坑——v -for循环

    页面整体框架实现,实现小功能,循环出数据,整体代码是上一篇 vue+node.js+webpack开发微信公众号功能填坑--组件按需引入 修改部门代码 app.vue <yd-flexbox&g ...

  2. vue+node.js+webpack开发微信公众号功能填坑——组件按需引入

    初次开发微信公众号,整体框架是经理搭建,小喽喽只是实现部分功能,整体页面效果 整个页面使用两个组件:布局 FlexBox,搜索框 Search,demo文档 http://vue.ydui.org/d ...

  3. PHP开发微信公众号(一)二维码的获取

    要开发微信公众号,首先进行需要注册一个,然后认证.这就不用多说了. 当然如果没有,也可以去申请一个测试号来使用,地址:https://mp.weixin.qq.com/debug/cgi-bin/sa ...

  4. 小机器人自动回复(python,可扩展开发微信公众号的小机器人)

    api来之图灵机器人.我们都知道微信公众号可以有自动回复,我们先用python脚本编写一个简单的自动回复的脚本,利用图灵机器人的api. http://www.tuling123.com/help/h ...

  5. PHP开发微信公众号

    PHP开发微信公众号:配置和部署服务器及Token认证 https://zhuanlan.zhihu.com/p/28259840

  6. 使用vue开发微信公众号下SPA站点的填坑之旅

    原文发表于本人博客,点击进入使用vue开发微信公众号下SPA站点的填坑之旅 本文为我创业过程中,开发项目的填坑之旅.作为一个技术宅男,我的项目是做一个微信公众号,前后端全部自己搞定,不浪费国家一分钱^ ...

  7. Java开发微信公众号(五)---微信开发中如何获取access_token以及缓存access_token

    获取access_token是微信api最重要的一个部分,因为调用其他api很多都需要用到access_token.比如自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等在请求的时候 ...

  8. Java开发微信公众号(四)---微信服务器post消息体的接收及消息的处理

    在前几节文章中我们讲述了微信公众号环境的搭建.如何接入微信公众平台.以及微信服务器请求消息,响应消息,事件消息以及工具处理类的封装:接下来我们重点说一下-微信服务器post消息体的接收及消息的处理,这 ...

  9. Java开发微信公众号(三)---微信服务器请求消息,响应消息,事件消息以及工具处理类的封装

    在前面几篇文章我们讲了微信公众号环境的配置 和微信公众号服务的接入,接下来我们来说一下微信服务器请求消息,响应消息以及事件消息的相关内容,首先我们来分析一下消息类型和返回xml格式及实体类的封装. ( ...

随机推荐

  1. Chrome如何访问外网

    分享一下谷歌Chrome浏览器如何访问外网(FQ) 1.请确保你已经安装谷歌浏览器,同时能上网 2. 访问外网需要下载谷歌浏览器插件,网盘链接 https://pan.baidu.com/s/1R-b ...

  2. Lambda表达式中的GroupBy使用的正确姿势

    本实例适用于:将记录中的数据进行分组得到一个一对多模型数据Model 案例中的Model 注:UserDetailes 包含User的信息和其所属部门信息 需求:将UserDetailes 的记录分组 ...

  3. uva 202

    #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> # ...

  4. 2019OO第二单元作业总结

    OO第二单元的作业主题是模拟电梯. ---------------------------------------------------------------------------------- ...

  5. 爬取网络图片到C盘存储的PermissionError: [Errno 13] Permission denied

    C盘根目录下不能拷进去文件,但可以新建文件夹的,“发生错误,操作被阻止,客户端没有所需的特权. 因为是系统目录,不要在里面拷贝文件,最好建立一个目录再放在里面. 硬要拷贝的话,可以使用管理员权限打开e ...

  6. redis初步了解

    redis是什么 redis是一个开源的内存数据库,拥有非常优秀的性能 如何安装redis 在linux下安装软件有几种方式:二进制文件安装和源码安装,由于redis不依赖任何外部库,所以源码安装非常 ...

  7. Tenka 1 Computer Contest C-Align

    C - Align Time limit : 2sec / Memory limit : 1024MB Score : 400 points Problem Statement You are giv ...

  8. day061 cookie和session

    一. cookie 1.cookie 的原理 工作原理是:浏览器访问服务端,带着一个空的cookie,然后由服务器产生内容, 浏览器收到相应后保存在本地:当浏览器再次访问时,浏览器会自动带上Cooki ...

  9. maven 项目pom文件引入lib下的jar包

    <dependency> <groupId>abc</groupId> <artifactId>abc</artifactId> <v ...

  10. python之format函数

    自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱. 语法 它通过{}和 ...