Beispiel #1
0
        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);//计入日记
                    }
                }
            }
        }
Beispiel #2
0
        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);
            }
        }