摘要:

微信,庞大的用户基数,极强的用户粘性,在近两年吸引了无数的开发者注意力。 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. pdf百度云下载 python编程 从数据分析到数据科学_python零基础入门教程,不同方向的,这很重要...
  2. 在Android应用外获取app的签名
  3. linux so_nosigpipe,TCP_NODELAY/SO_LINGER/SO_NOSIGPIPE/MSG_NOSIGNAL设置
  4. MySQL 常用运算符
  5. 浏览器专属 CSS Hack:区分 Firefox / Opera / Safari / Internet Explorer
  6. win10电脑桌面透明便签_Windows xp电脑便签在哪里找?XP系统怎么建桌面便签
  7. mysql 子查询 性能_mysql子查询性能
  8. C#类库项目创建config文件
  9. Qt文件路径:QDir
  10. matlab的取整函数
  11. Tableau计算同比和环比任意天数据
  12. Python随记(27)bs4爬取豆瓣250
  13. 什么是DNS?为什么选择UDP?详细的DNS解析过程?
  14. 区分微信开发平台和公众平台(小程序)
  15. excel打不开_卸载WPS以后为什么无法打开一个新建的Excel工作簿了
  16. 安卓终端模拟器的安装和使用
  17. Openlayer图层载入时进行坐标系的转换
  18. 大时代已过,小机会可期
  19. mstsc远程登录windows服务器
  20. 大一作业HTML期末网页作业(化妆品网站制作) html+css+js 雅诗兰黛美妆网站制作

热门文章

  1. pg_repack bloat 处理测试初步
  2. 运维派网站数据迁移过程踩到的坑和教训
  3. css位置-moz-兼容,兼容不同浏览器的CSS前缀-webkit-,-ms-,-moz-,-o-
  4. 条件概率、全概率公式
  5. Zabbix-3.0.x使用OneAlert发送告警
  6. 上海市居住证办理材料及流程
  7. 如何解决 Critical dependency: the request of a dependency is an expression ?
  8. valid ready协议学习
  9. hive:正则:匹配中文/英文/数字(REGEXP 和 rlike)
  10. c语言 文件读取z整行操作,C语言文件操作函数之ferror feof clearerr