测试微信公众号申请配置详细解答

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/learner198461/article/details/84671193

如果我们没有公众号可以测试又不想申请企业性质可以申请测试公众号,申请地址

http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

申请好后需要填写如下信息,这里比较重要就是需要提供接口验证,也就是你把

 微信会调用我们写的服务接口,具体Java验证代码

@GetMapping(value = "/checksign",produces = { "application/json;charset=utf-8" })
    public String getWeChatButt(@RequestParam String signature,
            @RequestParam String timestamp,@RequestParam String nonce,
            @RequestParam String echostr) {        
        //检验signature
        Boolean flag = WeChatService.checkSignature(signature, token, timestamp, nonce);
        if(flag) {
            return echostr;
        }
        return null;
    }
    
public static boolean checkSignature(String signature, String token, String timestamp, String nonce) {
        //对参数进行排序
        TreeSet<String> ts = new TreeSet<String>();
        ts.add(token);
        ts.add(timestamp);
        ts.add(nonce);
        String str;
        String tempStr="";
        while((str=ts.pollFirst())!=null){
            tempStr+=str;
        }
        // SHA1加密
        String sha1Str = SHA1(tempStr);
        // 检验签名是否一致
        return sha1Str.equals(signature);
    }
    
    /**
     * SHA-1加密
     * @param str 需要加密的字符串
     * @return  返回加密后的字符串
     */
public static String SHA1(String str) {
        MessageDigest digest = java.security.MessageDigest.getInstance("SHA1");
        digest.update(str.getBytes());
        byte messageDigest[] = digest.digest();
        // Create Hex String
        StringBuffer hexStr = new StringBuffer();
        // 字节数组转换为 十六进制 数
        for (int i = 0; i < messageDigest.length; i++) {
            String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
            if (shaHex.length() < 2) {
                hexStr.append(0);
            }
            hexStr.append(shaHex);
        }
        return hexStr.toString();        
    }

猜你喜欢

转载自blog.csdn.net/learner198461/article/details/84671193