微信公众号开发测试号配置

配置URL验证地址

微信服务器会将请求发送到配置的地址, 地址必须是80端口, 可使用花生壳等工具

验证参数

signature: 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp: 时间戳
nonce: 随机数
echostr: 随机字符串

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

1 将token、timestamp、nonce三个参数进行字典序排序
2 将三个参数字符串拼接成一个字符串进行sha1加密
3 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

接入配置

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String signature = req.getParameter("signature");
        String timestamp = req.getParameter("timestamp");
        String nonce = req.getParameter("nonce");
        String echostr = req.getParameter("echostr");
        
        PrintWriter out = resp.getWriter();
        if(CheckUtil.checkSignature(signature, timestamp, nonce)){
            System.out.println("校验成功");
            out.print(echostr);
        }
    }

sha1加密工具类####

private static final String token = "weixintoken";
    public static boolean checkSignature(String signature, String timestamp, String nonce){
        String[] arr = new String[]{token,timestamp,nonce};
        //排序
        Arrays.sort(arr);
        
        //生成字符串
        StringBuffer content = new StringBuffer();
        for(int i=0;i<arr.length;i++){
            content.append(arr[i]);
        }
        
        //sha1加密
        String temp = getSha1(content.toString());
        
        return temp.equals(signature);
    }

因为用的是servlet 在web.xml中添加mapping配置

<servlet>
        <servlet-name>weixinServlet</servlet-name>
        <servlet-class>com.xxxx.xxxx.controller.WeixinServlet</servlet-class>
</servlet>
<servlet-mapping>
        <servlet-name>weixinServlet</servlet-name>
        <url-pattern>/wechat/portal</url-pattern>
</servlet-mapping>

配置完之后点击提交提示配置成功就可以了

    原文作者:KKyKK
    原文地址: https://www.jianshu.com/p/b38aeb253ee7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞