《微信公众平台二次开发手册.docx》由会员分享,可在线阅读,更多相关《微信公众平台二次开发手册.docx(10页珍藏版)》请在三一办公上搜索。
1、微信公众平台二次开发手册微信二次开发手册 1. 准备工作 1) 申请微信服务号,进行微信认证; 2) 成为开发者:申请成功后,从网页上登录微信公众平台,点击“开发者中心”,输入“接收微信平台转发消息的统一URL”和“TOKEN”提交成为开发者。(这两个参数后面还可以修改) 3) 获取AppId 和AppSecret :成为开发者后,在“开发者中心中”页面,可获取AppId和AppSecret两个参数。 2. 项目搭建及配置 2.1. 创建一个web项目,还需将wadata-weixin.jar包添加到项目中。 Wadata-weixin.jar下载地址: 提取码:6eb1 wadata-wei
2、xin.jar包提供主要两个功能: a) 微信转发请求处理器WeiXinServlet,主要做以下事件: 1接收微信转发的消息; 2对消息进行封装成对象WeiXinMessage; 3把消息对象WeiXinMessage转递给微信菜单处理器WeiXinProcessor进行业务逻辑处理,微信菜单处理器返回微信响应对象WeiXinPacket 4把微信响应对象WeiXinPacket解析成xml消息,并响应微信请求。 b) 微信接口统一调用类WeiXinInterface,目前提供以下功能: 1获取全局Access_Token 2创建微信菜单 3查询微信菜单 4删除微信菜单 2.2. 在web.
3、xml中配置用于接收微信消息的Servlet WeiXinServlet com.wadata.weixin.base.servlet.WeiXinServlet PROCESSOR_PACKAGE com.wadata.weixin.mmp.processor WeiXinServlet /weixin 参数说明: 1) PROCESSOR_PACKAGE:微信公众号功能菜单的处理器的Java包路径。 2.3. application.properties: 将准备工作中输入的TOKEN 和开发都中心页面获取到的AppId和 AppSecrets三个参数配置到properties中。 3.
4、微信菜单管理 微信菜单接口中要求第三方将自己的菜单数据以JSON格式提交。 因此首先要在项目创建一个JSON格式的文件,把自定义菜单配置好。 按以下示例配置: button: type: click, name: 今日歌曲, key: V1001_TODAY_MUSIC , type: click, name: 歌手简介, key: V1001_TODAY_SINGER , name: 菜单, sub_button: type: view, name: 搜索, url: , type: view, name: 视频, url: , type: click, name: 赞一下我们, key:
5、V1001_GOOD 说明: button数组中存放的是一级菜单,最多存放三个一级菜单; sub_button数组中存放的是二级菜单,最多存放的5个二级菜单; 支持两种菜单类型 click:点击菜单将在微信中直接显示消息; view:点击菜单将打开微信网页; wadata-weixin.jar包中WeiXinInterface类提供微信菜单的创建,查询,删除接口。 1、 创建实例: WeiXinInterface weiXinInterface = new WeiXinInterface; 2、 调用获取ACCESS_TOKEN接口 WeiXinAccessToken weixinAccess
6、Token = weiXinInterface.token(client_credential,Application.getWeixin_app_id, Application.getWeixin_app_secret); String accessToken = weixinAccessToken. getAccess_token; 参数说明: 第一个参数:固定值client_credential 第二个参数:application.properties配置文件中的AppId 第三个参数:application.properties配置文件中的AppSecrets 微信菜单创建: 3、 调
7、用菜单创建接口 weiXinInterface.menuCreate(accessToken, menuJson); 参数说明: 第一个参数:第2步中获取到的ACCESS_TOKEN,如果时间超过2个小时,则需要重新进行第2步操作获取ACCESS_TOKEN 第二个参数:自定义的菜单JSON文件的字符串 返回值:true表示创建成功,否则创建失败,失败原因可通过日志查看。 微信菜单查询: 4、 调用菜单查询接口 weiXinInterface.menuQuery(accessToken); 参数说明: 第一个参数:第2步中获取到的ACCESS_TOKEN,如果时间超过2个小时,则需要重新进行第
8、2步操作获取ACCESS_TOKEN 返回值:菜单的JSON格式字符串 微信菜单删除 5、 调用菜单删除接口 weiXinInterface.menuDelete(accessToken); 参数说明: 第一个参数:第2步中获取到的ACCESS_TOKEN,如果时间超过2个小时,则需要重新进行第2步操作获取ACCESS_TOKEN 返回值:true表示删除成功,否则删除失败,失败原因可通过日志查看。 微信菜单修改 6、 先修改菜单的JSON文件 7、 调用菜单删除接口,删除原来创建的菜单 8、 调用菜单创建接口,创建新的菜单 4 click类型菜单开发 在自定菜单JSON文件中,click类型
9、菜单需要配置一个与菜单对应的唯一的key。 您需要在“项目搭建及配置”一步中的PROCESSOR_PACKAGE参数指定包中创建一个实现了WeiXinProcessor接口的类,并用注解Processor(菜单的key值)来标注在该类。 示例: /* * 微信菜单 - 投诉建议 */ Processor(V3001_COMPLAIN) public class ComplainProcessor implements WeiXinProcessor Override public WeiXinPacket process(WeiXinMessage message) /菜单事件响应 retur
10、n WeiXinPacketHelper.buildTextPacket(message, MessageFormat.format(Application.getComplain, Application.getSystem_domain, message.getFromUserName); WeiXinProcessor接口说明: 该接口中只有一个方法: public WeiXinPacket process(WeiXinMessage message); 入参:微信消息的封装对象, 出参:微信响应对象, WeiXinServlet会自动把接收到的xml消息封装成WeiXinMessage
11、对象,并传递给菜单处理器WeiXinProcessor,WeiXinProcessor处理完业务后需要把结果封装成WeiXinPacket对象返回。 WeiXinProcessor菜单处理器中,如果需要获取微信用户的基本信息,则需要调用获取用户基本信息接口,ACCESS_TOKEN参数可调用微信菜单管理中的第2步来获取,OPENID参数可从WeiXinMessage对象中获取。 文本消息封装示例: /* * 组装文本响应包 */ public static WeiXinPacket buildTextPacket(WeiXinMessage message, String content) W
12、eiXinPacket packet = new WeiXinPacket; packet.setFromUserName(message.getToUserName); packet.setToUserName(message.getFromUserName); packet.setMsgType(WeiXinMsgType.TEXT.getValue); packet.setCreateTime(Long.toString(new Date.getTime); packet.setContent(content); return packet; 说明: WeiXinMessage mess
13、age为接收到的消息封装对象 String content为要返回的消息字符串 图文消息封装示例: /* * 组装新闻响应包 */ public static WeiXinPacket buildNewsPacket(WeiXinMessage message, List items) WeiXinNewsPacket packet = new WeiXinNewsPacket; packet.setToUserName(message.getFromUserName); packet.setFromUserName(message.getToUserName); packet.setCrea
14、teTime(Long.toString(new Date.getTime); packet.setMsgType(WeiXinMsgType.NEWS.getValue); packet.setArticleCount(Integer.toString(items.size); packet.setItems(items); return packet; 说明: WeiXinMessage message为接收到的消息封装对象。 List items为要返回的图文对象列表,列表中的图文对象最多为10个,否则返回不成功。所以您需要先将图文信息封装成WeiXinItem对象。 5 view类型菜
15、单开发 View类型菜单,没有唯一的key,只有对应的菜单url。点击view类型菜单,微信会在自带的浏览器中打开菜单的url链接。 微信网页要适应手机的屏幕大小,需要做Wap网页,也就是在网页的标签中添加以下代码: 如果进入到微信菜单页面时,需要是哪个用户进来的话,就需要调用OAuth2.0网页授权接口来获取用户的基本信息了。 6 微信消息分组群发 由于微信群发接口有次数限制,因此需要把关注者先分组,再按组来群发消息。以下为群发接口的调用说明: 1、该接口暂时仅提供给已微信认证的服务号 2、虽然开发者使用高级群发接口的每日调用限制为100次,但是用户每月只能接收4条,请小心测试 3、无论在公众平台网站上,还是使用接口群发,用户每月只能接收4条群发消息,多于4条的群发将对该用户发送失败。 4、具备微信支付权限的公众号,在使用高级群发接口上传、群发图文消息类型时,可使用标签加入外链 业务系统中要进行消息群发,需要先将 微信用户 与 业务系统用户 进行绑定,然后将接收群发消息的系统用户对应的微信用户分配到指定的组中。 然后调用高级群发接口中的根据分组进行群发功能来进行群发。