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. svo_udp通信02——一组数据发送

    注意事项: 1.client 和server 定义的发送和接收数据(结构)要相同.如: client.c: struct position_packet {float pos_x[5];float p ...

  2. LeetCode 104. Maximum Depth of Binary Tree C++ 解题报告

    104. Maximum Depth of Binary Tree -- Easy 方法 使用递归 /** * Definition for a binary tree node. * struct ...

  3. 关于使用git上传远程仓库的两种情况(新项目与老项目)

    具体的git配置与github仓库ssh配置在这里就不再赘述,本次只讲自己之前遇到的两个内容 1.还没有项目,将远程仓库clone下来直接在里边写项目. 2.已有项目,将已有的项目直接添加到建立好的远 ...

  4. 学习笔记DL008:概率论,随机变量,概率分布,边缘概率,条件概率,期望、方差、协方差

    概率和信息论. 概率论,表示不确定性声明数学框架.提供量化不确定性方法,提供导出新不确定性声明(statement)公理.人工智能领域,概率法则,AI系统推理,设计算法计算概率论导出表达式.概率和统计 ...

  5. 使用bind提供域名解析服务

  6. c# 获取 bios 序列号

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.M ...

  7. log4j根据包名 日志输出到不同文件中 , service层无法输出日志问题

    1. service 层因为要配置事务,使用了代理 <aop:config proxy-target-calss=''true"> <aop:pointcut id=&qu ...

  8. Logback动态修改日志级别

    https://blog.csdn.net/totally123/article/details/78931287

  9. Kettle解决方案: 第三章 安装和配置

  10. C#遍历枚举中所有值

    public enum EnumColor { 红色=1, 黑色=2, 白色=3 } foreach (EnumColor item in Enum.GetValues(typeof(EnumColo ...