/// <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; } }
/// <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); }
/// <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; } }