摘要:

微信,庞大的用户基数,极强的用户粘性,在近两年吸引了无数的开发者注意力。 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]基于Nodejs构建属于自己的微信公众号相关推荐

  1. 基于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. 基于Gin+Vue+ElementUI实现的微信公众号平台系统

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

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

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

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

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

  9. 用户画像在科技期刊微信公众号精准推送中的应用

    闵甜1,2), 孙涛3),赖富饶1,2), 侯湘4) 1)华南理工大学<现代食品科技>编辑部,广东省广州市天河区五山路381号 510640 2)华南理工大学食品科学与工程学院,广东省广州 ...

最新文章

  1. 作为程序员应有10项权利
  2. Linux常用的基本命令02
  3. 【Luogu1937】仓配置(贪心,线段树)
  4. IDLE 策略算法 放置奇兵 小破船翻船记录(悬空岛——冒险(航海))
  5. java8方法引用符合_java8,方法引用
  6. python填写excel内容_python实现数据写入excel表格
  7. matlab绘制8条曲线,科学网—【Matlab】如何用plotyy对应坐标绘制多条曲线 - 叶瑞杰的博文...
  8. python手势识别隐马尔可夫模型_使用隐马尔可夫模型的运动笔迹手势识别.doc
  9. dedecms采集功能扩展
  10. color 的一些处理
  11. 【Eclipse】Eclipse中tomcat的Server配置(解决修改代码不断的重启服务器)以及设置tomcat文件发布位置与JSP编译位置查看...
  12. paip. JAVA快速开发IDE与JSF技术
  13. explain mysql执行顺序_面试前必须知道的MySQL命令【explain】
  14. php构建webservice,php webservice实例(简单易懂)
  15. 年全国高校计算机能力挑战赛,初赛公示_2020年全国高校计算机能力挑战赛
  16. 银魂中的HTML网址来自哪个星球,银魂中的这些设定,你都知道哪些呢?
  17. 小区宽带网络不稳定,宽带断线重连的几种方法(详细)
  18. 【Tensorflow 报错】struct.error: 'i' format requires -2147483648 = number = 2147483647
  19. 【云原生之kubernetes实战】在k8s环境下部署BookBrowser电子书浏览器
  20. 系统分析与设计之用例图

热门文章

  1. 微信小程序上传Excel文本文件功能
  2. vue 整合百度地图
  3. c语言计算机那类教,C语言教学中的兴趣驱动
  4. 拉新、复购、供应链,双11中小商家“三难”如何破?
  5. 初识python之概念认知篇
  6. TypeError: only integer tensors of a single element can be converted to an indexValueError: only one
  7. 中国电信广东DNS服务器
  8. 单盘位小先锋 群晖DS112j家用NAS评测
  9. netcore 集成 CAP 使用 rabbitMQ集群
  10. 新购买的阿里云虚拟机部署项目