예제 #1
0
파일: wxController.cs 프로젝트: soon14/vzan
        /// <summary>
        /// 微信消息推送
        /// </summary>
        /// <returns></returns>
        public ActionResult wxcheck(int id = 0)
        {
            try
            {
                WeixinServer _wx = new WeixinServer();

                if (Request.HttpMethod.ToUpper() == "POST")
                {
                    using (StreamReader stream = new StreamReader(Request.InputStream))
                    {
                        string xml = stream.ReadToEnd();
                        //log4net.LogHelper.WriteInfo(this.GetType(), "微信事件推送:" + xml);
                        if (!string.IsNullOrEmpty(xml))
                        {
                            _wx.processRequest(xml, id);
                            Response.End();
                        }
                    }
                }
                else
                {
                    _wx.Auth(string.Empty);
                    Response.End();
                }
            }
            catch (Exception ex)
            {
                log4net.LogHelper.WriteError(this.GetType(), ex);
            }
            return(View());
        }
예제 #2
0
        //
        // GET: /wx/
        /// <summary>
        /// 新微信公众号处理请求
        /// </summary>
        /// <returns></returns>
        public string Index()
        {
            #region   处理请求
            if (Request.HttpMethod.ToUpper() == "GET")//GET
            {
                // 微信加密签名
                string signature = Request.QueryString["signature"];
                // 时间戳
                string timestamp = Request.QueryString["timestamp"];
                // 随机数
                string nonce = Request.QueryString["nonce"];
                // 随机字符串
                string echostr = Request.QueryString["echostr"];
                if (WeixinServer.CheckSignature(signature, timestamp, nonce))
                {
                    return(echostr);
                }
            }
            else if (Request.HttpMethod.ToUpper() == "POST")
            {
                Stream s = System.Web.HttpContext.Current.Request.InputStream;
                byte[] b = new byte[s.Length];
                s.Read(b, 0, (int)s.Length);
                string postStr = Encoding.UTF8.GetString(b);

                //System.IO.File.AppendAllText(Context.Server.MapPath("img") + "log4.txt", postStr + "\r\n\r\n");

                return(new  WeiXinProcessing.WeiXinProcess().processRequest(postStr));
            }
            #endregion
            return("");
        }
예제 #3
0
    protected void button1_Click(object sender, EventArgs e)
    {
        tbl_canshu canshu = new tbl_canshu();

        canshu.GetModel(1);
        WeixinServer wx = new WeixinServer();

        wx.GetUserInfo(canshu.sys_name, "oNxcK0j0c2vIH0pgwdeVuhHNzNRs");
        Response.Write("<script language=javascript>alert('" + wx.nickname + "');history.go(-1);</script>");
        //GetUserInfo(canshu.sys_name, "oNxcK0j0c2vIH0pgwdeVuhHNzNRs");
    }
예제 #4
0
    protected void button_get_Click(object sender, EventArgs e)
    {
        WeixinServer wx = new WeixinServer();
        //string a = wx.JsCode2Session();
        tbl_canshu canshu = new tbl_canshu();

        canshu.GetModel(1);
        canshu.id       = 1;
        canshu.sys_name = wx.access_token;
        canshu.Update();
    }
예제 #5
0
    public static String getPerpetualQR(String account)
    {
        WeixinServer wx    = new WeixinServer();
        string       token = wx.access_token;
        //获取数据的地址(微信提供)
        String url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={0}";

        url = string.Format(url, token);
        //发送给微信服务器的数据
        String     jsonStr = "{\"action_name\": \"QR_LIMIT_SCENE\", \"action_info\":{\"scene\": {\"scene_id\": " + account + "}}}";
        tbl_canshu casnhu  = new tbl_canshu();

        casnhu.GetModel(1);
        casnhu.canshu_gonggao = jsonStr;
        //casnhu.sys_name = shangid;
        casnhu.Update();
        //post请求得到返回数据(这里是封装过的,就是普通的java post请求)
        String response = wx.GetPage(url, jsonStr);

        return(response);
    }
예제 #6
0
파일: Dapeng.cs 프로젝트: 552847957/mjapi
        ///// <summary>
        ///// 处理具体的微信请求
        ///// </summary>
        ///// <param name="poststr"></param>
        ///// <returns></returns>
        //public static string processRequest(string poststr)
        //{
        //    return "";
        //}



        /// <summary>
        /// 处理微信发来的请求
        /// </summary>
        /// <param name="xml"></param>
        public string processRequest(String xml)
        {
            try
            {
                #region 初始化接受到的xml   初始化消息父类
                // xml请求解析
                Hashtable requestHT = WeixinServer.ParseXml(xml);
                // 发送方帐号(open_id)
                string fromUserName = (string)requestHT["FromUserName"];
                // 公众帐号
                string toUserName = (string)requestHT["ToUserName"];
                // 消息类型
                string msgType = (string)requestHT["MsgType"];

                BaseMessage info = new BaseMessage();
                info.FromUserName = fromUserName;
                info.ToUserName   = toUserName;
                info.MsgType      = msgType;
                #endregion

                //文字消息
                if (msgType == ReqMsgType.Text)
                {
                    string s = ResponseByText(requestHT["Content"].ToString(), info);

                    return(s);

                    #region 描述

                    //用户在点击按钮后的输入以后   session[用户id]!=null
                    //如果session["用户id"]=="自助服务菜单下"  那么用户所有的输入都是按照   自助服务菜单下做回复  用户切换菜单后session[用户id]="新的用户菜单"
                    //主界面的用户输入最好不要和自定义菜单的输入重复; 这样就可以实现不同菜单下用户输入相同的数字 服务器做出不同的响应
                    #endregion
                }
                //事件推送
                else if (msgType == ReqMsgType.Event)
                {
                    // 事件类型
                    String eventType = (string)requestHT["Event"];

                    #region 订阅取消订阅部分
                    // 订阅
                    if (eventType.ToLower() == ReqEventType.Subscribe)
                    {                                                              //qrscene_123123
                        if (requestHT["EventKey"].ToString().Contains("qrscene_")) //用户未关注情况下
                        {
                            #region MyRegion


                            #endregion
                            if (requestHT["EventKey"].ToString() == "qrscene_2")
                            {
                                List <ArticleEntity> lis = new List <ArticleEntity> {
                                    new ArticleEntity {
                                        Description = "大砍价", Title = "活动详情", PicUrl = "http:/mobile.mj100.com/active/img/price.png", Url = "http://mobile.mj100.com/wechart/login7"
                                    }
                                };


                                return(GetresponseNews(info, lis));
                            }
                            else
                            {
                                return(GetresponseText(info, @"感谢您关注极客美家服务号!极客美家是集设计、装修、建材、家居领域为一体,提供优质家装配套服务的云装修平台。点击屏幕下方功能按钮,您可以预约量房、查看装修工程进度,还可以申请装修贷款。" + requestHT["EventKey"].ToString()));
                            }
                        }
                        else
                        {
                            return(GetresponseText(info, @"感谢您关注极客美家服务号!极客美家是集设计、装修、建材、家居领域为一体,提供优质家装配套服务的云装修平台。点击屏幕下方功能按钮,您可以预约量房、查看装修工程进度,还可以申请装修贷款。
"));
                        }
                    }
                    // 取消订阅
                    else if (eventType.ToLower() == ReqEventType.Unsubscribe)
                    {
                        // TODO 取消订阅后用户再收不到公众号发送的消息,因此不需要回复消息
                    }
                    #endregion

                    //自定义菜单点击事件
                    else if (eventType.ToLower() == ReqEventType.CLICK)
                    {
                        #region 描述
                        //这里可能要记录每次用户的点击 用用户的appid做key  EventKey作为值
                        //根据 EventKey 判断是点的哪个按钮 , 然后返回什么样的数据 , 比如说用户点的是查询装修进度 , 返回请输入进度用户名 , 则可返回
                        //多少个key值全列出来 每个值下面做不同的处理

                        /* {
                         * "button":[
                         * {
                         *
                         * "name":"美家计划",
                         * "sub_button":[
                         * {
                         * "type":"click",
                         * "name":"积分商城",
                         * "key":"jfsc"
                         * },
                         * {
                         * "type":"click",
                         * "name":"建材折扣",
                         * "key":"jczk"
                         * },
                         * {
                         * "type":"click",
                         * "name":"最新活动",
                         * "key":"wqhg"
                         * }
                         * ]
                         * },
                         * {
                         * "name":"自助服务",
                         * "sub_button":[
                         * {
                         * "type":"click",
                         * "name":"小美装家",
                         * "key":"jfcx"
                         * },
                         * {
                         * "type":"click",
                         * "name":"云装修平台",
                         * "key":"sgys"
                         * },
                         * {
                         * "type":"click",
                         * "name":"我的订单",
                         * "key":"wddd"
                         * },
                         * {
                         * "type":"click",
                         * "name":"施工管理",
                         * "key":"sgppp"
                         * },
                         * {
                         * "type":"click",
                         * "name":"实时验收",
                         * "key":"sgppp"
                         * }
                         * ]
                         * },
                         * {
                         * "name":"关于我们",
                         * "sub_button":[
                         * {
                         * "type":"click",
                         * "name":"美家易贷",
                         * "key":"gywm"
                         * },
                         * {
                         * "type":"click",
                         * "name":"小美管家",
                         * "key":"fqf"
                         * },
                         * {
                         * "type":"click",
                         * "name":"极客美家",
                         * "key":"zxb"
                         * }
                         * ]
                         * }]
                         * } */
                        #endregion
                        return(ResponseByClick((string)requestHT["EventKey"], info));
                    }
                    else if (eventType.ToLower() == "scan")//用户关注过后扫描二维码事件
                    {
                        return(ResponseByClick((string)requestHT["EventKey"], info));
                    }
                    else if (eventType.ToLower() == ReqEventType.view)
                    {
                        return(GetresponseText(info, "你要跳转的链接是:" + (string)requestHT["EventKey"]));
                    }
                }
                //位置消息
                else if (msgType.ToLower() == ReqMsgType.Location)
                {
                    return("");
                }
            }
            catch (Exception e)
            {
                throw e;
            }


            return("");
        }