Node.js 微信后台搭建系列 - 微信集成
Updated:
终于基本到了最后的一步了。微信集成主要包含三个部分:
- 接入验证,让微信确认你的服务器,就是你公众号的拥有人。
- 接收微信给你服务器的消息。
- 发送消息给微信服务器,让它转发给你公众号的关注者。
公众号的基本开发,微信的官方文档「入门指南」其实已经基本包含所有必须要知道的知识。但是,它的文档是以 Python 为例子,还有一些比较看起来吓死人的流程图,技术细节,和一些个人号没法开通的功能介绍。所以,这篇教程是侧重于个人公众号如何用 JavaScript 来开发实现。
接入验证
怎么申请微信个人公众号,我就不说了。个人只能申请订阅号。
申请成功后,登录,点击左边菜单栏下面的「开发」->「基本配置」,可以看到如下页面:

先把 开发者ID(AppID) 和 开发者密码(AppSecret) 分别复制出来,保存在一边。令牌(Token) 是自己定的不让别人知道的字符串。下面我们来看看系统里如何配置,接入微信。  
打开命令行,进入你的项目目录,然后输入以下命令:
yo evergrow:wechat  
它会提醒你是否要覆盖 package.json 文件,你可以输入 d,按 Enter 看有什么变动。其实只是新加一些必要的包,所以你输入 Y,然后覆盖就可以了。正常的话,操作后会如下图那样,新生成几个微信相关的文件。  

打开 config/wechat/sample.js 文件,内容如下:  
| 1 | module.exports = { | 
你要做的是,复制 sample.js 文件,重命名为 production.js,然后把前面保存的 开发者ID(AppID) 和 开发者密码(AppSecret) 分别赋值给 appId 和 appSecret。appToken 不用理会。appToken 和 appSecret 可不要让别人知道!以我的为例:  
| 1 | module.exports = { | 
设置完了以后,你就可以部署到服务器上面了。
确定你的服务器已经启动后,你就可以在微信「启用」你的服务器了。服务器的 URL 就填你的服务器地址(或 IP),加上我们微信集成模块的路由 /wechat,比如: http://www.mydomain.com/wechat/。  
接收消息
启用后大概要过三五分钟可能才会生效。然后,如果你发一段文字给你的公众号,你的服务器会打印出接受到的消息内容。
文字消息
| 1 | { | 
关注公众号的消息
| 1 | { | 
图片消息
| 1 | { | 
发送消息
知道了上面几大类型的消息格式,我们就可以做一些东西了。
微信消息的接收和处理,都在 wechat/wechat-controller.js 里面的 wechatMsg 方法里处理就可以了。它默认生成的代码是这样的:  
| 1 | module.exports.wechatMsg = WechatManager.getWechatRouter(function(req, res, next) { | 
关注自动回复
如果要在用户关注后自动回复,我们可以在上面的方法里加如下的代码:
| 1 | module.exports.wechatMsg = WechatManager.getWechatRouter(function(req, res, next) { | 
因为启用自己的服务器后,自定义菜单功能就没有了,我只能在关注自动回复加链接去我的历史文章页了(哭)。
回复用户发来的图片
如果我们想直接把用户发给我们的图片回复回去,我们可以这样做:
| 1 | module.exports.wechatMsg = WechatManager.getWechatRouter(function(req, res, next) { | 
有了这些基础,你可以按自己的需求,来实现其它自动回复的功能。下一章我们再看如何结合之前的系统,随机抽取系统接收的其它用户发来的图片,而不是返回自己当前发来图片。
