微信公众平台开发

一、微信公众平台简介

  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、附录。

      网易汽车公众账号的二维码:

 

                        

 

      

     

  

 

 

   

 

posted @ 2013-06-20 15:16  夜明珠  阅读(853)  评论(1编辑  收藏  举报