1、接入公众平台

推荐查看官方文档: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432

1、公众号有 编辑模式 和 开发模式  

开发模式交互: 用户关注公众号后发送消息,先到 微信服务器, 再转发到 指定的服务器(我们定义的应用),等处理完再返回给微信服务器,进而返回给用户。

所以想进行接入公众平台测试要有: 一、独立域名的网站(用来和微信服务器交互,单纯测试的话,可以用花生壳,参考上一篇);

                                              二、微信公众号(这里由于测试,直接用微信的公众帐号测试号,通过手机微信扫描二维码即可登陆。

                                              地址: http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

 

登陆之后,可以在接口配置信息看到 如下图:

1、配置接口信息

URL:       是指开发者用来接收微信消息和事件的接口URL,如果服务器域名是mypc.cn,应用名为weixin,  用weixinValidate.do来接收消息,url如图上

Token:    可由开发者可以任意填写,用作生成签名(该Token会和接口URL(如weixinValidate.do)中包含的Token进行比对,从而验证安全性),可以随便填写,但注意保密。

详情参考 接入指南 : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319

这二个都是从应用得到的,点提交后,提示 配置成功才证明 我们的服务器接入公众平台。

 

下面是服务器的weixinValidate.do

首先看文档了解到

代码如下:

@Controller
public class ValidateController {

    @RequestMapping(value = "/weixinValidate",method = RequestMethod.GET)
    @ResponseBody
    public String weixinValidate(String signature, String timestamp, String nonce, String echostr ){

        // 1)将token、timestamp、nonce三个参数进行字典序排序
        String[] arrs = {WeixinUtil.TOKEN,timestamp,nonce}; //WeixinUtil.TOKEN: 抽取出来的TOKEN,为了重用
        Arrays.sort(arrs);
        // 2)将三个参数字符串拼接成一个字符串进行sha1加密
        String str = arrs[0] + arrs[1] + arrs[2];
        // 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
        if (signature.equals(SecurityUtil.SHA1(str))){
            //确认此次GET请求来自微信服务器,返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败
            return echostr;
        }else
            return null;
    }
}

将应用部署到服务器后,重启后。 回到刚才 微信的公众帐号测试号的接口配置信息,点提交后,提示 配置成功才证明 我们的服务器接入公众平台。

这时候就接入成功了。

微信后台发送消息是一个GET请求,URL会带上signature、timestamp、nonce这3个参数;

如果是别人伪造的请求,由于不知道token,所以,无法计算出正确的signature;

timestamp和nonce 防止第三方通过监听后重放攻击


posted @ 2017-10-19 21:26  天涯越野  阅读(454)  评论(0编辑  收藏  举报