/// <summary>
 /// 获取扫描的二维码参数值
 /// </summary>
 /// <returns></returns>
 public string GetQrSceneValue()
 {
     return(EventKey?.Substring("qrscene_".Length));
 }
Example #2
0
        public string Handle(HttpServerUtility Server, HttpRequest Request, HttpResponse Response)
        {
            string xml = Request.QueryString.Get("echostr");

            if (!string.IsNullOrEmpty(xml))
            {
                return(xml);
            }
            using (System.IO.Stream s = Request.InputStream)
            {
                byte[]        buffer  = new byte[s.Length];
                StringBuilder builder = new StringBuilder();
                s.Read(buffer, 0, (int)s.Length);
                xml = Encoding.UTF8.GetString(buffer);
            }
            if (string.IsNullOrEmpty(xml))
            {
                return("");
            }
            this.onData(xml);
            XmlDocument document = new XmlDocument();

            document.LoadXml(xml);
            string user = document.SelectSingleNode("/xml/FromUserName").InnerText;
            string server = document.SelectSingleNode("/xml/ToUserName").InnerText;
            string EventType = document.SelectSingleNode("/xml/MsgType").InnerText;
            string MediaId, ThumbMediaId;
            string ret;

            try
            {
                switch (EventType)
                {
                case "text":
                    return(makeXML(server, user));

                case "image":
                    return(makeXML(server, user));

                case "voice":
                    return(makeXML(server, user));

                case "video":
                    return(makeXML(server, user));

                case "shortvideo":
                    return(makeXML(server, user));

                case "location":
                    return(makeXML(server, user));

                case "link":
                    return(makeXML(server, user));

                default:
                    string Event = document.SelectSingleNode("/xml/Event").InnerText;
                    string EventKey;
                    switch (Event)
                    {
                    case "subscribe":
                        EventKey = document.SelectSingleNode("/xml/EventKey").InnerText;
                        ret      = this.onSubscribe(server, user, string.IsNullOrEmpty(EventKey) ? null : EventKey.Substring(8));
                        break;

                    case "unsubscribe":
                        this.unSubscribe(server, user);
                        return("");

                    case "SCAN":
                        EventKey = document.SelectSingleNode("/xml/EventKey").InnerText;
                        ret      = this.onScan(server, user, EventKey);
                        break;

                    case "CLICK":
                        EventKey = document.SelectSingleNode("/xml/EventKey").InnerText;
                        ret      = this.onClick(server, user, EventKey);
                        break;

                    case "VIEW":
                        EventKey = document.SelectSingleNode("/xml/EventKey").InnerText;
                        ret      = this.onView(server, user, EventKey);
                        break;

                    case "LOCATION":
                        string Latitude  = document.SelectSingleNode("/xml/Latitude").InnerText;
                        string Longitude = document.SelectSingleNode("/xml/Longitude").InnerText;
                        string Precision = document.SelectSingleNode("/xml/Precision").InnerText;
                        ret = this.onAutoLocation(server, user, Latitude, Longitude, Precision);
                        break;

                    default:
                        ret = this.onUnhandle(server, user, EventType, document);
                        break;
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                ret = onError(ex);
            }
            return(makeResponse(server, user, ret));
        }