private string WxVoiceAnalytical(WxXmlModel wxXmlModel, string token, string wxToken) { Console.WriteLine("WxVoiceAnalytical_Recognition>>" + wxXmlModel.Recognition); // string url = string.Format(WechatGetMediaUrl, wxToken, wxXmlModel.MediaId); if (string.IsNullOrEmpty(wxXmlModel.Recognition)) { wxXmlModel.Content = "无法识别您说的话哦,请在说一遍"; } else if (wxXmlModel.Recognition.Contains("是什么垃圾")) { string rubbishName = DisposeName(wxXmlModel.Recognition, "是什么垃圾"); wxXmlModel.Content = RubbishDispose(rubbishName); } else if (IsAddRubbishType(wxXmlModel.Recognition)) { wxXmlModel.Content = AddRubbish(wxXmlModel.Recognition); } else { if (!LoveLan.IsWXLoveLan(ref wxXmlModel)) { wxXmlModel.Content = UNIT.GetResponseMessage(wxXmlModel.Recognition, wxXmlModel.FromUserName, token); } } return(WeChatXml.ResponseXML(wxXmlModel)); }
public async Task <string> ReviceMessag(string sMsgSignature, string sTimeStamp, string sNonce, string sPostData, string baiduAiToken, string baiduImagetoken, string weixinToken) { string encryptMsg = ""; _context.WxOfficialPlatformLoginRecord.Add(new WxOfficialPlatformLoginRecord() { CreateTime = DateTime.Now, Nonce = sNonce, Timestamp = sTimeStamp, Signature = sMsgSignature, PostData = sPostData }); _context.SaveChanges(); Tencent.WXBizMsgCrypt wxcpt = new Tencent.WXBizMsgCrypt(sToken, sEncodingAESKey, sAppID); // int ret = 0; string sMsg = sPostData; //解析之后的明文 //ret = wxcpt.DecryptMsg(sMsgSignature, sTimeStamp, sNonce, sPostData, ref sMsg); Console.WriteLine("sMsg:" + sMsg); if (!string.IsNullOrEmpty(sMsg)) { //封装请求类 WxXmlModel wxXmlModel = WeChatXml.LoadXmlModel(sMsg); Console.WriteLine(wxXmlModel); switch (wxXmlModel.MsgType) { case "text": //文本 encryptMsg = WxTextAnalytical(wxXmlModel, baiduAiToken); break; case "image": //图片 encryptMsg = WxImageAnalytical(wxXmlModel, baiduImagetoken, weixinToken); break; case "voice": encryptMsg = WxVoiceAnalytical(wxXmlModel, baiduAiToken, null); break; default: break; } } //try //{ // //加密回复消息 // wxcpt.EncryptMsg(respMessage, sTimeStamp, sNonce,ref encryptMsg); // Console.WriteLine("encryptMsg:" + encryptMsg); //} //catch (Exception e) //{ // _logger.LogError(e, ""); //} return(encryptMsg); }
public string WxImageAnalytical(WxXmlModel wxXmlModel, string token, string wxToken) { string url = string.Format(WechatGetMediaUrl, wxToken, wxXmlModel.MediaId); byte[] data = NetHelper.HttpGetByte(url); wxXmlModel.Content = UNIT.GetImageDisposeStr(data, token); wxXmlModel.MsgType = "text"; return(WeChatXml.ResponseXML(wxXmlModel)); }
private void ReceiveXML() { var requestStream = HttpContext.Current.Request.InputStream; var requestByte = new byte[requestStream.Length]; requestStream.Read(requestByte, 0, (int)requestStream.Length); var requestStr = Encoding.UTF8.GetString(requestByte); if (!string.IsNullOrEmpty(requestStr)) { //封装请求类 var requestDocXml = new XmlDocument(); requestDocXml.LoadXml(requestStr); var rootElement = requestDocXml.DocumentElement; if (rootElement == null) { return; } var wxXmlModel = new WxXmlModel { ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText, FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText, CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText, MsgType = rootElement.SelectSingleNode("MsgType").InnerText }; switch (wxXmlModel.MsgType) { case "Text": //文本 wxXmlModel.Content = rootElement.SelectSingleNode("Content").InnerText; break; case "Image": //图片 wxXmlModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText; break; case "event": //事件 wxXmlModel.Event = rootElement.SelectSingleNode("Event").InnerText; if (wxXmlModel.Event != "TEMPLATESENDJOBFINISH") //关注类型 { wxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText; } break; default: break; } ResponseXML(wxXmlModel); } }
/// <summary> /// 发送消息测试 /// </summary> public static void SendMessage() { WeixinAuthResult token = WeixinAuth.GetToken(); string host = @"https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" + token.access_token; WxXmlModel wxXmlModel = new WxXmlModel() { FromUserName = "******", Content = "测试", }; string ss = WeChatXml.ResponseXML(wxXmlModel);//回复消息 NetHelper.HttpPost(host, ss); }
public static string ResponseXML(WxXmlModel WxXmlModel) { string XML = ""; switch (WxXmlModel.MsgType) { case "text": //文本回复 XML = ReText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.Content); break; default: //默认回复 XML = ReText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.Content); break; } return(XML); }
public HttpResponseMessage ReceiveXML(HttpActionContext actionContext) { var requestStr = actionContext.Request.Content.ReadAsStringAsync().Result; StartClass.log.WriteInfo(requestStr); if (!string.IsNullOrEmpty(requestStr)) { //封装请求类 XmlDocument requestDocXml = new XmlDocument(); requestDocXml.LoadXml(requestStr); XmlElement rootElement = requestDocXml.DocumentElement; WxXmlModel wxXmlModel = new WxXmlModel(); wxXmlModel.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText; wxXmlModel.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText; wxXmlModel.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText; wxXmlModel.MsgType = rootElement.SelectSingleNode("MsgType").InnerText; switch (wxXmlModel.MsgType) { case "text": //文本 wxXmlModel.Content = rootElement.SelectSingleNode("Content").InnerText; break; case "image": //图片 wxXmlModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText; break; case "event": //事件 wxXmlModel.Event = rootElement.SelectSingleNode("Event").InnerText; if (wxXmlModel.Event == "subscribe") //关注类型 { wxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText.Replace("qrscene_", ""); } if (wxXmlModel.Event == "SCAN") //关注类型 { wxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText; } break; default: break; } StartClass.log.WriteInfo(wxXmlModel.MsgType + "-" + wxXmlModel.Event + "-" + wxXmlModel.EventKey); return(ResponseXML(wxXmlModel));//回复消息 } return(null); }
/// <summary> /// 接收微信发送的XML消息并且解析 /// </summary> private void ReceiveXml() { 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); if (!string.IsNullOrEmpty(requestStr)) { //封装请求类 XmlDocument requestDocXml = new XmlDocument(); requestDocXml.LoadXml(requestStr); XmlElement rootElement = requestDocXml.DocumentElement; WxXmlModel WxXmlModel = new WxXmlModel(); WxXmlModel.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText; WxXmlModel.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText; WxXmlModel.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText; WxXmlModel.MsgType = rootElement.SelectSingleNode("MsgType").InnerText; switch (WxXmlModel.MsgType) { case "text": //文本 WxXmlModel.Content = rootElement.SelectSingleNode("Content").InnerText; break; case "image": //图片 WxXmlModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText; break; case "event": //事件 WxXmlModel.Event = rootElement.SelectSingleNode("Event").InnerText; if (WxXmlModel.Event != "TEMPLATESENDJOBFINISH") //关注类型 { WxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText; } break; default: break; } ResponseXML(WxXmlModel);//回复消息 } }
private HttpResponseMessage ResponseXML(WxXmlModel wxXmlModel) { string XML = ""; StartClass.log.WriteInfo(wxXmlModel.MsgType + "-" + wxXmlModel.Event); switch (wxXmlModel.MsgType) { case "text": //文本回复 XML = GetText(wxXmlModel.FromUserName, wxXmlModel.ToUserName, wxXmlModel.Content); break; case "event": //文本回复 StartClass.log.WriteInfo("!!!!!!"); if (wxXmlModel.Event == "subscribe" || wxXmlModel.Event == "SCAN") { using (DB db = new DB()) { StartClass.log.WriteInfo("!" + wxXmlModel.EventKey); var org = db.OrgInfos.Find(wxXmlModel.EventKey); StartClass.log.WriteInfo(wxXmlModel.EventKey); if (org != null) { StartClass.log.WriteInfo(org.Key); XML = ReArticle(wxXmlModel.FromUserName, wxXmlModel.ToUserName, org.OrgName, org.OrgName, "http://pic.cnblogs.com/avatar/743013/20150521120816.png", WXServiceManager.GetAuthUrl(org.Key)); } } } else { return(null); } break; default: //默认回复 XML = GetText(wxXmlModel.FromUserName, wxXmlModel.ToUserName, "未知的关键字"); break; } StartClass.log.WriteInfo(XML); return(new HttpResponseMessage() { Content = new StringContent(XML, Encoding.UTF8, "application/xml") }); }
public static WxXmlModel LoadXmlModel(string xmlstr) { XmlDocument requestDocXml = new XmlDocument(); requestDocXml.LoadXml(xmlstr); XmlElement rootElement = requestDocXml.DocumentElement; WxXmlModel WxXmlModel = new WxXmlModel(); WxXmlModel.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText; WxXmlModel.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText; WxXmlModel.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText; WxXmlModel.MsgType = rootElement.SelectSingleNode("MsgType").InnerText; switch (WxXmlModel.MsgType) { case "text": //文本 WxXmlModel.Content = rootElement.SelectSingleNode("Content").InnerText; break; case "image": //图片 WxXmlModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText; WxXmlModel.MediaId = rootElement.SelectSingleNode("MediaId").InnerText; break; case "event": //事件 WxXmlModel.Event = rootElement.SelectSingleNode("Event").InnerText; if (WxXmlModel.Event == "subscribe") //关注类型 { WxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText; } break; case "voice": WxXmlModel.MediaId = rootElement.SelectSingleNode("MediaId").InnerText; WxXmlModel.Recognition = rootElement.SelectSingleNode("Recognition").InnerText; break; default: break; } return(WxXmlModel); }
public static bool IsWXLoveLan(ref WxXmlModel wxXmlModel) { if (wxXmlModel.FromUserName.Equals("oo34K6H7oloJ95aL8bewgVmCNlao") || wxXmlModel.FromUserName.Equals("oo34K6LG-4hrJk4uIYbv17ba2tMk")) { switch (wxXmlModel.Content) { case "我爱你": wxXmlModel.Content = "兰,我也爱你"; return(true); case "我想你": wxXmlModel.Content = "兰兰,我也想你!"; return(true); case "亲爱的": wxXmlModel.Content = "亲爱的小仙女!"; return(true); } } return(false); }
/// 获取用户发送的消息 private void ResponseXML(HttpContext context) { //接收XML数据包 Stream XmlStream = context.Request.InputStream; //构造xml对象 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(XmlStream); XmlElement rootElement = xmlDoc.DocumentElement; //获取文档的根 XmlNode MsgType = rootElement.SelectSingleNode("MsgType"); //获取消息的文本类型 WxXmlModel requestXML = new WxXmlModel(); //声明实例,获取各个属性并赋值 requestXML.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText; //公众号 requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText; //用户 requestXML.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText; //创建时间 requestXML.MsgType = MsgType.InnerText; //消息类型 ///对消息的不同类型进行赋值 if (requestXML.MsgType == "text") { //赋值文本信息内容 requestXML.Content = rootElement.SelectSingleNode("Content").InnerText; } if (requestXML.MsgType.Trim() == "location") { ///赋值地理位置纬度,经度,地图缩放比例,地理位置说明 requestXML.Location_X = rootElement.SelectSingleNode("Location_X").InnerText; requestXML.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText; requestXML.Scale = rootElement.SelectSingleNode("Scale").InnerText; requestXML.Label = rootElement.SelectSingleNode("Label").InnerText; } if (requestXML.MsgType.Trim().ToLower() == "event") { ///赋值事件名称和事件key值 requestXML.Event = rootElement.SelectSingleNode("Event").InnerText; requestXML.EventKey = rootElement.SelectSingleNode("EventKey").InnerText; } ResponseMsg(context, requestXML); }
private void ResponseXML(WxXmlModel WxXmlModel) { QrCodeApi QrCodeApi = new wxapi.QrCodeApi(); string XML = ""; switch (WxXmlModel.MsgType) { case "text": //文本回复 XML = sohovan.com.wxapi.ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.Content); break; case "event": switch (WxXmlModel.Event) { case "subscribe": if (string.IsNullOrEmpty(WxXmlModel.EventKey)) { XML = sohovan.com.wxapi.ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, "关注成功"); } else { XML = sohovan.com.wxapi.ResponseMessage.SubScanQrcode(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.EventKey); //扫描带参数二维码先关注后推送事件 } break; case "SCAN": XML = sohovan.com.wxapi.ResponseMessage.ScanQrcode(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.EventKey); //扫描带参数二维码已关注 直接推送事件 break; } break; default: //默认回复 break; } HttpContext.Current.Response.Write(XML); HttpContext.Current.Response.End(); }
private void ResponseXML(WxXmlModel wxXmlModel) { var QrCodeApi = new QrCodeApi(); var XML = ""; switch (wxXmlModel.MsgType) { case "text": //文本回复 XML = ResponseMessage.GetText(wxXmlModel.FromUserName, wxXmlModel.ToUserName, wxXmlModel.Content); break; case "event": switch (wxXmlModel.Event) { case "subscribe": if (string.IsNullOrEmpty(wxXmlModel.EventKey)) { XML = ResponseMessage.GetText(wxXmlModel.FromUserName, wxXmlModel.ToUserName, "关注成功"); } else { XML = ResponseMessage.GetText(wxXmlModel.FromUserName, wxXmlModel.ToUserName, wxXmlModel.EventKey); } break; case "SCAN": XML = ResponseMessage.ScanQrcode(wxXmlModel.FromUserName, wxXmlModel.ToUserName, wxXmlModel.EventKey); //扫描已关注二维码已关注,直接推送事件 break; } break; default: //默认回复 break; } HttpContext.Current.Response.Write(XML); HttpContext.Current.Response.End(); }
private string WxTextAnalytical(WxXmlModel wxXmlModel, string token) { Console.WriteLine("WxTextAnalytical_Content>>" + wxXmlModel.Content); if (!string.IsNullOrEmpty(wxXmlModel.Content)) { if (!LoveLan.IsWXLoveLan(ref wxXmlModel)) { if (wxXmlModel.Content.Contains("是什么垃圾")) { string rubbishName = DisposeName(wxXmlModel.Content, "是什么垃圾"); wxXmlModel.Content = RubbishDispose(rubbishName); } else if (IsAddRubbishType(wxXmlModel.Content)) { wxXmlModel.Content = AddRubbish(wxXmlModel.Content); } else { wxXmlModel.Content = UNIT.GetResponseMessage(wxXmlModel.Content, wxXmlModel.FromUserName, token); } } } return(WeChatXml.ResponseXML(wxXmlModel)); }
public ActionResult Post(WeChatRequestModel model) { 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); var XML = ""; if (!string.IsNullOrEmpty(requestStr)) { //封装请求类 var requestDocXml = new XmlDocument(); requestDocXml.LoadXml(requestStr); var rootElement = requestDocXml.DocumentElement; if (rootElement == null) { return(Content("There is no element!")); } var wxXmlModel = new WxXmlModel { ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText, FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText, CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText, MsgType = rootElement.SelectSingleNode("MsgType").InnerText }; switch (wxXmlModel.MsgType) { case "Text": //文本 wxXmlModel.Content = rootElement.SelectSingleNode("Content").InnerText; XML = ResponseMessage.GetText(wxXmlModel.FromUserName, wxXmlModel.ToUserName, wxXmlModel.Content); break; case "Image": //图片 wxXmlModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText; break; //case "Voice"://语音 // wxXmlModel.PicUrl = rootElement.SelectSingleNode("Media_id").InnerText; // break; //case "Video"://视频 // wxXmlModel.PicUrl = rootElement.SelectSingleNode("Media_id").InnerText; // break; //case "Shortvideo"://小视频 // wxXmlModel.PicUrl = rootElement.SelectSingleNode("Media_id").InnerText; // break; //case "Location"://位置 // wxXmlModel.Location_X = rootElement.SelectSingleNode("Location_X").InnerText; // wxXmlModel.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText; // break; case "event": //事件 wxXmlModel.Event = rootElement.SelectSingleNode("Event").InnerText; switch (wxXmlModel.Event) { case "subscribe": if (string.IsNullOrEmpty(wxXmlModel.EventKey)) { XML = ResponseMessage.GetText(wxXmlModel.FromUserName, wxXmlModel.ToUserName, "关注成功"); } else { XML = ResponseMessage.GetText(wxXmlModel.FromUserName, wxXmlModel.ToUserName, wxXmlModel.EventKey); } break; case "SCAN": XML = ResponseMessage.ScanQrcode(wxXmlModel.FromUserName, wxXmlModel.ToUserName, wxXmlModel.EventKey); //扫描已关注二维码已关注,直接推送事件 break; } if (wxXmlModel.Event != "TEMPLATESENDJOBFINISH") //关注类型 { wxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText; } break; default: break; } } return(Content(XML)); }
private void ResponseMsg(HttpContext context, WxXmlModel requestXML) { string MsgType = requestXML.MsgType; string xmlMsg = string.Empty; try { //根据消息类型判断发送何种类型消息 switch (MsgType) { case "text": //SendTextCase(requestXML);//发送文本消息 string _url = string.Empty; if (requestXML.Content.IndexOf("分类") > -1 || requestXML.Content.IndexOf("类别") > -1) { _url = context.Request.Url.Host + "/mobile/ProductClass.html"; xmlMsg = "<xml>" + "<ToUserName><![CDATA[" + requestXML.FromUserName + "]]></ToUserName>" + "<FromUserName><![CDATA[" + requestXML.ToUserName + "]]></FromUserName>" + "<CreateTime>" + GetCreateTime() + "</CreateTime>" + "<MsgType><![CDATA[news]]></MsgType>" + "<ArticleCount>1</ArticleCount>" + "<Articles><item>" + "<Title><![CDATA[商品分类]]></Title>" + "<Description><![CDATA[商品分类]]></Description>" + "<Url><![CDATA[" + _url + "]]></Url>" + "</item></Articles>" + "</xml>"; } else if (requestXML.Content.IndexOf("homepage") > -1 || requestXML.Content.IndexOf("官网") > -1 || requestXML.Content.IndexOf("首页") > -1) { _url = context.Request.Url.Host + "/Mobile/default.html"; xmlMsg = "<xml>" + "<ToUserName><![CDATA[" + requestXML.FromUserName + "]]></ToUserName>" + "<FromUserName><![CDATA[" + requestXML.ToUserName + "]]></FromUserName>" + "<CreateTime>" + GetCreateTime() + "</CreateTime>" + "<MsgType><![CDATA[news]]></MsgType>" + "<ArticleCount>1</ArticleCount>" + "<Articles><item>" + "<Title><![CDATA[微官网]]></Title>" + "<Description><![CDATA[微官网]]></Description>" + "<Url><![CDATA[" + _url + "]]></Url>" + "</item></Articles>" + "</xml>"; } else if (requestXML.Content.IndexOf("会员") > -1 || requestXML.Content.IndexOf("个人") > -1 || requestXML.Content.IndexOf("我") > -1) { _url = context.Request.Url.Host + "/Mobile/user/index.html"; xmlMsg = "<xml>" + "<ToUserName><![CDATA[" + requestXML.FromUserName + "]]></ToUserName>" + "<FromUserName><![CDATA[" + requestXML.ToUserName + "]]></FromUserName>" + "<CreateTime>" + GetCreateTime() + "</CreateTime>" + "<MsgType><![CDATA[news]]></MsgType>" + "<ArticleCount>1</ArticleCount>" + "<Articles><item>" + "<Title><![CDATA[会员中心]]></Title>" + "<Description><![CDATA[会员中心]]></Description>" + "<Url><![CDATA[" + _url + "]]></Url>" + "</item></Articles>" + "</xml>"; } else { string _keyword = StringHelper.AddSafe(requestXML.Content); var productlist = ProductBLL.SearchList(new ProductSearchInfo { IsSale = (int)BoolType.True, Key = _keyword }); if (productlist.Count > 0) { _url = context.Request.Url.Host + "/mobile/list.html?kw=" + _keyword; xmlMsg = "<xml>" + "<ToUserName><![CDATA[" + requestXML.FromUserName + "]]></ToUserName>" + "<FromUserName><![CDATA[" + requestXML.ToUserName + "]]></FromUserName>" + "<CreateTime>" + GetCreateTime() + "</CreateTime>" + "<MsgType><![CDATA[news]]></MsgType>" + "<ArticleCount>1</ArticleCount>" + "<Articles><item>" + "<Title><![CDATA[商品搜索:" + _keyword + "]]></Title>" + "<Description><![CDATA[约" + productlist.Count + "个]]></Description>" + "<Url><![CDATA[" + _url + "]]></Url>" + "</item></Articles>" + "</xml>"; } else { string replycontent = string.IsNullOrEmpty(DefaultReply) ? requestXML.Content : DefaultReply; xmlMsg = "<xml>" + "<ToUserName><![CDATA[" + requestXML.FromUserName + "]]></ToUserName>" + "<FromUserName><![CDATA[" + requestXML.ToUserName + "]]></FromUserName>" + "<CreateTime>" + GetCreateTime() + "</CreateTime>" + "<MsgType><![CDATA[text]]></MsgType>" + "<Content><![CDATA[" + replycontent + "]]></Content>" + "</xml>"; } } context.Response.Clear(); context.Response.Write(xmlMsg); context.Response.End(); break; case "event": //发送事件消息 if (!string.IsNullOrWhiteSpace(requestXML.Event) && requestXML.Event.ToString().Trim().ToLower().Equals("subscribe")) { //SendWelComeMsg(requestXML);//关注时返回的图文消息 string _redirecturi = HttpUtility.UrlDecode(this.WechatLoginUrl); string _state = new Random().Next(0, 9999).ToString(); _url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + Appid + "&redirect_uri=" + _redirecturi + "&response_type=code&scope=snsapi_userinfo&state=" + _state + "#wechat_redirect"; string replytitle = string.IsNullOrEmpty(AttentionTitle) ? ShopConfig.ReadConfigInfo().SiteName : AttentionTitle; string replysummary = string.IsNullOrEmpty(AttentionSummary) ? ShopConfig.ReadConfigInfo().Description : AttentionSummary; string replyimage = string.IsNullOrEmpty(AttentionPicture) ? "/admin/images/welcome.jpg" : AttentionPicture; xmlMsg = "<xml>" + "<ToUserName><![CDATA[" + requestXML.FromUserName + "]]></ToUserName>" + "<FromUserName><![CDATA[" + requestXML.ToUserName + "]]></FromUserName>" + "<CreateTime>" + GetCreateTime() + "</CreateTime>" + "<MsgType><![CDATA[news]]></MsgType>" + "<ArticleCount>1</ArticleCount>" + "<Articles><item>" + "<Title><![CDATA[" + replytitle + "]]></Title>" + "<Description><![CDATA[" + replysummary + "]]></Description>" + "<PicUrl><![CDATA[http://" + context.Request.Url.Host + replyimage + "]]></PicUrl>" //+ "<PicUrl><![CDATA[http://" + context.Request.Url.Host + (context.Request.Url.Port > 0 ? ":" + context.Request.Url.Port : "") + replyimage + "]]></PicUrl>" + "<Url><![CDATA[" + _url + "]]></Url>" + "</item></Articles>" + "</xml>"; } //菜单点击事件click else if (!string.IsNullOrWhiteSpace(requestXML.Event) && requestXML.Event.ToString().Trim().ToLower().Equals("click")) { //SendEventMsg(requestXML);//发送事件消息 string _keyword = StringHelper.AddSafe(requestXML.EventKey); var productlist = ProductBLL.SearchList(new ProductSearchInfo { IsSale = (int)BoolType.True, Key = _keyword }); if (productlist.Count > 0) { _url = context.Request.Url.Host + "/mobile/list.html?kw=" + _keyword; xmlMsg = "<xml>" + "<ToUserName><![CDATA[" + requestXML.FromUserName + "]]></ToUserName>" + "<FromUserName><![CDATA[" + requestXML.ToUserName + "]]></FromUserName>" + "<CreateTime>" + GetCreateTime() + "</CreateTime>" + "<MsgType><![CDATA[news]]></MsgType>" + "<ArticleCount>1</ArticleCount>" + "<Articles><item>" + "<Title><![CDATA[商品搜索:" + _keyword + "]]></Title>" + "<Description><![CDATA[约" + productlist.Count + "个]]></Description>" + "<Url><![CDATA[" + _url + "]]></Url>" + "</item></Articles>" + "</xml>"; } else { string replycontent = string.IsNullOrEmpty(DefaultReply) ? requestXML.EventKey : DefaultReply; xmlMsg = "<xml>" + "<ToUserName><![CDATA[" + requestXML.FromUserName + "]]></ToUserName>" + "<FromUserName><![CDATA[" + requestXML.ToUserName + "]]></FromUserName>" + "<CreateTime>" + GetCreateTime() + "</CreateTime>" + "<MsgType><![CDATA[text]]></MsgType>" + "<Content><![CDATA[" + replycontent + "]]></Content>" + "</xml>"; } } context.Response.Clear(); context.Response.Write(xmlMsg); context.Response.End(); break; case "location": //发送位置消息 //SendMapMsg(requestXML); break; default: break; } } catch (Exception ex) { HttpContext.Current.Response.Write(ex.ToString()); } }
private static void WebF(IApplicationBuilder app) { app.Run(async context => { //context.Request.Body using (var s = context.Request.Body) { using (StreamReader reader = new StreamReader(s)) { string text = reader.ReadToEnd(); Console.WriteLine(text); XmlDocument xml = new XmlDocument(); xml.LoadXml(text); XmlElement rootElement = xml.DocumentElement; WxXmlModel WxXmlModel = new WxXmlModel(); WxXmlModel.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText; WxXmlModel.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText; WxXmlModel.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText; WxXmlModel.MsgType = rootElement.SelectSingleNode("MsgType").InnerText; switch (WxXmlModel.MsgType) { case "text": //文本 { WxXmlModel.Content = rootElement.SelectSingleNode("Content").InnerText; Console.WriteLine(WxXmlModel.Content); if (BitCoin.CheckAddress.CheckAddressIsUseful(WxXmlModel.Content)) { var value = DalOfAddress.MoneyAdd.GetMoney(WxXmlModel.Content); var priceStr = $"{value / 100}.{(value % 100) / 10}{value % 10}"; string msg = string.Format( Message_Text, WxXmlModel.FromUserName, WxXmlModel.ToUserName, DateTime.Now.Ticks, $"查询到{WxXmlModel.Content}有{priceStr}金币!"); Console.WriteLine(msg); await context.Response.WriteAsync(msg, Encoding.UTF8); } else { // if(BitCoin.Base58.) string msg = string.Format( Message_Text, WxXmlModel.FromUserName, WxXmlModel.ToUserName, DateTime.Now.Ticks, $"你好,现在是{DateTime.Now.ToString("yyyy年MM月dd日 HH时mm分ss秒")},我是要瑞卿。我现在接收到了你的消息,还不知道要回复你什么!"); Console.WriteLine(msg); await context.Response.WriteAsync(msg, Encoding.UTF8); } } break; case "image": //图片 // WxXmlModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText; break; case "event": //事件 //WxXmlModel.Event = rootElement.SelectSingleNode("Event").InnerText; //if (WxXmlModel.Event == "subscribe")//关注类型 //{ // WxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText; //} break; default: break; } } } // < xml >< ToUserName >< ![CDATA[gh_36a2a769194c]] ></ ToUserName > //< FromUserName >< ![CDATA[o6YIy6PwPcXEwcrq - hzSgbJFQubU]] ></ FromUserName > //< CreateTime > 1621346633 </ CreateTime > //< MsgType >< ![CDATA[text]] ></ MsgType > //< Content >< ![CDATA[现在]] ></ Content > //< MsgId > 23212102767046389 </ MsgId > //</ xml > #region 验证服务器所需 // context.Request.Body // context.typ //Console.WriteLine("我被调用了"); //cont //string token = "yrqIsAGenius"; //var echoStr = context.Request.Query["echoStr"]; //Console.WriteLine($"echoStr:{echoStr}"); //var signature = context.Request.Query["signature"]; //Console.WriteLine($"signature :{signature}"); //var timestamp = context.Request.Query["timestamp"]; //Console.WriteLine($"timestamp :{timestamp}"); //var nonce = context.Request.Query["nonce"]; //Console.WriteLine($"nonce:{nonce}"); //if (CheckSignature(token, signature, timestamp, nonce)) //{ // if (!string.IsNullOrEmpty(echoStr)) // { // await context.Response.WriteAsync(echoStr, Encoding.UTF8); // } //} #endregion }); }