Example #1
0
        public void Validate(NameValueCollection parameters)
        {
            ////appid验证
            string appid = parameters.ValidateRequired(TopClient.API_KEY);
            if (appid != APPID)
            {
                throw new TopException(102, TopClient.API_KEY + " error");
            }

            //允许客户端请求时间误差为6分钟。
            ulong timestamp = ulong.Parse(parameters.ValidateRequired(TopClient.TIMESTAMP));
            DateTime dt = TopUtils.UnixTimeStampToDateTime(timestamp);
            double totalMinutes = (DateTime.Now - dt).TotalMinutes;

            if (Math.Abs(totalMinutes) > 6)
            {
                throw new TopException(102, TopClient.TIMESTAMP + " error");
            }
            
            //签名验证
            string psign = parameters.ValidateRequired(TopClient.SIGN);
            var dic = parameters.ToDictionary();
            dic.Remove(TopClient.SIGN);
            string sign = TopUtils.SignTopRequest(dic, APPSECRET);

            if (!string.Equals(sign, psign, StringComparison.OrdinalIgnoreCase))
            {
                throw new TopException(102, TopClient.SIGN + " error");
            }
        }