protected void Page_Load(object sender, EventArgs e) { //校验签名,当填入的信息提交之后页面有提示“你已成功成为公众平台开发者, //可以使用公众平台的开发功能”这个的时候,接下来你就需要注释掉这个校验的方法,使得后面的消息回复得以正常运作 //Valid(); if (Request.HttpMethod.ToLower() == "post")//当普通微信用户向公众账号发消息时,微信服务器将POST该消息到填写的URL上 { var postStr = PostInput(); // WriteLog(postStr, Server);//计入日记 if (postStr.Contains("xml")) { Response.Write(""); Response.Flush();//立即输出 Response.Close(); DataDealBll dataDeal = new DataDealBll(postStr); Log.Debug("dataDeal.ReceiveMsgModel.MsgType:" + dataDeal.ReceiveMsgModel.MsgType); if ("voice".Equals(dataDeal.ReceiveMsgModel.MsgType)) { try { //在添加到数据库后开始下载。 InfoReleaseDetailsDal infoReleaseDetailsDal = new InfoReleaseDetailsDal(); DataTable dt = infoReleaseDetailsDal.QueryMaxdt(new InfoReleaseDetailsModel() { OpenId = dataDeal.ReceiveMsgModel.FromUserName, }); bool FlagModify = false; if (dt.Rows.Count > 0) { var DtStr = dt.Rows[0]["confirmdt"].ToString(); Log.Debug("DtStr:" + DtStr); var confirmDt = DateTime.MinValue; if (!string.IsNullOrEmpty(DtStr)) { confirmDt = DateTime.Parse(DtStr); } if (confirmDt >= DateTime.Now.AddMinutes(-30) && (dt.Rows[0]["bk1"].ToString().Length == 0 || dt.Rows[0]["bk1"].ToString() != "1")) { FlagModify = true; infoReleaseDetailsDal.Modify(new InfoReleaseDetailsModel() { Id = dt.Rows[0]["id"].ToString(), Bk2 = dataDeal.ReceiveMsgModel.id, }); } } AccessToken AcToken = new AccessToken(); string token = AcToken.GetExistAccessToken(); Log.Debug("GetMedia参数,token:" + token + ",dataDeal.MediaId:" + dataDeal.ReceiveMsgModel.MediaId + ",path:" + Server.MapPath("/")); GetMultimedia getMultimedia = new GetMultimedia(); string filePath = GetMedia(token, dataDeal.ReceiveMsgModel.MediaId, Server.MapPath("/voice")); new ReceiveMsgDal().Modify(new ReceiveMsg() { id = dataDeal.ReceiveMsgModel.id, bak2 = "/voice/" + filePath.Substring(filePath.LastIndexOf('\\') + 1), }); if (FlagModify) { infoReleaseDetailsDal.Modify(new InfoReleaseDetailsModel() { Id = dt.Rows[0]["id"].ToString(), Bk1 = "1", Bk3 = "/voice/" + filePath.Substring(filePath.LastIndexOf('\\') + 1), }); } } catch (Exception ex) { Log.Error(ex); } } if (!dataDeal.IsMessageTrue()) { WriteLog(postStr, Server);//计入日记 } else { MessageType msgType = dataDeal.GetMsgType(); if (msgType.Equals(MessageType.EventSubscribe)) { /******* 添加首次关注的回复 ***/ } } } Response.End(); } else { var postStr = PostInput(); if (postStr.Contains("xml")) { Response.Write(""); DataDealBll dataDeal = new DataDealBll(postStr); if (!dataDeal.IsMessageTrue()) { WriteLog(postStr, Server);//计入日记 } } } }
private void Send(HttpContext context) { var userid = context.Request["userid"] ?? ""; var Id = context.Request["Id"] ?? ""; var Title = context.Request["title"] ?? ""; var messageDescription = context.Request["MessageDescription"] ?? ""; var key = context.Request["key"] ?? ""; if (string.IsNullOrEmpty(userid) || string.IsNullOrEmpty(Id) || string.IsNullOrEmpty(Title) || string.IsNullOrEmpty(messageDescription)) { context.Response.Write("{\"error\":true,\"msg\":\"信息不完整。\"}"); return; } var hashTable = new Hashtable(); var listnews = new List<object>(); var accessToken = new AccessToken(); var sendDataToUser = new SendDataToWeChat(); try { listnews.Add(new { title = Title, description = messageDescription, url = "http://218.22.27.236/views/messagelist/messagedetail_fxgz.htm?id=" + Id + "&wxid=" + userid + "&state=2", picurl = "http://218.22.27.236/tl/UploadImages/" + key + ".jpg" }); hashTable["touser"] = userid; hashTable["msgtype"] = "news"; hashTable["news"] = new { articles = listnews }; var json = _jss.Serialize(hashTable); json = json.Replace("\\u0026", "&"); var token = accessToken.GetExistAccessToken(); var back = sendDataToUser.GetPage("https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" + token, json); var backData = JsonConvert.DeserializeObject<WeChatBackData>(back); if (backData.errcode != 0) { context.Response.Write("{\"error\":true,\"msg\":\"" + backData.errmsg + "\"}"); } else { context.Response.Write("{\"error\":false}"); } var infoReleaseDetailsModel = new InfoReleaseDetailsModel(); if (backData.errcode == 0 && backData.errmsg == "ok") { infoReleaseDetailsModel.State = "2";//待确认 } var infoReleaseDetailsDal = new InfoReleaseDetailsDal(); infoReleaseDetailsModel.Id = Id; infoReleaseDetailsDal.Modify(infoReleaseDetailsModel); Log.Debug("调试信息:" + back); } catch (Exception e) { context.Response.Write("{\"error\":true,\"msg\":\"" + e.Message + "\"}"); Log.Error(e); } }