示例#1
0
 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));
 }
示例#2
0
        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);
        }
示例#3
0
        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));
        }
示例#4
0
        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);
            }
        }
示例#5
0
        /// <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);
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
        /// <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);//回复消息
            }
        }
示例#9
0
        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")
            });
        }
示例#10
0
        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);
        }
示例#11
0
        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);
        }
示例#12
0
        /// 获取用户发送的消息
        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);
        }
示例#13
0
        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();
        }
示例#14
0
        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();
        }
示例#15
0
 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));
 }
示例#16
0
        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));
        }
示例#17
0
        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());
            }
        }
示例#18
0
        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
            });
        }