コード例 #1
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="request">HTTP请求</param>
 public RequestMessageHelper(HttpRequest request)
 {
     if (request != null)
     {
         this.request = request;
         //获取请求体内容
         string content = Utility.GetRequestContent(request);
         //获取消息加密类型
         encryptType = GetEncryptType();
         //如果已加密,解密消息
         string rawContent;
         if (encryptType == MessageEncryptTypeEnum.aes)
         {
             rawContent = DecryptMessage(content);
         }
         else
         {
             rawContent = content;
         }
         //解析消息
         if (!TryParse(rawContent, out message))
         {
             LogHelper.Log(string.Format("解析消息失败。\r\n地址:{0}\r\n未解密的消息:{1}\r\n解密之后的消息:{2}", request.RawUrl, content, rawContent));
         }
         else
         {
             LogHelper.Log(string.Format("解析消息成功。\r\n地址:{0}\r\n未解密的消息:{1}\r\n解密之后的消息:{2}", request.RawUrl, content, message));
         }
     }
     else
     {
         this.request = null;
         message      = null;
     }
 }
コード例 #2
0
        /// <summary>
        /// 返回XML格式的响应消息
        /// </summary>
        /// <param name="encryptType">消息加密类型</param>
        /// <returns>返回XML格式的响应消息</returns>
        public string ToXml(MessageEncryptTypeEnum encryptType)
        {
            int WXBizMsgCrypt_OK = 0;
            //得到未加密的XML响应消息
            string xml = ToXml();

            //如果需要加密,加密消息
            if (encryptType == MessageEncryptTypeEnum.aes)
            {
                int         timeStamp = Utility.ToWeixinTime(CreateTime);
                Random      random    = new Random();
                string      nonce     = random.Next().ToString();
                AccountInfo account   = AccountInfoCollection.GetAccountInfo(FromUserName);
                if (account != null)
                {
                    WXBizMsgCrypt wxcpt      = new WXBizMsgCrypt(account.Token, account.EncodingAESKey, account.AppId);
                    string        xmlEncrypt = "";
                    //加密消息
                    if (wxcpt.EncryptMsg(xml, timeStamp.ToString(), nonce, ref xmlEncrypt) == WXBizMsgCrypt_OK)
                    {
                        return(xmlEncrypt);
                    }
                }
            }
            return(xml);
        }
コード例 #3
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="request">HTTP请求</param>
 public RequestMessageHelper(HttpRequest request)
 {
     if (request != null)
     {
         this.request = request;
         //获取请求体内容
         string content = MyWay.Areas.WeiXin.Models.Utility.GetRequestContent(request);
         //获取消息加密类型
         encryptType = GetEncryptType();
         //如果已加密,解密消息
         string rawContent;
         if (encryptType == MessageEncryptTypeEnum.aes)
         {
             rawContent = DecryptMessage(content);
         }
         else
         {
             rawContent = content;
         }
         //解析消息
         TryParse(rawContent, out message);
     }
     else
     {
         this.request = null;
         message      = null;
     }
 }