1.2 公众平台开发模式的数据交互方式

公众平台消息接口为开发者提供了与用户进行消息交互的能力。对于成功接入消息接口的公众账号,当用户发消息给公众账号时,微信公众平台服务器会使用HTTP请求对接入的网址进行消息推送,第三方服务器可通过响应包返回个性的回复,从而达到回复消息的目的。简单地说,就是公众账号可以使用自己的程序来和用户对话。

这个模式和多年前的手机订阅很像。在21世纪初,互联网在泡沫之后迎来了一种非常厉害的盈利模式—SP/CP模式,拯救了水深火热的互联网。当然,现在这种模式已经过时了,大家可以在网上了解一下那段互联网的历史。不过现实中还是存在真实的例子,如果你的手机号是中国移动的,可以参看10086的短信功能;如果你的手机号是中国电信的,可以参看10000的短信功能。笔者的手机号是中国电信的,当笔者想查询自己的套餐使用情况时,即可发送702到10001,10001会立即返回笔者的套餐详细使用情况。大家肯定猜到这条短信不是人工发过来的,而是由后台程序接到702之后查询中国电信自己的用户数据库后发过来的。同样的,中国移动的用户发送“YE”到10086查询余额的功能也是一样的。

使用了开发模式的微信公众账号就会成为一个配备了一些指令规则的账号。在用户关注公众账号,发送对应的指令给公众账号之后可以获得相应的结果。而这些规则的逻辑需要公众账号的开发者根据公众平台的开发规则在后台实现。用户、微信后台和我们需要开发的公众账号后台的服务器三者之间的交互关系如图1-1所示。

图1-1 用户、微信后台和公众账号服务器间的交互图

图1-1所示的具体交互过程的描述如下:

1)用户在微信的手机客户端里向公众账号发送一条消息,这条消息会通过网络到达微信的后台;

2)后台收到这条消息之后,把消息转发给公众账号的后台,也就是公众账号的服务器;

3)公众账号服务器收到请求后,解析消息格式,根据用户内容和自己的服务器逻辑,计算出需要返回给用户的消息,然后封装消息,返回给微信后台;

4)微信后台把公众账号服务发来的消息转发给用户的微信手机客户端,这样用户在手机客户端上就可以看到公众账号发来的微信消息了。

通过这个过程可以看到公众账号服务器要做的事情有三件:

❑获取微信后台发过来的消息;

❑实现自己的业务逻辑;

❑发送返回消息给微信后台。

因为微信服务器请求公众账号服务使用的是HTTP协议,所以在公众账号服务器上必须要运行一个HTTP服务,并打开一个端口。本书的案例为了开发时的方便,使用Windows上的AppServ作为开发和调试环境,使用zendstudio作为PHP语言的IDE,使用Windows版本的MySQL作为数据存储;在部署应用时使用Nginx、PHP-FPM和Linux版本的MySQL作为生产环境。

接下来介绍一下开发环境的准备工作及生产环境的部署,如果读者已经知道如何使用AppServ可以跳过这些内容。