liyiorg / weixin-popular

微信SDK JAVA (公众平台、开放平台、 商户平台、 服务商平台)
Apache License 2.0
2.5k stars 1.06k forks source link

验证url的问题 #148

Closed mythsman closed 6 years ago

mythsman commented 6 years ago

为什么com.qq.weixin.mp.aes.WXBizMsgCrypt.verifyUrl的方法中将echostr也一起做了SHA1呢?官网上不是对timeStamp,和nonce做SHA1并与signature比较么?

    public String verifyUrl(String msgSignature, String timeStamp, String nonce, String echoStr)
            throws AesException {
        String signature = SHA1.getSHA1(token, timeStamp, nonce, echoStr);

        if (!signature.equals(msgSignature)) {
            throw new AesException(AesException.ValidateSignatureError);
        }

        String result = decrypt(echoStr);
        return result;
    }
liyiorg commented 6 years ago

服务端收到请求中包含 echostr 参数时,需原样返回。 仅在微信管理后台配置服务端地址时调用。你可以下载官方的示例代码看一下

mythsman commented 6 years ago

原样返回但是不需要计算SHA1吧。。。

liyiorg commented 6 years ago

要计算的,你可以参照下示例代码

mythsman commented 6 years ago

image echostr没算吧。。。

zxmsdyz commented 5 years ago

要计算的,你可以参照下示例代码

不用计算的。。 我掉这坑里好久,后面把echostr去掉算出来的签名就跟微信一样了。赶紧改掉吧!!!