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()); } }
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))); }
public IActionResult Get(Conversation con) { if (CheckSignature(con)) { return(Ok(con.Echostr)); } var msg = new WxMessage() { Content = "hello world", FromUserName = "******" }; return(Ok(msg)); }
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") }); }
//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); }
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("")); }
/// <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); }
private string SendTextMessage(WxMessage wxmessage, string content) { string result = string.Format(Message, wxmessage.FromUserName, wxmessage.ToUserName, DateTime.Now.Ticks, content); return(result); }
public static string ToXml(this WxMessage data) { var xml = GenerateElements(data, "xml"); return(xml.ToString()); }
public string ToString(Newtonsoft.Json.Formatting formatting) { WxMessage classData = this; return(JsonConvert.SerializeObject(classData, formatting)); }
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)); }
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)); }
public string Build(WxMessage template, object data) { return(template.Content); }