Пример #1
0
        /// <summary>
        /// 获取公众平台配置对象
        /// </summary>
        /// <returns></returns>
        public static WXGZConfigEntity GetGZConfig()
        {
            string           strXmlPath = HttpRuntime.AppDomainAppPath + @"bin\xmlConfig\WXGZConfig.xml";
            WXGZConfigEntity gzConfig   = SetWXConfigCache("WxGzConfig", strXmlPath, "GZConfig", new WXGZConfigEntity());

            return(gzConfig);
        }
Пример #2
0
        /// <summary>
        /// 公众号返回验证结果
        /// </summary>
        /// <returns></returns>
        public string GetGZValidityResult()
        {
            GZValidityEntity validityEntity = Request2Entity(this._request, new GZValidityEntity());

            if (validityEntity == null)
            {
                return("");
            }

            WXGZConfigEntity gzConfig = XmlToEntity.GetGZConfig();

            string[] arrValidity = { gzConfig.Token, validityEntity.Timestamp, validityEntity.Nonce };
            Array.Sort(arrValidity);
            string strJoin       = string.Join("", arrValidity);
            string strEncryption = ShaHelper.StrSha1Lower(strJoin);

            if (strEncryption.Equals(validityEntity.Signature))
            {
                return(validityEntity.echostr);
            }
            else
            {
                return("");
            }
        }
Пример #3
0
 /// <summary>
 /// 类初始化
 /// </summary>
 /// <param name="wxPlatType"></param>
 public PassiveProcess(WxPlatFormTypeEnum wxPlatType)
 {
     this._wxPlatType = wxPlatType;
     //根据平台构造加解密实例,目前将qy与gz使用同一加解密实例
     if (this._wxPlatType == WxPlatFormTypeEnum.QY)
     {
         WXQYConfigEntity qyConfig = XmlToEntity.GetQYConfig();
         this._wxcpt = new WXBizMsgCrypt(qyConfig.Token, qyConfig.EncodingAESKey, qyConfig.CorpID);
     }
     else
     {
         WXGZConfigEntity gzConfig = XmlToEntity.GetGZConfig();
         this._wxcpt = new WXBizMsgCrypt(gzConfig.Token, gzConfig.EncodingAESKey, gzConfig.AppID);
     }
 }
Пример #4
0
        /// <summary>
        /// 公众号处理
        /// </summary>
        /// <returns></returns>
        private string GZProcess()
        {
            string           strGzContent = string.Empty;
            WXGZConfigEntity gzConfig     = XmlToEntity.GetGZConfig();

            //如果为公众平台且未使用加密,直接返回文本
            if (string.IsNullOrEmpty(gzConfig.EncodingAESKey))
            {
                strGzContent = ConvertDataType.Strem2String(HttpContext.Current.Request.InputStream, Encoding.UTF8);
                return(strGzContent);
            }
            //校验签名及返回解析后的content
            CheckMsgSignature(ref strGzContent);
            return(strGzContent);
        }
Пример #5
0
        //加密
        public bool SetEncryptionContent(string sRespData, ref string sEncryptMsg)
        {
            //如果为公众平台且未使用加密
            if (this._wxPlatType == WxPlatFormTypeEnum.GZ)
            {
                WXGZConfigEntity gzConfig = XmlToEntity.GetGZConfig();
                if (string.IsNullOrEmpty(gzConfig.EncodingAESKey))
                {
                    sEncryptMsg = sRespData;
                    return(true);
                }
            }
            int ret = this._wxcpt.EncryptMsg(sRespData, ConvertDateTime.GetTimeStamp(), new Random().Next(100000000, 999999999).ToString(), ref sEncryptMsg);

            if (ret != 0)
            {
                //System.Console.WriteLine( "ERR: EncryptMsg Fail, ret: " + ret );
                return(false);
            }
            return(true);
        }