当前代码tag: v0.0.1,https://github.com/yangbajing/wechat-meal/tree/v0.0.1
微信公众号提供了详尽的API文档说明,提供了明文和加密两种接入方式。这里,我们选择加密的接入方式微信公众号接入指南。
本此实战的代码部署到了Heroku
,读者也可以下载代码尝试部署到Heroku
并连接微信公众号。本章末尾讲讲述Heroku
的部署及怎样与微信公众号连接。
微信API
现在主要的功能是实现与微信公众号的连接,我们将在微信里实现一个echo
功能。就是用户在公众号聊天窗口里输入一段文本,系统原样返回。
连接微信API的代码WeixinCtrl
。微信公众号的连接分两个部分:
验证服务器地址有效性
这个接口为WeixinCtrl.get
方法,用户校验服务器的有效性依据接口文档实现业务逻辑
这个接口为WeixinCtrl.post
方法,通过微信公众号聊天窗口发送的各类消息都会发送的这里。
代码WeixinService
是所以微信API相关功能实现的入口,现在提供了签名校验、加密消息和解密消息功能。
在WeixinCtrl
控制器中,我们将收到的微信公众号消息原样返回给用户:
1 | def post = Action.async(parse.tolerantText) { request => |
Play 2
的依赖注入
从Play 2.4
开始,官方推荐使用依赖注入的方式定义路由和服务了,Play
使用了一个Java
标准注入方式的实现:Guice
。
1 |
|
@singleton
注解表示这个控制器将做为单例存在于整个应用生命周期,默认情况是每次调用时都会重新生成一个。
在Play
中,注入依赖的方式和Java很不一样,它是在scala
类定义的主构造器中注入的,而Java
代码中我们一般是在类的私用属性变量上进行注入。@Inject()
是一个特殊的语法,用于修饰构造函数,之后的参数实例将由注解框架自动注入。在这里,weixinService
这个服务就由系统框架注入了,我们不需要手动管理它的生命周期。
部署代码到Heroku
到Heroku
官网https://www.heroku.com注册开发者账号。
- 登陆
Heroku
的Dashboard,点击屏幕右上方的+
号按钮添加新应用。 - 安装
Heroku Toolbelt
,支持Mac
、Linux
和Windows
系统。 - 有3种部署代码到
Heroku
的方式:- 通过
Toolbelt
用Git
方式提交 - 连接到你的
Github
代码库 - 通过
Dropbox
提交。
- 通过
这里选择了通过Toolbelt
手动提交到Heroku
的GIT代码库的方式。
- 添加新的或已存的项目到
GIT
版本库
1 | cd wechat-meal/ |
- 部署应用
1 | git add . |
连接微信公众号
程序使用“加密连接”的方式,示例代码已经整合了微信提供的Java版
加密、解密功能。
在URL(服务器地址)
配置好连接微信API的服务地址,这里注意需要使用http协议(必需为80端口)。设置好Token(令牌)
和EncodingAESKey(消息加解密密钥)
,并选择“安全模式”。
当全部配置都设置好后就可以点击“提交”按钮了。若微信API校验成功,这时你从公众号的聊天窗口输入一段文本,公众号应该会回显你的输入内容。