微信URL有效性验证

1、填写配置项:填写 URL 和 Token 点击提交按钮  微信服务器会以get方式请求到所指定的URL,在此URL中进行URL的有效性验证

2、URL有效性的验证:

 1 if ("get".equalsIgnoreCase(request.getMethod())) {
 2                 StringBuffer sb = new StringBuffer();
 3                 // 从数据库找到该token或者设置token为 固定值
 4                 String token = "";
 5                 //1. 将token、timestamp、nonce三个参数进行字典序排序
 6                 //2. 将三个参数字符串拼接成一个字符串进行sha1加密
 7                 //3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
 8                 //若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。
 9                 String signature = request.getParameter("signature");
10                 String timestamp = request.getParameter("timestamp");
11                 String nonce = request.getParameter("nonce");
12                 String echostr = request.getParameter("echostr");
13                 if(!WeixinUtil.checkSignature(signature,token,timestamp,nonce))
14                 {
15                     echostr = "";
16                 }
17                 sb.append(echostr);
18                 this.inputStream = new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
19             }
/**
     * 检查是否为合格的请求
     * @param signature
     * @param token
     * @param timestamp
     * @param nonce
     * @return true:合格<br/>
     *        false:不合格
     */
    public static boolean checkSignature(String signature, String token,String timestamp, String nonce) {
        if (signature == null || token == null || timestamp == null || nonce == null) {
            return false;
        }
        List<String> tmpArr = new ArrayList<String>();
        tmpArr.add(token);
        tmpArr.add(timestamp);
        tmpArr.add(nonce);
        Collections.sort(tmpArr);
        String tmpStr = tmpArr.get(0) + tmpArr.get(1) + tmpArr.get(2);
        try {
            MessageDigest md;
            md = MessageDigest.getInstance("SHA-1");
            md.update(tmpStr.getBytes());
            tmpStr = getFormattedText(md.digest());
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        if (tmpStr.equals(signature)) {
            return true;
        } else {
            return false;
        }
    }
 1 /**
 2      * 格式化
 3      * @param bytes
 4      * @return
 5      */
 6     public static String getFormattedText(byte[] bytes) {
 7         int len = bytes.length;
 8         StringBuilder buf = new StringBuilder(len * 2);
 9         for (int j = 0; j < len; j++) {
10             buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
11             buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
12         }
13         return buf.toString();
14     }
时间: 2024-07-31 14:33:18

微信URL有效性验证的相关文章

微信消息接收 验证URL有效性 C#代码示例

官方文档只给出了PHP的示例代码 开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数: 参数 描述 signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数.nonce参数. timestamp 时间戳 nonce 随机数 echostr 随机字符串 开发者通过检验signature对请求进行校验(下面有校验方式).若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开

微信企业号OAuth2验证接口实例(使用SpringMVC)

微信企业号OAuth2验证接口(使用SpringMVC) 企业应用中的URL链接(包括自定义菜单或者消息中的链接),可以通过OAuth2.0来获取员工的身份信息. 注意,此URL的域名,必须完全匹配企业应用设置项中的'可信域名',否则获取用户信息时会返回50001错误码. 可信域名设置不包含"http://",只需域名或IP即可. OAuth2验证可以使用多种方式,此处使用注解方式.设计思路是在需要获取用户信息的GET请求上添加注解,然后在调用的时候判断是否包含此注解,然后做处理流程.

(已解决)#warning:尚未配置[微信]URL Scheme:wx4868b35061f87884, 无法使用进行授权。

#warning:尚未配置[微信]URL Scheme:wx4868b35061f87884, 无法使用进行授权. (说白了就是注册白名单) " -canOpenURL: failed for URL: "weixin://app/wx4868b35061f87885/" - error: "This app is not allowed to query for scheme weixin"  " 此error源自iOS9 URL Scheme

url地址验证

<!--url地址验证,本案例使用了jQuery的jQuery validate插件--><script src="js/jquery.validate.min.js"></script><script> $().ready(function() { $("#myform").validate(); }); jQuery.extend(jQuery.validator.messages, { required: &qu

ABP应用层——参数有效性验证

ABP应用层——参数有效性验证 基于DDD的现代ASP.NET开发框架--ABP系列之17.ABP应用层——参数有效性验证 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 应用程序的输入数据首先应该被检验是否有效.输入的数据能被用户或其他应用程序提交.

微信网页授权验证

首先今天是2016的第一天,但是有思想的东西不管在何时都要和大家分享,这里首先预祝大家新年快乐!新的一年快快升职加薪. 今天主要是最近一直困扰我的一个问题的思路讲解 ,微信网页授权验证这个一直困扰我,以为很多网上的图解和别人的讲解没有达到自己想要的答案. 所以总是不在一条思路上,最后真的是没有办法了,理解不了,那么就只能实践 了: 下面是这个思路:(上面废话多了一些有需要一起讨论学习,共享源码的请加QQ群:216390234) 微信API上分为5个步骤 主要的是在第一步,我很不明白为什么那个授权

thinkphp微信开发token验证失败

这几天弄微信,token验证总是不过 最终在网上找到解决办法! 原文 这几天弄微信,token验证总是不过. 经过多方查找,终于找到了问题. 是因为写代码时打开了页面输出和调试模式. 经过总结如下: 注意:关闭debug模式.关闭页面trace信息输出,启用sae引擎 做到这三步,配置成功没有问题 config.php文件: 'SHOW_PAGE_TRACE' =>false, // 显示页面Trace信息 index.php文件: define('APP_DEBUG', false); def

微信(url.cn)短网址生成api接口以及php,python的调用方法

微信营销中,原链接太长总是很不方便分享,转化率极低.所以我们一般使用微信短链接即url.cn的短网址样式来缩短我们的链接,再发布到微信平台进行链接分享,今天给大家分享一个微信短链接生成接口,以及微信url.cn短网址的生成方式. 微信短链接生成api接口: http://qingmeidwz.cn/wxshorturl.php?url_long=http://www.baidu.com 使用说明: 将api接口地址中 "http://www.baidu.com" 换成需要缩短的网址,然

微信公众号验证TOKEN

服务端验证微信token header('Content-type:text'); define("TOKEN", "weixin"); $signature = $_GET['signature'];//微信待验证参数 $timestamp = $_GET['timestamp'];//时间戳 $nonce = $_GET['nonce'];//随机数 $token = TOKEN;//token 公众号后台配置的 $tmpArr = array($timesta