5.3 微信公众平台软件开发工具和方法
5.3.1 微信开发的流程
1. 微信公众平台开发概述
微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台,而公众平台开发接口则是提供服务的基础,开发者在公众平台网站中创建公众号、获取接口权限后,可以通过阅读接口文档来帮助开发。
为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号、移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下,绑定后,一个用户虽然对多个公众号和应用有多个不同的OpenID,但他对所有这些同一开放平台账号下的公众号和应用,只有一个UnionID,可以在用户管理-获取用户基本信息(UnionID机制)文档了解详情。
公众号主要通过公众号消息会话和公众号内网页来为用户提供服务的。
2.公众号消息会话
公众号是以微信用户的一个联系人形式存在的,消息会话是公众号与用户交互的基础。目前公众号内主要有这样几类消息服务的类型,分别用于不同的场景。
(1)群发消息:公众号可以以一定频次(订阅号为每天1次,服务号为每月4次),向用户群发消息,包括文字消息、图文消息、图片、视频、语音等。
(2)被动回复消息:在用户给公众号发消息后,微信服务器会将消息发到开发者预先在开发者中心设置的服务器地址(开发者需要进行消息真实性验证),公众号可以在5秒内做出回复,可以回复一个消息,也可以回复命令告诉微信服务器这条消息暂不回复。被动回复消息可以设置加密(在公众平台官网的开发者中心处设置,设置后,按照消息加解密文档来进行处理。其他3种消息的调用因为是API调用而不是对请求的返回,所以不需要加解密)。
(3)客服消息:在用户给公众号发消息后的48小时内,公众号可以给用户发送不限数量的消息,主要用于客服场景。用户的行为会触发事件推送,某些事件推送是支持公众号据此发送客服消息的,详见微信推送消息与事件说明文档。
(4)模板消息:在需要对用户发送服务通知(如刷卡提醒、服务预约成功通知等)时,公众号可以用特定内容模板,主动向用户发送消息。
3.公众号内网页
许多复杂的业务场景,需要通过网页形式来提供服务,这时需要用到:
(1)网页授权获取用户基本信息:通过该接口,可以获取用户的基本信息(获取用户的OpenID是无需用户同意的,获取用户的基本信息则需用户同意)
(2)微信JS-SDK:是开发者在网页上通过JavaScript代码使用微信原生功能的工具包,开发者可以使用它在网页上录制和播放微信语音、监听微信分享、上传手机本地图片、拍照等许多能力。
5.3.2 微信开发可以实现的功能。
1.移动应用开发
通过分享给微信好友,分享到朋友圈,你的移动应用被用户进行快速社交传播。支持微信收藏。通过微信收藏,用户可将移动应用的内容收藏到微信中,带来更多下次使用,支持微信支付。通过接入微信支付功能,用户可以在移动应用中方便快捷地通过微信支付来付款。
2.网站应用开发
通过接入微信登录功能,用户可使用微信账号快速登录你的网站,降低注册门槛,提高用户留存。支持账号统一。同一用户使用微信登录你的不同应用和公众账号,会对应同一个UnionID,以便进行不同业务间的账号统一。未来网站应用将会开放更多更有价值的接口和能力。
3.公众账号开发
相比移动应用,微信公众账号更容易获得用户,也更容易进行传播。支持微信支付。
通过接入微信支付功能,用户可以在公众账号中方便快捷地通过微信支付来付款。申请微信认证,微信认证的订阅号可获得自定义菜单权限,认证服务号能够获得所有高级接口。
4.第三方平台开发
第三方平台的开放,让公众号或小程序运营者在面向垂直行业需求时,可以通过一键登录授权给第三方开发者,来完成相关能力。
5.3.3 微信开发需要的技术
对于公众平台的开发,官方只给出了PHP的示例代码,这也让部外开发者误以为只有PHP一种选择。公众平台的处理程序其实就是一个web项目,负责接收并响应微信服务器发送的HTTP请求。因此,只要是支持动态Web开发的编程语言,都能够用于公众平台开发例如Java,PHP、.NET、ASP和Ruby等。
建议读者选择自己擅长或者热门的编程语言,这样才能保证有较好的质量和效率。
下面将对搭建公众平台开发环境用到的工具进行介绍,至于工具的安装和配置都比较简单,网上有大量的资料可以参考。
1. JDK
JDK是原SUN公司推出的Java开发工具包,它是整个Java的核心,包括了Java运行环境、Java工具和Java基础类库。JDK已由最初的JDK1.0,发展到现在的JDK1.9,随着版本的不断更新,运行效率也得到了显著的提高。
2. MyEclipse
Java开发工具有很多种,比较著名的有Eclipse和NetBeans,这些工具本身也是使用Java编写的。其中,Eclipse以其开源和扩展性,深受广大Java开发者喜爱。
Eclipse本身只是一个框架和一组服务,通过安装相应的插件构建开发环境(如果要用Eclipse开发JavaWeb应用,就需要为其安装支持JavaWeb开发的插件,而MyEclipse就是最佳选择。
MyEclipse是一款非常优秀的用于开发Java,J2EE应用的Eclipse插件,目前支持Java,JSP,Servlet,JDBC,AJAX、JSF,Struts,Spring,Hibernate,EJB3等多项功能。MyEclipse是一款几乎囊括目前所在主流开源产品的专属Eclipse开发工具。
3.Tomcat
Tomcat是Apache软件基金会的Jakarka项目中一个核心项目,是一个免费的、开源的web服务器,在中小型习题和并发访问的许多场合使用普遍。
4.启用开发模式的必备条件
不同于编辑模式,开发模式的启用并不是简单地切换状态开关就能完成的。启用开发模式至少需要具备以下3个条件。
(1) 完善账号信息:在启用开发模式时,系统会检查公众账号的头像、功能介绍、运营地区等信息是否设置完整。在公众平台的设置模块,能够看到公众账号的全部信息。
(2) 请求校验程序:启用开发模式的过程中会要求填写接口配置信息,这就意味着要先完成请求校验程序的开发。
(3) 公网环境:通常,我们在个人电脑上部署的web应用都处在内网环境,只能由自己或局域网用户访问,外网用户是访问不到的。由于公众账号的处理程序需要与微信服务器进行交互,因此必须将其部署在公网环境。公网环境除了能够支撑程序的运行外,还应具备独立的公网IP或者能够为部署的应用程序分配访问域名,使得应用程序能够被外网用户访问。对于许多中小企业或个人开发者而言,公网环境无疑成了使用公众平台开发模式的最大障碍。