Пример #1
0
        /// <summary>
        /// 根据clientid取appSignKey
        /// </summary>
        /// <param name="param"></param>
        /// <param name="request"></param>
        /// <param name="clientid"></param>
        /// <returns></returns>
        public static string GetNewSignature(string param, HttpRequestBase request, string clientId, ISignCheckService signCheckService)
        {
            param = param + ",appId,timestamp,nonce";

            Dictionary <string, string> dict = new Dictionary <string, string>();
            var _params = param.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            foreach (var a in _params)
            {
                if (a == "url")
                {
                    dict.Add(a, request[a].Split(',')[0]);
                }
                else if (a == "appId" && request[a] == null)
                {
                    string routeDataAppid = request.RequestContext.RouteData.Values["appid"].ToString();
                    dict.Add(a, routeDataAppid);
                }
                else
                {
                    dict.Add(a, request[a]);
                }
            }
            //string appid = dict["appId"];

            var    app        = signCheckService.Repository.Entities.Where(x => x.ClientId == clientId).FirstOrDefault();
            string appid      = app.Appid;
            var    appSignKey = app.AppSignKey;

            if (string.IsNullOrEmpty(appSignKey))
            {
                throw new ArgumentException(@"clientid 不正确!", appSignKey);
            }
            //dict.Add("appId", appid);
            dict.Add("appSignKey", appSignKey);
            //string appSignKey = CommonService.GetSysConfig(appid, "iMih0xabKQdw8CBbkTM5Ley84WhN4oL6u5lbDui6G9tUlQo7fJE1CcktZ2UiETnU1FZ0R3ZvzYLKOzmaziyms5QuMia8czkEwFv2TQUg4G45Ha0aHPEHXnhjVqUPnKPJ");
            // string appSignKey = WeChatCommonService.GetWeChatConfig(Convert.ToInt32(appid))?.AppSignKey;


            return(ApiCommon.GetSignature(dict, request.Params));
        }
Пример #2
0
        public static bool CompareSignature(string param, HttpRequestBase request)
        {
            param = param + ",appId,timestamp,nonce";

            Dictionary <string, string> dict = new Dictionary <string, string>();
            var _params = param.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            foreach (var a in _params)
            {
                if (a == "url")
                {
                    dict.Add(a, request[a].Split(',')[0]);
                }
                else
                {
                    dict.Add(a, request[a]);
                }
            }
            string appid      = dict["appId"];
            string appSignKey = CommonService.GetSysConfig(appid, "iMih0xabKQdw8CBbkTM5Ley84WhN4oL6u5lbDui6G9tUlQo7fJE1CcktZ2UiETnU1FZ0R3ZvzYLKOzmaziyms5QuMia8czkEwFv2TQUg4G45Ha0aHPEHXnhjVqUPnKPJ");

            dict.Add("appSignKey", appSignKey);
            var sign = ApiCommon.GetSignature(dict, request.Params);

            if (request["sign"] == null)
            {
                Logger.Error("sign error!this: {0}  \r\n Remote:{1}", sign, "null");
                return(false);
            }
            else if (request["sign"].ToLower(CultureInfo.InvariantCulture) != sign)
            {
                Logger.Error("sign error!this: {0}  \r\n Remote:{1}", sign, request["sign"].ToLower(CultureInfo.InvariantCulture));
                return(false);
            }
            else
            {
                Logger.Info("sign success!");
                return(true);
            }
        }