Exemple #1
0
        /// <summary>
        /// 验证签名。默认公众号不需要参数。传入authorizer_appid(授权方appid)、authorizer_refresh_token(授权方的刷新令牌)则验证该公众号(用于微信开放平台)、component_verify_ticket(微信后台推送的ticket,此ticket会定时推送)
        /// </summary>
        public bool Check(WeChatParam param = null)
        {
            string token;

            if (param != null && !string.IsNullOrWhiteSpace(param.AuthorizerAppid))
            {
                if (string.IsNullOrWhiteSpace(param.AuthorizerRefreshToken))
                {
                    LogHelper.Debug("参数错误!authorizer_refresh_token必传!", "微信CallBack_");
                    return(false);
                }
                var bs = TokenHelper.GetAuthorizerAccessToken(new WeChatParam()
                {
                    AuthorizerAppid        = param.AuthorizerAppid,
                    AuthorizerRefreshToken = param.AuthorizerRefreshToken,
                    ComponentVerifyTicket  = param.ComponentVerifyTicket
                });
                if (!bs.IsSuccess)
                {
                    return(false);
                }
                token = bs.AuthorizerAccessToken;
            }
            else
            {
                token = WeChatConfig.GetToken();
            }
            var vs = new[] { timestamp, nonce, token }.OrderBy(s => s);
            var str  = string.Join("", vs);
            var copu = FormsAuthentication.HashPasswordForStoringInConfigFile(str, "SHA1");

            if (copu == null)
            {
                return(false);
            }
            return(copu.Equals(signature, StringComparison.CurrentCultureIgnoreCase));
        }