Exemple #1
0
        public IActionResult Post([FromBody] WxMessage message)
        {
            try
            {
                _logger.LogWarning($"Get message data - Type:{message.MsgType}|From:{message.FromUserName}|Content:{message.Content}");
                //<xml>
                //    <ToUserName><![CDATA[gh_3c9f22cb4c1f]]></ToUserName>
                //    <FromUserName><![CDATA[ov96W1HsVW12OoVCouvw92sQNMFc]]></FromUserName>
                //    <CreateTime>1530606235</CreateTime>
                //    <MsgType><![CDATA[text]]></MsgType>
                //    <Content><![CDATA[一]]></Content>
                //    <MsgId>6573903722800677892</MsgId>
                //</xml>
                WxMessage reply = new WxMessage()
                {
                    FromUserName = message.ToUserName,
                    ToUserName   = message.FromUserName,
                    CreateTime   = message.CreateTime,
                    Content      = "欢迎来到HomeTesterClub!",
                    MsgType      = message.MsgType
                };

                _logger.LogWarning($"Reply message data - Type:{reply.MsgType}|From:{reply.ToUserName}|Content:{reply.Content}");

                return(Content(reply.ToString()));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                return(NotFound());
            }
        }
Exemple #2
0
        public ActionResult PostTuring(string content)
        {
            string requestStr  = "<xml><ToUserName><![CDATA[gh_d8f902cb0782]]></ToUserName><FromUserName><![CDATA[o20vNs15Uj_bXSVluqRl3GTH8lNw]]></FromUserName><CreateTime>1517840692</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[" + content + "]]></Content></xml>";
            string responseStr = new WxMessage().Response(requestStr);
            var    data        = new { state = true, content = responseStr };

            return(Content(JsonConvert.SerializeObject(data)));
        }
        public async Task <string> ReplyErrorMessage(WxMessage message)
        {
            var reply = new WxReply_Text()
            {
                ToUserName   = message.FromUserName,
                FromUserName = _option.WxName,
                CreateTime   = message.CreateTime,
                Content      = "非常抱歉,我们无法识别您的消息。请检查后重新发送。"
            };

            return(await Task.FromResult(new WxSerializer_SimpleXml().Serialize(reply)));
        }
Exemple #4
0
        public IActionResult Get(Conversation con)
        {
            if (CheckSignature(con))
            {
                return(Ok(con.Echostr));
            }
            var msg = new WxMessage()
            {
                Content      = "hello world",
                FromUserName = "******"
            };

            return(Ok(msg));
        }
Exemple #5
0
        public HttpResponseMessage Post()
        {
            Stream requestStream = System.Web.HttpContext.Current.Request.InputStream;

            byte[] requestByte = new byte[requestStream.Length];
            requestStream.Read(requestByte, 0, (int)requestStream.Length);
            string requestStr = Encoding.UTF8.GetString(requestByte);

            log.Info(requestStr);

            string responseStr = new WxMessage().Response(requestStr);

            log.Info(responseStr);
            return(new HttpResponseMessage {
                Content = new StringContent(responseStr, Encoding.GetEncoding("UTF-8"), "application/xml")
            });
        }
Exemple #6
0
        //public HttpResponseMessage Post()
        //{
        //    try
        //    {
        //        HttpResponseMessage responseMessage;
        //        Stream requestStream = System.Web.HttpContext.Current.Request.InputStream;
        //        byte[] requestByte = new byte[requestStream.Length];
        //        requestStream.Read(requestByte, 0, (int)requestStream.Length);
        //        string requestStr = Encoding.UTF8.GetString(requestByte);
        //        //log.Info(requestStr);

        //        string responseStr = new WxMessage().Response(requestStr);
        //        //log.Info("Controller回复:" + responseStr);

        //        responseMessage = new HttpResponseMessage { Content = new StringContent(responseStr, Encoding.GetEncoding("UTF-8"), "text/plain") };

        //        return responseMessage;
        //    }
        //    catch (Exception ex)
        //    {
        //        log.Error(ex);
        //        return new HttpResponseMessage { Content = new StringContent("Success", Encoding.GetEncoding("UTF-8"), "text/plain") };
        //    }

        //}

        #endregion

        #region 加密消息post接口

        public HttpResponseMessage Post()
        {
            string signature = HttpContext.Current.Request.QueryString["signature"];
            string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
            string nonce     = HttpContext.Current.Request.QueryString["nonce"];
            string echostr   = HttpContext.Current.Request.QueryString["echostr"];

            HttpResponseMessage responseMessage;
            string responseMsg = "";

            try
            {
                Stream requestStream = System.Web.HttpContext.Current.Request.InputStream;
                byte[] requestByte   = new byte[requestStream.Length];
                requestStream.Read(requestByte, 0, (int)requestStream.Length);
                string requestStr = Encoding.UTF8.GetString(requestByte);

                bool errorState = new WxMessage().Response(requestStr, timestamp, nonce, signature, ref responseMsg);

                if (errorState)
                {
                    echostr         = "验证不正确";
                    responseMessage = new HttpResponseMessage {
                        Content = new StringContent(echostr, Encoding.GetEncoding("UTF-8"), "text/plain")
                    };
                }
                else
                {
                    log.Info("Controller回复:" + responseMsg);
                    responseMessage = new HttpResponseMessage {
                        Content = new StringContent(responseMsg, Encoding.GetEncoding("UTF-8"), "text/plain")
                    };
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
                responseMessage = new HttpResponseMessage {
                    Content = new StringContent("Success", Encoding.GetEncoding("UTF-8"), "text/plain")
                };
            }

            return(responseMessage);
        }
Exemple #7
0
        public ActionResult Get(string signature, string timestamp, string nonce)
        {
            StreamReader sr  = new StreamReader(Request.InputStream, Encoding.UTF8);
            XmlDocument  doc = new XmlDocument();

            doc.Load(sr);
            sr.Close();
            sr.Dispose();

            WxMessage wxMessage = new WxMessage();

            wxMessage.ToUserName   = doc.SelectSingleNode("xml").SelectSingleNode("ToUserName").InnerText;
            wxMessage.FromUserName = doc.SelectSingleNode("xml").SelectSingleNode("FromUserName").InnerText;
            wxMessage.MsgType      = doc.SelectSingleNode("xml").SelectSingleNode("MsgType").InnerText;
            wxMessage.CreateTime   = int.Parse(doc.SelectSingleNode("xml").SelectSingleNode("CreateTime").InnerText);

            Log(wxMessage.ToUserName + "," + wxMessage.FromUserName + "," + wxMessage.MsgType);

            if (wxMessage.MsgType == "event")
            {
                wxMessage.EventName = doc.SelectSingleNode("xml").SelectSingleNode("Event").InnerText;
                Log(wxMessage.EventName);
                if (!string.IsNullOrEmpty(wxMessage.EventName) && wxMessage.EventName == "subscribe")
                {
                    string content = "您好,欢迎访问garfieldzf8测试公众平台\n";
                    content += "<a href='" + Request.Url.Host + Url.Action("OAuthSnsApiBase") + "'>SnsApiBase</a>\n";
                    content += "<a href='" + Request.Url.Host + Url.Action("OAuthSnsApiUserInfo") + "'>SnsApiUserInfo</a>";
                    content  = SendTextMessage(wxMessage, content);
                    Log(content);

                    return(Content(content));
                }
            }


            return(Content(""));
        }
Exemple #8
0
        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="code">The code.</param>
        /// <returns></returns>
        public static WxMessage <UserInfoResponse> GetUserInfo(string code)
        {
            var result          = new WxMessage <UserInfoResponse>();
            var accessTokenResp = GetAccessToken(code);

            //if (accessTokenResp == null)
            //{
            //    accessTokenResp = GetAccessToken(code);

            //    if (string.IsNullOrEmpty(accessTokenResp.errcode) || accessTokenResp.errcode == "0")
            //    {
            //        cacheMgr.Set(CACHE_KEY_AUTH_TOKEN, accessTokenResp, accessTokenResp.expires_in / 60);
            //    }
            //}

            if (accessTokenResp == null || !string.IsNullOrEmpty(accessTokenResp.errcode))
            {
                result.Data = new UserInfoResponse
                {
                    errcode = accessTokenResp?.errcode,
                    errmsg  = accessTokenResp?.errmsg
                };
                result.AddError("获取AccessToken失败");

                return(result);
            }

            var requestUrl = string.Format(USER_INFO_API,
                                           accessTokenResp.access_token,
                                           accessTokenResp.openid);

            var response = WxHelper.Send <UserInfoResponse>(requestUrl);

            result.Data = response;

            return(result);
        }
Exemple #9
0
        private string SendTextMessage(WxMessage wxmessage, string content)
        {
            string result = string.Format(Message, wxmessage.FromUserName, wxmessage.ToUserName, DateTime.Now.Ticks, content);

            return(result);
        }
Exemple #10
0
        public static string ToXml(this WxMessage data)
        {
            var xml = GenerateElements(data, "xml");

            return(xml.ToString());
        }
Exemple #11
0
            public string ToString(Newtonsoft.Json.Formatting formatting)
            {
                WxMessage classData = this;

                return(JsonConvert.SerializeObject(classData, formatting));
            }
Exemple #12
0
        public ActionResult EditSingleTextImageReply(AddNewsMsgInfo model)
        {
            if (ModelState.IsValid)
            {
                var isOk = RunWithCatch((r) =>
                {
                    var keys = model.Reply?.Keys;
                    if ((!string.IsNullOrEmpty(keys) && !string.IsNullOrEmpty(model.Description)) && !string.IsNullOrEmpty(model.PicUrl))
                    {
                        if (!string.IsNullOrEmpty(keys) && _wxReplyRepository.Query().Any(x => x.Id != model.Id && x.Keys == keys))
                        {
                            r.AddModelError("Keys", "关键字重复!");
                        }
                        else
                        {
                            WxReply reply = _wxReplyRepository.Get(x => x.Id == model.Id);

                            if (model.KeyReply && !string.IsNullOrWhiteSpace(keys))
                            {
                                reply.Keys = keys.Trim();
                            }
                            if (model.KeyReply && string.IsNullOrWhiteSpace(keys))
                            {
                                r.AddModelError("Reply.Keys", "你选择了关键字回复,必须填写关键字!");
                            }
                            else
                            {
                                reply.MatchType   = model.Reply.MatchType;
                                reply.MessageType = MessageType.News;
                                if (model.KeyReply)
                                {
                                    reply.ReplyType |= ReplyType.Keys;
                                }
                                if (model.SubscribeReply)
                                {
                                    reply.ReplyType |= ReplyType.Subscribe;
                                }
                                if (model.NoMatchReply)
                                {
                                    reply.ReplyType |= ReplyType.NoMatch;
                                }

                                if (!model.SubscribeReply &&
                                    !model.NoMatchReply &&
                                    !model.KeyReply)
                                {
                                    reply.ReplyType = ReplyType.None;
                                }

                                if (reply.ReplyType == ReplyType.None)
                                {
                                    r.AddModelError("Reply.ReplyType", "请选择回复类型");
                                }
                                else if (string.IsNullOrEmpty(model.Title))
                                {
                                    r.AddModelError("Title", "请输入标题");
                                }
                                else if (string.IsNullOrEmpty(model.PicUrl))
                                {
                                    r.AddModelError("PicUrl", "请上传封面图");
                                }
                                else if (string.IsNullOrEmpty(model.Content) && string.IsNullOrEmpty(model.Url))
                                {
                                    r.AddModelError("Url", "请输入内容或自定义链接");
                                }
                                else
                                {
                                    if (_wxReplyRepository.Update(reply, (b) => new object[] { reply.Id }))
                                    {
                                        WxMessage item   = _wxMsgRepository.Get(x => x.ReplyId == reply.Id);
                                        item.Title       = model.Title;
                                        item.Url         = model.Url;
                                        item.ImageUrl    = model.PicUrl;
                                        item.Content     = model.Content;
                                        item.Description = model.Description;

                                        // insert messags
                                        return(_wxMsgRepository.Update(item, e => new object[] { item.Id }));
                                    }
                                    else
                                    {
                                        return(false);
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        return(false);
                    }

                    return(false);
                });

                if (isOk)
                {
                    return(RedirectToAction("Index"));
                }
            }

            return(View(model));
        }
Exemple #13
0
        public ActionResult AddSingleTextImageReply(AddNewsMsgInfo model)
        {
            if (ModelState.IsValid)
            {
                var isOk = RunWithCatch((r) =>
                {
                    var keys = model.Reply?.Keys;
                    if ((!string.IsNullOrEmpty(keys) && !string.IsNullOrEmpty(model.Description)) && !string.IsNullOrEmpty(model.PicUrl))
                    {
                        if (!string.IsNullOrEmpty(keys) && _wxReplyRepository.Query().Any(x => x.Keys == keys))
                        {
                            r.AddModelError("Keys", "关键字重复!");
                        }
                        else
                        {
                            WxReply reply = new WxReply()
                            {
                                IsDisabled = !model.Reply.IsDisable,
                            };

                            if (model.KeyReply && !string.IsNullOrWhiteSpace(keys))
                            {
                                reply.Keys = keys.Trim();
                            }
                            if (model.KeyReply && string.IsNullOrWhiteSpace(keys))
                            {
                                r.AddModelError("Reply.Keys", "你选择了关键字回复,必须填写关键字!");
                            }
                            else
                            {
                                reply.MatchType   = model.Reply.MatchType;
                                reply.MessageType = MessageType.News;
                                if (model.KeyReply)
                                {
                                    reply.ReplyType |= ReplyType.Keys;
                                }
                                if (model.SubscribeReply)
                                {
                                    reply.ReplyType |= ReplyType.Subscribe;
                                }
                                if (model.NoMatchReply)
                                {
                                    reply.ReplyType |= ReplyType.NoMatch;
                                }
                                if (reply.ReplyType == ReplyType.None)
                                {
                                    r.AddModelError("Reply.ReplyType", "请选择回复类型");
                                }
                                else if (string.IsNullOrEmpty(model.Title))
                                {
                                    r.AddModelError("Title", "请输入标题");
                                }
                                else if (string.IsNullOrEmpty(model.PicUrl))
                                {
                                    r.AddModelError("PicUrl", "请上传封面图");
                                }
                                else if (string.IsNullOrEmpty(model.Content) && string.IsNullOrEmpty(model.Url))
                                {
                                    r.AddModelError("Url", "请输入内容或自定义链接");
                                }
                                else
                                {
                                    if (_wxReplyRepository.Insert(reply))
                                    {
                                        if (model.Reply == null)
                                        {
                                            model.Reply = new NewsReplyInfo()
                                            {
                                                Id = reply.Id
                                            };
                                        }

                                        model.Reply.Id = reply.Id;
                                        WxMessage item = _mapper.Map <WxMessage>(model);
                                        // insert messags
                                        return(_wxMsgRepository.Insert(item));
                                    }
                                    else
                                    {
                                        return(false);
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        return(false);
                    }

                    return(true);
                });

                if (isOk)
                {
                    return(RedirectToAction("Index"));
                }
            }

            return(View(model));
        }
Exemple #14
0
 public string Build(WxMessage template, object data)
 {
     return(template.Content);
 }