Ejemplo n.º 1
0
        public void ProcessRequest(HttpContext context)
        {
            string httpMethod = context.Request.HttpMethod.ToLower();

            context.Response.ContentType = "text/plain";
            string result = string.Empty;

            if (httpMethod == "post")
            {
                StreamReader str   = new StreamReader(context.Request.InputStream, System.Text.Encoding.UTF8);
                WeiXinModel  model = null;
                if (str != null)
                {
                    model = GetModel(str);
                    LogModel(model, context);
                    result = GetResult(model, context);
                }

                context.Response.Write(result);
                context.Response.End();
            }
            else
            {
                Valid(context);
            }
        }
Ejemplo n.º 2
0
 public string GetImage(WeiXinModel model)
 {
     return(string.Format(@"<xml>
                                 <ToUserName><![CDATA[{0}]]></ToUserName>
                                 <FromUserName><![CDATA[{1}]]></FromUserName>
                                 <CreateTime>{2}</CreateTime>
                                 <MsgType><![CDATA[image]]></MsgType>
                                 <Image>
                                     <MediaId><![CDATA[{3}]]></MediaId>
                                 </Image>
                           </xml>", model.FromUserName, model.ToUserName, DateTimeToUnixInt(DateTime.Now).ToString(),
                          model.MediaId));
 }
Ejemplo n.º 3
0
        private string OperationEvent(WeiXinModel model, HttpContext context)
        {
            switch (model.Event)
            {
            case "subscribe":    //初次关注
                HandleUser(model, context, true);
                return(GetText(model, context));

            case "SCAN":    //已经关注
                return(GetText(model, context));

            default:
                return(GetText(model, context));
            }
        }
Ejemplo n.º 4
0
        public string HandleUser(WeiXinModel model, HttpContext context, bool subscribe)
        {
            string   url         = string.Format("https://api.weixin.qq.com/cgi-bin/user/info?openid={0}&lang=zh_CN&access_token=", model.FromUserName);
            string   userInfoStr = WeiXin_API_Helper.GetRequest(context, url);
            UserInfo userInfo    = JsonConvert.DeserializeObject <UserInfo>(userInfoStr);

            WeixinUsersBLL bll = new WeixinUsersBLL();

            if (!bll.Exsits(userInfo.openid))
            {
                userInfo.tagid_list_str = string.Join(",", userInfo.tagid_list);
                userInfo.subscribeTime  = GetTime(userInfo.subscribe_time.ToString());
                userInfo.userType       = subscribe ? 2 : 1;
                userInfo.remark         = userInfo.nickname;
                bll.Add(userInfo);
            }
            return(userInfo.openid);
        }
Ejemplo n.º 5
0
 private void LogModel(WeiXinModel model, HttpContext context)
 {
     using (var stream = new FileStream(context.Server.MapPath("textRequest.txt"), FileMode.OpenOrCreate, FileAccess.ReadWrite))
     {
         StreamWriter writer = new StreamWriter(stream);
         writer.WriteLine("ToUserName:"******"FromUserName:"******"CreateTime:" + model.CreateTime);
         writer.WriteLine("MsgType:" + model.MsgType);
         writer.WriteLine("Content:" + model.Content);
         writer.WriteLine("MsgId:" + model.MsgId);
         writer.WriteLine("PicUrl:" + model.PicUrl);
         writer.WriteLine("MediaId:" + model.MediaId);
         writer.WriteLine("Event:" + model.Event);
         writer.WriteLine("EventKey:" + model.EventKey);
         writer.WriteLine("Ticket:" + model.Ticket);
         writer.Close();
     }
 }
Ejemplo n.º 6
0
        public string GetText(WeiXinModel model, HttpContext context)
        {
            if (model.Content.Contains("二维码"))
            {
                string openId = HandleUser(model, context, false);

                string result            = WeiXin_API_Helper.GenerateQrCode(context, openId);
                PostMaterialResponse pmr = JsonConvert.DeserializeObject <PostMaterialResponse>(result);
                model.MediaId = pmr.media_id;
                return(GetImage(model));
            }
            return(string.Format(@"<xml>
                                        <ToUserName><![CDATA[{0}]]></ToUserName>
                                        <FromUserName><![CDATA[{1}]]></FromUserName>
                                        <CreateTime>{2}</CreateTime>
                                        <MsgType><![CDATA[text]]></MsgType>
                                        <Content><![CDATA[{3}]]></Content>
                                  </xml>", model.FromUserName, model.ToUserName, DateTimeToUnixInt(DateTime.Now).ToString(), Welcome));
        }
Ejemplo n.º 7
0
        private WeiXinModel GetModel(StreamReader str)
        {
            WeiXinModel model = new WeiXinModel();
            XmlDocument doc   = new XmlDocument();

            doc.Load(str);

            model.ToUserName   = doc.SelectSingleNode("xml").SelectSingleNode("ToUserName").InnerText;
            model.FromUserName = doc.SelectSingleNode("xml").SelectSingleNode("FromUserName").InnerText;
            model.CreateTime   = doc.SelectSingleNode("xml").SelectSingleNode("CreateTime").InnerText;
            model.MsgType      = doc.SelectSingleNode("xml").SelectSingleNode("MsgType").InnerText;
            model.Content      = doc.SelectSingleNode("xml").SelectSingleNode("Content") == null ? "" : doc.SelectSingleNode("xml").SelectSingleNode("Content").InnerText;
            model.MsgId        = doc.SelectSingleNode("xml").SelectSingleNode("MsgId") == null ? "" : doc.SelectSingleNode("xml").SelectSingleNode("MsgId").InnerText;
            model.PicUrl       = doc.SelectSingleNode("xml").SelectSingleNode("PicUrl") == null ? "" : doc.SelectSingleNode("xml").SelectSingleNode("PicUrl").InnerText;
            model.MediaId      = doc.SelectSingleNode("xml").SelectSingleNode("MediaId") == null ? "" : doc.SelectSingleNode("xml").SelectSingleNode("MediaId").InnerText;
            model.Event        = doc.SelectSingleNode("xml").SelectSingleNode("Event") == null ? "" : doc.SelectSingleNode("xml").SelectSingleNode("Event").InnerText;
            model.EventKey     = doc.SelectSingleNode("xml").SelectSingleNode("EventKey") == null ? "" : doc.SelectSingleNode("xml").SelectSingleNode("EventKey").InnerText;
            model.Ticket       = doc.SelectSingleNode("xml").SelectSingleNode("Ticket") == null ? "" : doc.SelectSingleNode("xml").SelectSingleNode("Ticket").InnerText;

            return(model);
        }
Ejemplo n.º 8
0
        private string GetResult(WeiXinModel model, HttpContext context)
        {
            string result = string.Empty;

            switch (model.MsgType)
            {
            case "text":
                result = GetText(model, context);
                break;

            case "image":
                result = GetImage(model);
                break;

            case "event":
                result = OperationEvent(model, context);
                break;

            default: break;
            }
            return(result);
        }