摘要:

微信,庞大的用户基数,极强的用户粘性,在近两年吸引了无数的开发者注意力。 Nodejs,近两年发展非常快的开发工具,尤其适合构建移动后台。本文就以笔者自己开发的实例,来描述如何基于Nodejs开发属于自己的微信公众号。在这个实例中,主要使用到了express, wechat, mongodb, monk等模块。

前期准备:

1.   申请微信公众号, 前往 https://mp.weixin.qq.com/  申请,这里不做过多阐述。

2.   购买服务器, 这里推荐Amazon的EC2,首次用户可选择micro instance,一年免费,申请很方便,只需输入自己的信用卡信息即可,只是整个过程是全英文,不过
年免费呦,多花点时间也是值得的。

安装NodeJs开发环境:

1.  yum -y install gcc
2.  yum -y install gcc-c++
3.  yum -y install make automake
4.  wget http://nodejs.org/dist/v0.10.29/node-v0.10.29.tar.gz
5.  tar -xvzf node-v0.10.29.tar.gz
6.  cd  解压目录
7. ./configure
8.  make
9.  make install

安装Mongodb:

1. wget http://downloads.10gen.com/linux/mongodb-linux-x86_64-enterprise-amzn64-2.6.3.tgz
2. tar -xvzf mongodb-linux-x86_64-enterprise-amzn64-2.6.3.tgz
3. sudo cp -R -n  mongodb-linux-x86_64-enterprise-amzn64-2.6.3 /usr/local/mongodb

实例介绍:

笔者所在班级组了个足球队,大家统一把钱交到队长手里,由队长支付每次费用,并记录每人费用和余额并通知大家。由于不是每次所有人都能来,而费用只能由参加活动的人以AA方式平摊,记录起来比较麻烦。于是笔者就做了个微信公众号,每次只需要输入活动消费金额和选择参与人数,即可自动生成每人花费和余额,此后把明细发到微信群里,每个人就可以看见了。  
在这个实例中,笔者实际上搭建了一个微网站,通过Web页面来记录或显示活动花费和余额。微信公众号就相当于在用户微信和微网站之间搭起了一个桥梁,当微信用户关注笔者的公众账号时,通过微信公众平台开发者模式,即可自动给微信用户回复使用帮助。在帮助里,包含了操作相应的web link,只需要点击即可进入相应页面。
感兴趣的同学可以关注下 "AA助手", 微信号: aazhushou

构建微信公众号后台服务:

万事具备,只欠开发了:)

开始之前,先简要介绍下express和wechat 两个模块:

express - 优秀的Web开发框架, 使用express,可以非常快速的搭建自己的网站。由于微信服务器会通过HTTP Post请求来和开发者服务器交互,所以需要使用express框架。
下面是有新用户关注时的log, 103.7.30.84为微信服务器的IP地址。
103.7.30.84 POST /wechat?signature=8a8e408fdae6bbdd6e470af98865a5f993cea283&timestamp=1408610461&nonce=1572142586 2 200
wechat -  封装了和微信服务器交互的细节,使开发者只需关注自己的业务即可。

首先,我们要安装express 并使用express 来创建工程:

1. npm install -g express
2. express -e your_project    参数 -e 表明使用ejs 引擎,无参数默认使用jade 引擎。
3. cd your_project && npm install

安装后的目录结构如下:

[ec2-user@ip-172-31-2-188 your_project]$ ls
app.js  bin  node_modules  package.json  public  routes  views

接下来安装wechat:

1. npm install wechat

微信开发者模式配置:

配置URL和token,示例如下:

服务器配置(已启用)

停用 修改配置

停用服务器配置后,用户消息和开发者需要的事件推送,将不会被转发到该URL中
URL

http://your_IP/wechat

Token

your_token

微信服务器接入认证和自动回复:

修改app.js,相应代码如下:

</pre><p></p><p><pre name="code" class="javascript">app.use('/', routes);
app.use('/users', users);
app.use('/weixin', weixin);app.use(express.query()); // Or app.use(express.query());
app.use('/wechat', wechat('hchismylove', function (req, res, next) {// 微信输入信息都在req.weixin上var message = req.weixin;console.log(message);if((message.MsgType == 'event') && (message.Event == 'subscribe')){var refillStr = "<a href=\"http://your_IP/weixin/refill?weixinId=" + message.FromUserName + "\">1. 点击记录团队充值</a>"var consumeStr = "<a href=\"http://your_IP/weixin/consume?weixinId=" + message.FromUserName + "\">2. 点击记录团队消费</a>"var deleteStr = "<a href=\"http://your_IP/weixin/delete?weixinId=" + message.FromUserName + "\">3. 点击回退记录</a>"                       var historyStr = "<a href=\"http://your_IP/weixin/history?weixinId=" + message.FromUserName + "\">4. 点击查询历史记录</a>"var emptyStr = "          ";                var replyStr = "感谢你的关注!" + "\n"+ emptyStr + "\n" + refillStr + "\n"+ emptyStr + "\n" + consumeStr + "\n"+ emptyStr + "\n" + deleteStr + "\n"+ emptyStr + "\n" + historyStr;res.reply(replyStr);}
}));

通过下面这行代码即可实现微信服务器接入认证:

app.use('/wechat', wechat('your_token', function (req, res, next) {

如下代码实现了当新用户关注时,自动发送使用帮助:

if((message.MsgType == 'event') && (message.Event == 'subscribe'))
{....res.reply(replyStr);
}

微信截图如下:

基于Nodejs构建属于自己的微信公众号相关推荐

  1. [Nodejs]基于Nodejs构建属于自己的微信公众号

    摘要: 微信,庞大的用户基数,极强的用户粘性,在近两年吸引了无数的开发者注意力. Nodejs,近两年发展非常快的开发工具,尤其适合构建移动后台.本文就以笔者自己开发的实例,来描述如何基于Nodejs ...

  2. 基于 Java Spring Security 的关注微信公众号即登录的设计与实现 ya

    太长不看版本 本文通过一个实际的具有一定商业价值的项目,展示了 API 优先的开发方法.通过薅羊毛的方式,落地了 Free Arch 架构. 背景和价值 通过微信公众号积累粉丝并进行商业活动宣传,是新 ...

  3. 基于TP5、EasyWeChat、fastadmin微信公众号网页授权登录

    第一种使用EasyWeChat拉起登录 使用 composer 安装 EasyWeChat $ composer require overtrue/wechat:~5.0 -vvv 或者在compos ...

  4. 基于Spring Cloud的全自动化微信公众号消息采集系统

    前言 由于公司业务需求,需要获取客户提供的微信公众号的历史文章并每天进行更新,三百多个公众号显然不能通过人工去每天查看,问题提交到了IT组.对于热爱爬虫的我肯定要盘他,之前做过搜狗的微信爬虫,后来一直 ...

  5. PHP微信公众号开发插件,基于ThinkCMF1.5.0开发的微信公众号插件

    ThinkCMF升级到了1.5.0,引入的插件机制让我很是心动,于是乎写了这个微信公众号插件,纯属抛砖引玉,水平有限,不喜勿喷.大家可以先关注我的个人订阅号测试下各个小功能. 主要实现的功能有这么几个 ...

  6. nodejs死亡笔记之实战篇---微信公众号的开发(2)

    本篇文章继续讲解微信公众号的开发(不使用第三方微信开发模块) 接收消息 在接收消息之前,我们还需要验证与微信平台的签名,上一篇文章已经讲过了,这里不在详述.现在就来讲解一下接收微信平台的消息.在签名认 ...

  7. 基于Gin+Vue+ElementUI实现的微信公众号平台系统

    项目介绍 一款 Go 语言基于Gin.Xorm.Vue.ElementUI.MySQL等框架精心打造的一款模块化.插件化.高性能的前后端分离架构敏捷开发框架,可快速搭建前后端分离后台管理系统,本着简化 ...

  8. 记一次企业级爬虫系统升级改造(四):爬取微信公众号文章(通过搜狗与新榜等第三方平台)

    首先表示抱歉,年底大家都懂的,又涉及SupportYun系统V1.0上线.故而第四篇文章来的有点晚了些~~~对关注的朋友说声sorry! SupportYun系统当前一览: 首先说一下,文章的进度一直 ...

  9. 记一次企业级爬虫系统升级改造(四):爬取微信公众号文章(通过搜狗与新榜等第三方平台)...

    首先表示抱歉,年底大家都懂的,又涉及SupportYun系统V1.0上线.故而第四篇文章来的有点晚了些~~~对关注的朋友说声sorry! SupportYun系统当前一览: 首先说一下,文章的进度一直 ...

最新文章

  1. Win10系统下软件UI显示不完整解决方案
  2. JVM发生频繁 CMS GC,罪魁祸首是这个参数!
  3. 文件上传 upload-labs 1~20做题记录
  4. 创建WebSocket服务器
  5. 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...
  6. 用python为喜欢的人写一个程序,每天发送贴心的消息
  7. mysql全文搜索实现模糊查询_mysql使用全文索引实现大字段的模糊查询
  8. .net平台借助第三方推送服务在推送Android消息(极光推送) 转
  9. sqlmap能测试java么_ibatis框架如何测试?ibatis入门解析
  10. 两款工控控件对比评测:Iocomp和ProEssentials
  11. 块状元素(div)与内联元素(span)
  12. Activiti开发案例之代码生成工作流图片
  13. KL散度(双向KL散度) JS散度
  14. 2021全球Top 1000计算机科学家h指数发布,中国53人上榜!Bengio总榜第二,韩家炜居华人首位...
  15. go mysql 中间件_GitHub - wushilong/go-sharding: Mysql 分库分表中间件
  16. python风变编程是骗局吗-一个月在风变编程学完了Python基础语法,真香!
  17. C++使用类和对象(谭浩强9.8-9.14)
  18. OCR(图片识别)之 百度 VS 谷歌
  19. 服务器返回json中显示403,接口返回了403错误如何解决?
  20. 高并发核心技术Redis系列(七)--------Jedis操作Redis

热门文章

  1. 联想拯救者Y7000P触摸板无法使用
  2. 应用计算机测定电阻伏安特性实验,电路元件伏安特性测量实验报告答案.doc
  3. 信道以及信道容量小结
  4. ios微信组件跳转_IOS如何从微信中跳转APP
  5. 中文分词之维特比算法详解
  6. 山东大学2019上半学期增强现实课程重点整理
  7. HTTP/HTPPS协议
  8. 复旦大学python教程_安装python-复旦大学大数据学院.pdf
  9. 百度违规屏蔽关键词工具
  10. java后台生成二维码以及页面显示二维码方式