微信测试公众号配置失败 {“errcode“:-106,“errmsg“:“token check fail“}

这是我的实现类代码:

log.info("开始调用微信公众号签名验证接口!!!");
log.info("微信验签传递的参数分别为:signature:{}、timestamp:{}、nonce:{}、echostr:{}",
        signature, timestamp, nonce, echostr);
// 微信验签传递的参数均非空
if (Stream.of(signature, timestamp, nonce, echostr).anyMatch(StringUtils::isBlank)) {
    log.info("微信验签传递的参数存在空值,微信验签失败!!!");
    return null;
}
// 构建参数列表,将参数排序并拼接为一个字符串
List arguments = Arrays.asList(weChatConfig.getToken(), timestamp, nonce);
String concatenatedArguments = arguments.stream().sorted().collect(Collectors.joining());
log.info("微信公众号配置的Token为:" + weChatConfig.getToken());
try {
    // 创建MessageDigest对象,使用指定的摘要算法
    MessageDigest digest = MessageDigest.getInstance(WeChatConstant.DIGEST_ALGORITHM);
    // 计算摘要,将拼接的参数字符串转换为字节数组后进行摘要计算
    String calculatedDigest = Hex.encodeHexString(digest.digest(concatenatedArguments.getBytes()));
    if (StringUtils.equals(signature, calculatedDigest)) {
        log.info("调用微信公众号签名验证接口完毕,微信验签成功!!!");
        return echostr;
    }
} catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
    log.info("微信验签过程中发生了异常,微信验签失败!!!");
}
log.info("调用微信公众号签名验证接口完毕,微信验签失败!!!");
return null;

这是实现类中用到的常量:

​/**
 * 微信验签 验签参数的加密算法
 */
public static final String DIGEST_ALGORITHM = "sha1";
​

这是微信测试公众号配置失败 {"errcode":-106,"errmsg":"token check fail"}的控制层代码:

微信测试公众号配置失败 {“errcode“:-106,“errmsg“:“token check fail“}_第1张图片

这是微信测试公众号配置成功的控制层代码:

微信测试公众号配置失败 {“errcode“:-106,“errmsg“:“token check fail“}_第2张图片

这是微信官方文档:

微信测试公众号配置失败 {“errcode“:-106,“errmsg“:“token check fail“}_第3张图片

最后,我只想说:tmd,好无语了!!! 

你可能感兴趣的:(微信,java,开发语言)