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

配置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>

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容