微信公众平台开发
一、微信公众平台简介
1、什么是微信公众平台?
微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字、图片、语音的全方位沟通互动。
2、微信公众平台的用户定位
微信公众号主要面向名人、政府、媒体、企业等机构推出的合作推广业务。在这里可以通过微信渠道将品牌推广给上亿的微信用户,减少宣传成本,提高品牌知名度,打造更具影响力的品牌形象。
微信用户利用公众平台,可以关注自己需要的公众账号,从而得到最及时的消息通知。
微信公众平台还有一个极其重要的功能,用户可以向平台账号发送消息, 该公众账号的开发者可以接收并响应该消息。这样公众账号可以被看做是一项在线服务。
二、微信公众账号的使用
1、认证公众账号
对于需要用拥用一个公众账号的用户来说,认证是第一步。
需要在业内有一定知名度,且订阅用户至少需要500位,才能申请认证。一般企业和个人都难以通过,只有著名人物和公司,且符合条件者方可申请认证。
认证通过之后,就可以通过微博、网站等途径,推广自己的微信公众号的二维码,来获取更多订阅用户,扩大影响力。
2、添加好友
微信公众平台无法主动去添加好友,只能被他人添加为好友。
3、消息推送
普通的公众帐号,可以群发文字、图片、语音三个类别的内容。
认证的帐号,有更高的权限,能推送更复杂优质的图文信息。
4、自动回复
微信用户可以通过发送消息的方式,将一些常用的查询和疑问传递给公众账号,公众账号后台接入系统会进行自动回复。
这是一个非常重要的功能,利用它用户可以向平台账号提交关键词、图片、地理位置、链接以及事件等消息。平台可以根据用户的消息,进行处理并回复。
三、公众账号的消息回复开发
上面提到了非常重要的一个功能就是自动回复,下面我们就来看一下如何实现。
1、登陆平台后台。
打开http://mp.weixin.qq.com , 使用公众账号登陆, 进入“高级功能>开发模式”。
2、申请消息接口。
进入 “接口配置信息” 页面, 填写接口URL地址,还有一个Token. 如下图所示:
保存提交后,返回开发模式界面。此时看到接口配置成功提示。如图:
同时,你还可以看到你的公众账号拥有的消息接口权限信息。如下图所示:
3、 网址接入。
提交接口地址URL和Token之后,微信平台会进行验证。微信服务器将发送GET请求到填写的URL上,并且带上四个参数:
参数 | 描述 |
---|---|
signature | 微信加密签名 |
timestamp | 时间戳 |
nonce | 随机数 |
echostr | 随机字符串 |
开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。下面是校验方式:
signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
加密/校验流程:
(1). 将token、timestamp、nonce三个参数进行字典序排序。
(2). 将三个参数字符串拼接成一个字符串进行sha1加密。
(3). 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
下面是代码范例:
//微信的签名 String signature = requesst.gets("signature", ""); String timestamp = requesst.gets("timestamp", ""); String nonce = requesst.gets("nonce", ""); String token = "your token"; List<String> sigList = new ArrayList<String>(); sigList.add(timestamp); sigList.add(nonce); sigList.add(token); Collections.sort(sigList); StringBuffer sb = new StringBuffer(); for (String sig : sigList) { sb.append(sig); } String sigString = sb.toString(); byte[] sigbytes = sigString.getBytes(); try { String sha1String = DigestUtils.shaHex(sigbytes); if (signature.equals(sha1String)) { String echostr = request.gets("echostr", ""); return echostr; } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
4、消息回复。
前面三步完成之后,就可以开始着手实现消息回复功能了。
我们先看一下业务流程:
4.1、微信用户发送消息
用户关注公众账号以后,就可以发送多种形式的消息,例如文本、图片、链接、事件、地理位置等。
4.2、微信后台发送消息到公众账号
微信后台服务器会根据用户消息的类型,将消息包装为XML格式的消息体,POST到公众账号。 举例:
4.2.1、文本消息
接收文本消息格式:(微信用户发送给公众账号的消息格式)
其中Content字段就是用户发送的文本消息内容, 我们开发的接入系统可以对该内容进行分析, 作相应处理后进行回复。
4.2.2、地理位置消息
接收地理位置消息格式(微信用户通过定位功能发送给公众账号的消息)
其中Location_X 字段是用户手机所在的纬度, Location_Y字段是用户所在的经度, 我们开发的接入系统可以对该内容进行分析, 作相应处理后进行回复。
4.2.3 回复消息格式
回复图文消息格式:(公众账号回复给微信用户的消息格式)
4.2.4 应用举例
拿 网易汽车公众账号 举例, 例如我们发送 "宝来" 字样到公众账号。系统会查找符合 “宝来” 关键词的车型数据,并回复显示。
我们看到,符合关键词 “宝来” 的车型数据会按照一定的排序规则, 选出前几个显示给用户。如图所示:
仍然拿 网易汽车公众账号 举例, 例如我们发送地理位置信息到公众账号。系统会查找举例当前用户所在位置最近的经销商店铺列表,并回复显示。
使用微信软件的定位功能。我们可以欣喜地看到,公众账号接受了我们的地理位置消息后, 迅速找出了距离我们当前位置最近的经销商店铺列表。如图所示:
5、附录。
网易汽车公众账号的二维码: