/// <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); }
/// <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(""); } }
/// <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); } }
/// <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); }
//加密 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); }