admin 管理员组

文章数量: 1086019


2024年4月25日发(作者:linkbutton的属性)

第32卷第3期 

2015年9月 

苏州科技学院学报(自然科学版) 

Journal of Suzhou University of Science and Technology(Natural Science) 

V01.32 NO.3 

Sep.2015 

基于微信公众平台架构的应用系统开发 

陆卫忠 ,一,赵玉雪 ,朱云祥 ,忻 立 

(1.苏州科技学院电子与信息工程学院,江苏苏州215009;2.苏州科技学院计算机应用技术研究所,江苏苏州215009) 

摘要:介绍了移动互联网及应用系统开发技术的发展趋势。剖析了微信公众平台的架构,从应用模块和接口访问 

两方面详细说明了基于微信公众平台的移动互联网应用设计的方法,并用“e活动”作为实例进行了系统的说明。 

关键词:微信;微信平台;架构;APP 

中图分类号:TP393 文献标志码:A 文章编号:1672—0687(2015)03-0047—05 

随着人们生活水平的提高和科学技术的进步,移动互联网正以雨后春笋之势迅速发展。2013年中国移 

动互联网在延续了近几年的增长态势的基础上,进一步在人们生活的方方面面深深地打上“移动互联网”的 

烙印。随着智能手机成为第一终端、互联网中心和个人信息中心,人们把自己的沟通、社交、娱乐、生活、商务、 

隐私交给了手机及其各种应用Ⅲ。因此,移动应用的发展趋于多样化和个性化。 

移动互联网应用的原有开发模式已经落后于应用需求,是对开发人员的一大挑战。腾讯公司微信公众 

平台的推出,为开发者提供了新的开发模式,弥补了传统APP开发的不足,个人、企业可根据自身需求,定制 

各自的“门户应用”来提高访问量,增加知名度。所以,掌握基于微信公众平台的应用开发方法势在必行。 

1微信公众平台的架构 

1.1微信公众平台功能 

微信公众平台主要有群发功能和高级功能圜。群发功能,即群发一条消息,该消息会推送给关注公众账 

号的所有用户。群发消息可以根据需求选择单文字消息、图 

片消息、语音消息、视频消息和图文消息。高级功能是公众 

表1服务号和订阅号对比表 

平台提供给开发者用于二次开发的接口,分为编辑模式和 

开发模式。开发者只能选择其中一种开发模式。 

微信公众账号分为服务号和订阅号(见表1),两者都 

具有群发功能和高级功能,只是在功能权限方面有差异。 

服务号一个月内仅可以发送一条群发消息,可直接使 

用自定义菜单。服务号发给用户的消息,会显示在用户的聊 

天列表中。并且,在发送消息给用户时,用户将收到即时的 

消息提醒0 

订阅号为用户提供信息和资讯。订阅号每天可以发送 

条群发消息,开发之后才能使用自定义菜单。订阅号发给 

用户的消息,将会显示在用户的订阅号文件夹中。在发送消 

息给用户时。用户不会收到即时消息提醒I引。微信公众平台 

功能如图1所示。 

图1微信公众平台功能图 

【收稿日期】2014-06-07 

【基金项目】江苏省教育厅自然科学研究项目(08KJD510007);江苏省大学生实践创新训练计划项目(201310332056X) 

【作者简介】陆卫忠(1964一),男,江苏常熟人,副教授,硕士,研究方向:计算机控制网络与嵌入式系统,信息系统安全。 

苏州科技学院学报(自然科学版) 

1.2微信公众平台架构 

2015血 

公众平台消息接口为开发者提供了与用户进行消息交互的能力[31。对于成功接入公众平台开发接口的 

公众账号,用户发消息给公众号,微信公众平台服务器会使用H1TrP请求对接入的网址进行消息推送。第三 

方服务器(开发者使用的服务器)可通过响应包回复特定结构的消息,从而达到回复消息的目的。 

使用了高级功能的微信公众账号就成为一个配备了一些指令规 

则的账号[31。在用户关注公众账号后,发送特定的指令给公众账号即 

可获得相应的结果。而这些规则的逻辑需要开发者根据公众平台的 

开发规则在后台实现。用户、微信服务器和第三方服务器三者之间的 

交互关系如图2所示。 

微信客户端 

(用户的移动终端) 

微信服务器 

(徽信平台) 

第三方服务器 

(1)用户在微信客户端向微信平台发送消息,该消息会通过网络 

图2公众平台交互关系图 

到达微信服务器;(2)微信服务器收到该消息后,把消息转发给第三方服务器;(3)该服务器收到请求后,首先 

解析消息格式,提取消息的内容,并经预定义的业务逻辑处理,将处理结果封装后返回给微信接口;(4)微信 

平台把收到的消息转发给用户的微信客户端。 

2微信公众平台的应用设计方法 

微信公众平台的高级功能中提供的两种二次开发的模式:编辑模式和开发模式[41。开发者根据需求可以 

选择其中一种模式进行二次开发。 

2.1二次开发模式 

2.1.1编辑模式编辑模式下具有的功能是:①消息推送;②预设自动回复,为用户提供需求信息;③将系统 

平台从PC端向WAP延伸嘲。 

编辑模式采用跳转到页面方式『5],因此,可在系统平台中进行二次开发,在系统服务器中制作功能页面, 

供“编辑模式”下链接调用,这样,使开发平台应用得到了拓展。 

2.1.2 开发模式 开发模式下具有的功能是:①提供资讯;②预设自动回复;③提取系统平台数据,实现个性 

化的服务(41。 

开发模式下,微信平台可转发H1]rP请求的XML数据包到配置的URL上,开发人员设计的程序解析该 

XML数据包后对数据库操作,从而将拓展功能引入到平台中来:①引用网络资源,如:天气查询、火车票查 

询、幽默笑话;②自行设计数据库,设计出个性化服务,具有很强的开发拓展功能。编辑模式和开发模式的优 

劣比较,见表2。 

2.2应用模块及接口访问 

表2编辑模式和开发模式优劣对比表 

公众平台提供的应用模块主要有:接受用户消息、向 

用户回复消息、事件推送、会话界面自定义菜单等。而开发 

的前提是:网址接入,即接口配置信息。下面根据开发的流 

程来详细介绍应用模块及其接口访问方式。 

(1)申请微信公众账号。输入网址:https://mp.weixin. 

qq.com/进行注册,需要提供一个电子邮箱,个人用户还需 

提供身份信息。 

(2)部署第三方服务器。选择云服务器或者在Internet 

URL 

上可访问的普通服务器。 

(3)注册接口,即填写接口配置信息:登录自己的公众 

[二二二 二二二] 

账号的前台,依次单击导航上的“高级功能” 右边的“开

发模式”一“成为开发者”,可以看到如图3的界面。 

[ 口 

图3接口配置界面 

开发者需要提供一个URL和一个Token,URL是上一步部署的服务器的接口,是第三方服务器和微信 

服务器交互的桥梁。例如:当用户发消息给微信平台时,微信服务器会将该消息转发给URL所指向的第三方 

第3期 陆卫忠,等:基于微信公众平台架构的应用系统开发 49 

服务器。Token是微信服务器和被开发的公众账号服务器之间的密钥问; 

(4)编写代码,完成应用模块的业务逻辑。 

应用模块一:接收用户消息。当微信用户向公众账号发消息时,微信服务器会将用户消息用XML封装 

后以HTrP请求发送到配置的URL上。可以接收的消息分为:文本消息、图片消息、地理消息和链接消息。例 

如,文本消息的XML格式是: 

<xml> 

<ToUserName><![CDATA[toUser]]></ToUserName> 

表3接收用户消息字段描述 

<FromUserName><!【CDATA[fromUser]]> 

参数 描述 

</FromUserName> 

TbUserName 

开发者微信账号 

<CreateTime>1 34883 1 860</CreateTime> 

FromU ̄rName 

发送方账号(一个OpenlD) 

<MsgType><!【CDATA[text]]></MsgType> 

CreateTime 

消息创建时间(整型) 

<Content><![CDATA[thisisatest]]></Content> 

<MsgId>1234567890123456</MsgId> 

MsgType 

消息类型,根据不同消息可以为“text” 

或“image”或“location”或“link” 

</xml> 

MsgId 

消息ID,64位整型 

根据不同类型的消息字段来获得所需的信息。表3 

Content 

文本消息内容(Ms rype=”text”)

PieUrl 

Location X 

~RⅫ 一m 

 

就是主要的消息字段及其描述。 

图片链接(MsgType=”image”) 

应用模块二:向用户回复消息。当微信用户发来一 

地理位置纬度(MsSTYpc=”location”:

一C 

 

一一

条消息时,要回复相应的消息。根据收到的MsgType来 

LocationY 

__

地理位置经度(MsgType=”location”) 

确定消息的类型,然后构造XML数据包以HTTP响应 

Scale 

地图缩放大小(MssTypc=”location”) 

Label 

地理位置信息(MsgTypc=”location”) 

回复给用户。可以回复的消息分为:文本消息、音乐消 

Title 

消息标题(Ms pc=”link”) 

息、链接消息和图文消息。例如,回复链接消息的XML 

Description 

消息描述(MsgTy ̄=”link”) 

数据包格式是: 

Url 

消息链接(MsgType=”hnk”) 

<xml> 

<ToUserName><![CDATA[toUser]]></ToUserName> 

表4回复用户消息字段描述 

参数 描述 

<FromUserName><![CDATA[fromUser]]> 

接收方账号(收到的OpenlD) 

</FromUserName> 

开发者微信公众账号 

<CreateTime>1 2345678</CreateTime> 

消息创建时间 

消息类型, 根据不同消息可以为“text”或 

<MsgType><![CDATA[text]]></MsgType> 

music”或“news” 

<Content><![CDATA[<a href=”http://www.qq.tom”> 

为1时,星标刚收到的消息 

回复的文本消息内容,长度不超过2048字节 

qq.com</a>]]></Content> 

音乐链接 

<FuncFlag>O</FuncFlag> 

高质量音乐链接,WIFI环境优先使用该链接播 

放音乐 

</xml> 

图文消息个数,限制为l0条以内 

回复用户消息字段描述见表4。 

多条图文消息信息,默认第一个item为大图 

应用模块三:事件推送。当用户在客户端触发了事 

图文消息标题 

图文消息描述 

件的时候.公众账号服务器也会收到一条消息。这些事 

图片链接,支持JPG、PNG格式 

件包括用户订阅公众账号、取消关注公众账号和单击自 

单击图文消息跳转链接 

定义菜单171。此时,公众账号服务器会收到事件推送的XML格式消息,开发者可根据需求读取相关字段并进 

行处理即可。公众账号服务器收到的事件推送的消息格式如下: 

<xml> 

<ToUserName><!『CDATA[toUser]]></ToUserName> 

<FromUserName><!『CDATA[FromUser]]></FromUserName> 

<CreateTime>123456789</CreateTime> 

<MsgType><![CDATA[event]]></MsgType> 

一H一m 讪一  


本文标签: 消息 公众 微信