微信公众号服务器配置验证实现

本文介绍了一种微信公众号开发模式下的服务器配置验证方法。通过获取微信服务器发送的签名、时间戳等参数,并对其进行排序和SHA1加密,以确保请求的有效性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在微信公众号设置开发模式,需要调用后台服务器进行验证的伪代码实现:

微信公众号服务器配置验证实现

/**
 * 微信服务器配置验证方法
 *
 * @param request
* @param response
* @return
*/
private String access(HttpServletRequest request, HttpServletResponse response) {
    String signature = request.getParameter("signature");
    String timestamp = request.getParameter("timestamp");
    String nonce = request.getParameter("nonce");
    String echostr = request.getParameter("echostr");
    logger.info("微信请求的echostr:{}", echostr);
    // 将token、timestamp、nonce三个参数进行字典序排序
List<String> paramList = new ArrayList<String>();
    paramList.add(token);
    paramList.add(timestamp);
    paramList.add(nonce);
    SortUtils.arrayListSortByDict(paramList);
    logger.info("timestamp、nonce、token三个参数进行字典序排序:{}", JSON.toJSONString(paramList));
    // 将三个参数字符串拼接成一个字符串进行sha1加密
String result = "";
    for (String str : paramList) {
        result += str;
    }
    String resultPass = DigestUtils.sha1Hex(result);
    // 加密后的字符串可与signature对比,标识该请求来源于微信
if (resultPass.equals(signature)) {
        logger.info("返回的echostr:{}", echostr);
        return echostr;
    }
    logger.info(String.format("微信请求验证失败!token:[%s],本服务器signature:[%s],微信signature:[%s]", token, resultPass, signature));
    return "";
}


public class SortUtils {
   /**
    * 根据字典排序
    * 
    * @param sortList
*/
public static void arrayListSortByDict(List<String> sortList) {
      Collections.sort(sortList, new RealizeComparator());
   }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值