public void ProcessRequest(HttpContext context) { con = context; con.Response.ContentType = "text/plain"; signature = context.Request.QueryString["signature"] ?? ""; timestamp = context.Request.QueryString["timestamp"] ?? ""; nonce = context.Request.QueryString["nonce"] ?? ""; echoStr = context.Request.QueryString["echoStr"]; #region 认证判断 string[] tempArr = new[] {timestamp,nonce,Common.WeChatAppInfo.Token }; tempArr = tempArr.OrderBy(item => item).ToArray(); string tempStr = string.Join("",tempArr); string tempSha1Str = WeChatHelper.GetSHA1EnryptStr(tempStr); if (tempSha1Str != signature) { con.Response.Write("无验证请求"); con.Response.End(); return; } if (!string.IsNullOrEmpty(echoStr)) { context.Response.Write(echoStr); context.Response.End(); return; } #endregion // WeChatCrypt = Tencent.WXBizMsgCrypt(WeChatAppInfo.Token, WeChatAppInfo.sEncodingAESKey, WeChatAppInfo.AppID); string requestContent = System.Text.Encoding.UTF8.GetString(context.Request.BinaryRead(context.Request.TotalBytes)); int ret = 0; string sMsg = ""; //解析之后的明文 ret = Tencent.WXBizMsgCrypt.DecryptMsg(signature, timestamp, nonce, requestContent, ref sMsg); if (ret != 0) { context.Response.Write("无效请求"); context.Response.End(); return; } XmlDocument doc = new XmlDocument(); doc.LoadXml(sMsg); if(doc.FirstChild["MsgId"]!=null) { if (!IsUniqueMsg(doc.FirstChild["MsgId"].InnerText)) { context.Response.End(); return; } } ReceiveData(doc); }