微信公众平台开发01
Table of Contents
1 微信公众平台
1.1 开发准备
- 微信公众号服务器只是做了一个中介的作用
微信公众号服务器和网站的关系
- 可以使用nat123在内网搭建网站,作为测试开发
- 可以申请微信公众平台接口测试帐号,前期避免繁琐的账号认证,打开浏览器,这里以IE 为例。输入:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
- 正式运营时,可以使用新浪云计算SAE Java平台,不用自己购买服务器和管理服务器
1.2 功能
- 自定义欢迎信息:用户关注我们的微信公众号时,返回自定义欢迎信息
- 提供位置服务:网站收到用户发送的位置信息,在数据库中保存位置信息, 再根据用户发送的信息在制定的位置范围内搜索,如用户先发送位置信息"兰 州市西固区玉门街什字",再发送"超市",网站收到这个信息,先从数据库中 取得用户位置信息,再根据位置信息和搜索信息,得到用户想要的结果,以微 信的形式返回
- 提供自定义菜单:如"获取优惠卷","调查问卷"
1.3 代码分析
主要类的关系
1.3.1 WeixinSerciceImpl代码分析
weixinConfirm:微信确认请求是微信公众平台向网站发送消息的入口,分为GET和POST两种 方式,GET用于验证网站真实性,POST用于向网站发送信息和事件推送。目前发送信息处理了 TEXT类型的消息,事件推送处理了自定义菜单点击和模板消息推送
//微信确认请求 public String weixinConfirm(HttpServletRequest request,HttpServletResponse response)throws Exception | | v /** * 处理微信发来的POST请求 * * @param request * @return */ private String processRequest(HttpServletRequest request) | | v /** * 根据属性名到属性配置文件内找对应的xml文件进行返回。 * @param request * @param content * @param requestMap * @return */ private String responseMessage(HttpServletRequest request,String content,Map<String, String> requestMap) | | v /** * 返回文本信息 * @param requestMap * @param request * @param content * @return */ private String responseTxtMsg(Map<String, String> requestMap,HttpServletRequest request,String content)
1.3.2 WeixinUtil代码分析
httpsRequest:发起https请求并获取结果,分为GET和POST两种方式。用于菜单创建(POST), 获取 accesstoken的接口,获取网页授权认证, 推送模板信息,获取用户信息,获取微信IP地址 列表,网页授权获取用户信息,长链接转换成短链接
/** * 发起https请求并获取结果 * @param requestUrl 请求地址 * @param requestMethod 请求方式(GET、POST) * @param outputStr 提交的数据 * @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值) */ public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outputStr)