1、第 1 页 (共 15 页)基于微信公众平台的学生自助服务系统摘 要:本文总结了基于微信公众订阅号的学生自助服务系统的制作技术和经验,介绍了微信接口的工作原理和项目实施过程,同时也介绍了该系统功能及效果。该系统包括校园服务、生活服务和其他服务三大功能。经测试,开发出的系统能够实现设计的所有的功能。关键词:微信公众平台;微信接口技术;查询系统;开发模式Abstract:This paper summarizes the experience and production technology based on micro-channel public subscription number of
2、 student self-service system, and introduces the principle of micro-channel interface and project implementation process, but also introduced the system function and effect. The system includes a campus services, life and other services three functions. After testing, the developed system can achiev
3、e all the functionality of the design.Key words:WeChat public platform;WeChat interface technology;query system; dev-elopment model微信是腾讯推出的免费即时通讯服务应用程序,用户可以通过微信与好友进行文字或图片消息的传送。此次毕业设计想通过设计和实际开发一个微信公众订阅号,达到学习和应用微信接口的知识和技能,开发和制作微信公众订阅号,可以积累经验,为未来毕业后工作打下微信公众号开发的基础。1 微信公众平台介绍1.1 简介微信公众平台(WeChat public pl
4、atform)在 2012 年 08 月 23 日正式上线,它是腾讯公司在微信的基础上增加的概念模块。通过这一平台,个人和企业都可以申请和开发一个专属的微信公众号,可以向订阅用户群发语音消息、视频消息、第 2 页 (共 15 页)文字消息、图片消息和图文消息 5 个类别的内容。根据运营主体的不同,微信公众账号可分为订阅号、服务号、企业号。1.2 服务号、订阅号、企业号的介绍(区别) (1)订阅号:维护者发布信息的平台(与杂志和报刊相似),认证前后都是每天只可以群发一条消息。(2)服务号:企业提供服务的平台(与银行提供服务查询相似),认证前后都是每个月最多只能群发 4 条消息。(3)企业号:提供
5、公司内部员工的管理、沟通等服务,需要先有成员的通讯信息验证才可以关注成功企业号。1.3 编辑模式与开发模式注册微信公众号成功后,管理微信公众号的方法有两种:编辑模式和开发模式。(1)编辑模式:编辑模式简单实用,类似与网站后台管理,可以通过登录微信公众平台设置和管理各种功能,如:群发功能、自动回复、自定义菜单。(2)开发者模式:可以开发业务逻辑,实现编辑模式下几乎所有的功能,还可以开发更多高级功能。1.4 微信公众号的功能从公众账号和订阅者的交流方式来看,微信公众平台有三大功能:(1)群发消息。公众账号可以向订阅者群发一定量的消息。(2)使用编辑模式中的自定义回复消息,编辑模式下,公众账号可以自
6、定义一些消息回复规则。(3)使用开发模式。公众账号的维护者可以开发自己所需要的业务逻辑来处理订阅者发送的消息,并做出响应,反馈给订阅者。这个功能可以让公众账号的功能得到极大的扩展。2 微信公众平台开发实现的基本原理第 3 页 (共 15 页)2.1 公众平台开发模式的数据交互方式开发的学生自助系统是基于订阅者的开发模式的。下面简单介绍公众平台开发模式的数据交互方式。 图 2-1 数据交互原理图图 2-1 所示的具体交互过程的描述如下:(1)用户通过手机客户端发送信息被送到服务器里面;微信默认能接收图片(image)、视频(video)、文本(text)、地理位置(location)、语音(vo
7、ice)、链接(link)6 种基本的消息格式。(2)微信服务器收到这条消息之后,首先把消息转换为特定的 XML 结构的信息,并把转换后的信息 POST 到开发者服务器,即开发者填写的 URL 上。(3)开发者服务器收到 POST 请求后,在响应包(GET)中返回特定的 XML结构,对该消息进行响应,返回给微信服务器;目前支持图片、图文、视频、文本、音乐、语音 6 种回复消息类型。通过这个过程可以看到开发者服务器需要做以下三件事情:接收微信服务器传递过来的消息;实现自己特有的业务逻辑;反馈消息给微信服务器。3 自助服务系统设计第 4 页 (共 15 页)3.1 系统功能设计基于微信公众平台订阅
8、号开发的学生自助服务系统的功能模块有:校园服务、生活服务和其他服务。系统功能模块图如图 3-1 所示。图 3-1 系统功能模块图校园服务模块分为:(1)课表查询:为学生提供查询个人课表服务,个人课表包括上课地点、上课时间和授课老师等信息。(2)教师查询:为学生提供查询教师信息服务,教师信息包括教师课表和详细的个人信息。(3)学校服务网站:这是登陆学校网站的入口。学生可以在手机中的微信里登录学校网站。生活服务模块分为:(1)天气查询:为学生提供各个地方的当天以及之后几天的天气预报查询。(2)快递查询:为学生提供随时了解快递位置服务。(3)交通查询:为学生提供列次和航班的查询服务,查询后跳转到去哪
9、儿官新闻查询学生自助服务系统教师查询课表查询学校服务网站天气查询快递查询交通查询菜谱新闻聊天机器人校园服务 生活服务 其他服务第 5 页 (共 15 页)网上。其他服务模块分为:(1)菜谱查询:为学生提供对应的菜谱信息,方便学生查询菜谱信息。(2)热点新闻:为学生提供随机推送当天的即时新闻服务。(3)聊天机器人:接入图灵机器人 API,实现智能回复学生的提问,为学生提供休闲娱乐服务。3.2 类功能结构设计本系统使用 PHP 语言面向对象开发,介于微信个人订阅号的接口权限不多,笔者只设计一个类,该类的功能主要有两个:一是验证接口配置信息的接入是否生效;二是根据用户不同的输入提供不同的功能,也就是
10、我们学生自助服务系统的功能类。通过解析用户的输入,调用不同的方法,实现上述的各种功能,比如教师查询和课表查询。4 项目的实施过程4.1 申请微信公众订阅号微信公众号的开发,需要去 https:/ 注册微信公众号成功后,登陆微信公众平台,选择适合的公众平台类型,类型选择的区别,前面已经介绍过。需要注意的是,选择类型之后就不能修改,但如果是企业注册订阅号可以升级为服务号,根据运营主体的不同,要求提供不同的资质材料及证明。申请流程如图 4-1 所示。4.2 配置和启用服务器登录微信公众平台后,点击“开发者中心=成为开发者=填写接口配置信息=提交”。填写接口配置信息如图 4-2 所示。图 4-2 中,
11、URL 是用来接收微信服务器数据的接口 URL,即开发者服务器的访问地址;Token 是自定义的,用作生成签名,EncodingAESKey 可以手动填写或者第 6 页 (共 15 页)随机生成,将用作消息体加密密钥。同时,可选择明文模式、兼容模式和安全模式三种消息加密方式,模式的选择与服务器配置在提交之后都会立即生效。图 4-1 申请订阅号流程图图 4-2 接口配置信息在验证提交的信息后,GET 请求携带以下 4 个参数并把请求写在 URL 上。(1)Signature:微信加密签名。(2)timestamp:时间戳。(3)nonce:随机数。(4)echostr:随机字符串。开发者通过检验
12、 signature 对请求进行校验,若此次 GET 的请求来自微信服设置公众号信息登陆https:/登记信息 选择公众平台类型使用邮箱激活公众平台账号填写基本信息立即注册 登 陆htps:/m.weixn.qco 点击注册 登 陆htps:/m.weixn.qco 登陆微信公众平台 登 陆htps:/m.weixn.qco 第 7 页 (共 15 页)务器,原样返回 echostr 参数内容,则表示接入生效,成功成为开发者;否则接入失败。实现代码如下:private function checkSignature()/ 判断开发者是否自己定义一个 TOKENif (!defined(“TOK
13、EN“) throw new Exception(TOKEN is not defined!);/获取微信服务器传递给开发者服务器的 4 个参数$signature = $_GET“signature“;$timestamp = $_GET“timestamp“;$nonce = $_GET“nonce“;$token = TOKEN;/将$token, $timestamp, $nonce 三个参数进行字典序排序$tmpArr = array($token, $timestamp, $nonce);sort($tmpArr, SORT_STRING);/将三个参数字符串拼接成一个字符串,进行
14、 shal 加密$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );/开发者获得加密后的字符串$tmpStr 与$signature 对比,判断该请求是否来源于微信服务器if( $tmpStr = $signature )return true;elsereturn false;服务器启用成功后界面如图 4-3 所示。图 4-3 服务器启用成功图配置和启用服务器流程图如图 4-4 所示。第 8 页 (共 15 页)图 4-4 启用服务器流程图4.3 搭建本地开发环境在本地电脑搭建微信开发所需的 PHP 环境。本次实验使用 Adobe D
15、reamweaver CS6 代码编辑器,Navicat for MySQL 数据库管理工具。将微信开发的代码上传到远程服务器的站点,进行 URL 和 TOKEN 验证成为开发者。保证自己的服务器和微信服务器间的通信正常,才可以进行开发。4.4 事件推送和消息回复根据前面介绍的微信平台数据交互原理,我们可以知道,当用户在关注或者取消关注订阅号时,或者向公众账号发送消息时,该消息会被微信服务器转换为特定的 XML 结构的信息,并被 POST 到开发者服务器上,然后在开发者服务器上进行处理,最后又返回给微信服务器。例 1:用户在关注订阅号时,XML 结构的信息如下:配置信息 接入有效接入无效微信服
16、务器开发者服务器 是否来自微信服务器?提交Get 验证 否 是第 9 页 (共 15 页)12345689以上代码的含义如下:ToUserName:开发者的微信号FromUserName:发送方账号(一个 OpenID,是唯一的)CreateTime:消息创建时间(整型)MsgType:消息类型,eventEvent:事件类型,subscribe(关注)、unsubscribe(取消关注)根据以上参数,我们可以编辑业务逻辑代码,对信息进行处理,返回给微信服务器一个 XML 数据包,结果如图 4-5 所示。例 2:当用户向订阅号发送文本消息,如“帮助”时,XML 结构的信息如下:12345678
17、9以上代码的含义如下:ToUserName:开发者的微信号FromUserName:发送方账号(一个 OpenID,是唯一的)CreateTime:消息创建时间(整型)第 10 页 (共 15 页)MsgType:消息类型,textContent:文本消息内容我们可以根据 Content 来设定规则,进行关键字回复,结果如图 4-6 所示。在本次实验中,我们还创建了数据表 sinfo(学生信息表)、tinfo(教师信息表),模拟学校的数据信息,当用户发送【查询】时,系统会查询相应的数据库,找出相应数据,按照 text 格式,返回给用户,这样用户可以直观快捷方便的浏览到想要的信息。查询结果如图 4-7、图 4-8 所示。图 4-6 关键字回复结果图 4-5 关注事件结果