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. .net core+Spring Cloud学习之路 二

    前言: 原本计划这次写一下搭建eureka群集.但是发现上次写的只是服务的注册,忘了写服务的发现,所以这次先把服务发现补上去. 我们基于上篇文章,再新建两个.net core web api项目,分别 ...

  2. BurpSuite工具抓取手机的流量

    1.设置BurpSuite监听策略(和电脑区别不大就简单写了) 打开BurpSuite进入Proxy-Options界面,修改端口为8082.地址为第二项所有接口,点击OK 2.设置手机代理 首先保证 ...

  3. cf352E Jeff and Brackets dp+矩阵快速幂(加法+min运算)

    题意大致是这样的,一共要放 m 段括号序列,每一段放 n 个括号,也就是放 n*m个括号,再每一段中的 n 个位置分别有放左括号和右括号的代价,问最终摆放出合法的括号序列的最小代价是多少. 另外保证, ...

  4. 《Self-Attention Generative Adversarial Networks》里的注意力计算

    前天看了 criss-cross 里的注意力模型  仔细理解了  在: https://www.cnblogs.com/yjphhw/p/10750797.html 今天又看了一个注意力模型 < ...

  5. Java 动态绑定

    转载  http://www.cnblogs.com/ygj0930/p/6554103.html 一:绑定 把一个方法与其所在的类/对象 关联起来叫做方法的绑定.绑定分为静态绑定(前期绑定)和动态绑 ...

  6. logback root level logger level 日志级别覆盖?继承?

    1. logback-spring.xml 配置 <appender name="STDOUT" class="ch.qos.logback.core.Consol ...

  7. 解决STM32 I2C接口死锁在BUSY状态的方法讨论

    关于STM32的I2C接口死锁在BUSY状态无法恢复的现象,网上已有很多讨论,看早几年比较老的贴子,有人提到复位MCU也无法恢复.只有断电才行的状况,那可是相当严重的问题.类似复位也无法恢复的情况是存 ...

  8. 批量ping测试的脚本

    #脚本开始 #!/bin/bash HOSTLIST=`cat /usr/local/ipaddrs.txt` for IP in $HOSTLIST do ping -c 3 -i 0.2 -W 3 ...

  9. PHP中的反射模拟框架中控制器的调度

    <?php class IndexAction { public function index() { echo 'index'; } public function indexBefore() ...

  10. RK3399/NanoPC-T4开发板低级格式化SD卡,恢复SD卡和TF卡 方法

    恢复SD卡和TF卡 方法:Windows下运行:HDDLLF.4.40.exe执行Low-Level format然后拔插,重新插在win10下提示格式化,则执行格式化操作,即可恢复. 应用场合:使用 ...