Ejemplo n.º 1
0
        /// <summary>
        /// 通过ticket换取二维码
        /// </summary>
        /// <param name="ticket"></param>
        /// <param name="filepath"></param>
        /// <returns></returns>
        public static MediaGetRes Showqrcode(string ticket, string filepath)
        {
            string filename = null;
            string url      = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=";

            url += ticket;

            TimeoutWebClient wc = ThreadWebClientFactory.GetWebClient();

            wc.DownloadFile(url, filepath);

            string disposition = wc.ResponseHeaders["Content-disposition"];

            if (string.IsNullOrEmpty(disposition))
            {
                string json = System.IO.File.ReadAllText(filepath);
                return(JsonConvert.DeserializeObject <MediaGetRes>(json));
            }
            else
            {
                filename = StringHelper.SubString(disposition, "filename=\"", "\"");
            }

            return(new MediaGetRes()
            {
                errcode = "0", filename = filename
            });
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 获取临时素材
        /// </summary>
        /// <param name="access_token"></param>
        /// <param name="media_id"></param>
        /// <param name="filepath"></param>
        /// <returns></returns>
        public static MediaGetRes Media_Get(string access_token, string media_id, string filepath)
        {
            string filename = null;

            string url = "https://api.weixin.qq.com/cgi-bin/media/get?access_token={0}&media_id={1}";

            url = string.Format(url, access_token, media_id);

            TimeoutWebClient wc = ThreadWebClientFactory.GetWebClient();

            wc.DownloadFile(url, filepath);

            string disposition = wc.ResponseHeaders["Content-disposition"];

            if (string.IsNullOrEmpty(disposition))
            {
                string json = System.IO.File.ReadAllText(filepath);
                return(JsonConvert.DeserializeObject <MediaGetRes>(json));
            }
            else
            {
                filename = StringHelper.SubString(disposition, "filename=\"", "\"");
            }

            return(new MediaGetRes()
            {
                errcode = "0", filename = filename
            });
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 获取企业号JsApi调用凭据config
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static GetQyApiConfigRes GetQyJsApiConfig(string url)
        {
            url = HttpUtility.UrlEncode(url);
            var json = ThreadWebClientFactory.GetWebClient()
                       .DownloadString($"{ConfigurationManager.AppSettings["ShortUrlService"]}/JsApi/Index?url=" + url);

            var res = JsonConvert.DeserializeObject <GetQyApiConfigRes>(json);

            return(res);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// GET方式请求一个字符串
        /// </summary>
        /// <param name="url"></param>
        /// <param name="pu"></param>
        /// <returns></returns>
        public string GetString(string url, Dictionary <string, string> pu)
        {
            var param = string.Join("&", pu.Select(a => a.Key + "=" + a.Value));
            var wc    = ThreadWebClientFactory.GetWebClient(WEBCLIENTTHREADKEY);

            wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");

            var rel  = wc.GetLoadData(url, param);
            var json = Encoding.UTF8.GetString(rel);

            return(json);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 获取自定义菜单配置接口
        /// </summary>
        /// <param name="access_token"></param>
        /// <returns></returns>
        public static string Get_current_selfmenu_info(string access_token)
        {
            string url = "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=";

            url += access_token;

            TimeoutWebClient wc = ThreadWebClientFactory.GetWebClient();

            wc.Encoding = Encoding.UTF8;
            var json = wc.GetLoadString(url, string.Empty);

            return(json);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Get请求并反馈解码后的Json对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <returns></returns>
        public static T GetObject <T>(string url, string param = "")
            where T : BaseRes
        {
            TimeoutWebClient wc = ThreadWebClientFactory.GetWebClient();

            wc.Encoding = Encoding.UTF8;
            var json = wc.GetLoadString(url, param);
            var rel  = JsonConvert.DeserializeObject <T>(json);

            if (string.IsNullOrEmpty(rel.errcode))
            {
                rel.errcode = "0";
            }
            return(rel);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 进入Action之前进行拦截
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpSessionStateBase Session = filterContext.HttpContext.Session;
            string userId = Session[ConstantHelper.CurrentOpenId] as string;

            if (string.IsNullOrEmpty(userId))
            {
                // 如果是ajax请求,应直接反馈json提示手动刷新页面
                if (filterContext.HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest" ||
                    filterContext.HttpContext.Request["IsJsonCall"] == "1")
                {
                    filterContext.Result = new JsonResult()
                    {
                        JsonRequestBehavior = JsonRequestBehavior.AllowGet,
                        Data = new
                        {
                            state = 0,
                            txt   = "操作失败!页面超时失效,请重新打开当前页面"
                        }
                    };
                }
                else
                {
                    var user_ticket = filterContext.HttpContext.Request["user_ticket"];
                    if (string.IsNullOrEmpty(user_ticket))
                    {
                        // 还未通过oauth2取得openid
                        var oauth2url = $"{ConfigurationManager.AppSettings["ShortUrlService"]}/s/{MappingKey}";
                        filterContext.Result = new RedirectResult(oauth2url);
                    }
                    else
                    {
                        var json = ThreadWebClientFactory.GetWebClient()
                                   .DownloadString($"{ConfigurationManager.AppSettings["ShortUrlService"]}/UrlMapping/GetUserInfoByTicket/{user_ticket}");
                        var userInfoRes = JsonConvert.DeserializeObject <WxUserInfoRes>(json);
                        if (userInfoRes.state == 1 && userInfoRes.userinfo.errcode == 1)
                        {
                            Session[ConstantHelper.CurrentOpenId] = userInfoRes.userinfo.userId;
                        }
                        else
                        {
                            // 没有权限
                            filterContext.HttpContext.Response.Write("您无使用此功能的权限");
                        }
                    }
                }
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Post请求并反馈解码后的Json对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="url"></param>
        /// <param name="post"></param>
        /// <returns></returns>
        public static T PostObject <T>(string url, string post)
            where T : BaseRes
        {
            TimeoutWebClient wc = ThreadWebClientFactory.GetWebClient();

            wc.Encoding = Encoding.UTF8;
            wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
            var json = wc.PostLoadString(url, post);
            var rel  = JsonConvert.DeserializeObject <T>(json);

            if (string.IsNullOrEmpty(rel.errcode))
            {
                rel.errcode = "0";
            }
            return(rel);
        }
Ejemplo n.º 9
0
        // 素材管理接口
        #region 新增临时素材
        /// <summary>
        /// 新增临时素材
        /// </summary>
        /// <param name="access_token"></param>
        /// <param name="type"></param>
        /// <param name="file"></param>
        /// <returns></returns>
        public static MediaUploadRes Media_Upload(string access_token, EnumUploadType type, string file)
        {
            string url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}";

            url = string.Format(url, access_token, type);

            TimeoutWebClient wc = ThreadWebClientFactory.GetWebClient();

            wc.Encoding = Encoding.UTF8;
            wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
            var    bytes = wc.UploadFile(url, "POST", file);
            string json  = Encoding.UTF8.GetString(bytes);

            MediaUploadRes res = JsonConvert.DeserializeObject <MediaUploadRes>(json);

            if (string.IsNullOrEmpty(res.errcode))
            {
                res.errcode = "0";
            }
            return(res);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// POST方式请求一个字符串
        /// </summary>
        /// <param name="url"></param>
        /// <param name="pu"></param>
        /// <returns></returns>
        public string PostString(string url, Dictionary <string, string> pu)
        {
            Dictionary <string, string> gets = new Dictionary <string, string>();

            gets.Add("timestamp", pu["timestamp"]);
            gets.Add("consumer_key", pu["consumer_key"]);
            gets.Add("sig", pu["sig"]);

            pu.Remove("timestamp");
            pu.Remove("consumer_key");
            pu.Remove("sig");

            var urlparam = string.Join("&", gets.Select(a => a.Key + "=" + a.Value));

            var param = string.Join("&", pu.Select(a => a.Key + "=" + a.Value));
            var wc    = ThreadWebClientFactory.GetWebClient(WEBCLIENTTHREADKEY);

            wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");

            var rel  = wc.PostLoadData(url + "?" + urlparam, param);
            var json = Encoding.UTF8.GetString(rel);

            return(json);
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 进入Action之前进行拦截
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            filterContext.HttpContext.Response.Headers.Add("mic", "1");

            var uri = filterContext.HttpContext.Request.AppRelativeCurrentExecutionFilePath;

            HttpSessionStateBase Session = filterContext.HttpContext.Session;
            var wxUser = Session[ConstantHelper.CURRENTWXUSER] as P_USERINFO;

            if (wxUser == null || string.IsNullOrEmpty(wxUser.UserId))
            {
                var user_ticket = filterContext.HttpContext.Request["user_ticket"];
                if (string.IsNullOrEmpty(user_ticket))
                {
                    // 还未通过oauth2取得openid

                    var oauth2url = $"{ConfigurationManager.AppSettings["ShortUrlService"]}/s/{MappingKey}";
                    if (CallBackUrl)
                    {
                        var nowUrl = System.Configuration.ConfigurationManager.AppSettings["CurrentRootDomain"] + filterContext.HttpContext.Request.Url.PathAndQuery;
                        oauth2url += $"?callback={HttpUtility.UrlEncode(nowUrl)}";
                    }

                    filterContext.Result = new RedirectResult(oauth2url);
                }
                else
                {
                    var getUserInfoUrl = $"{ConfigurationManager.AppSettings["iPathAuthService"]}/UrlMapping/GetUserInfoByTicket/{user_ticket}";
                    LogHelper.Info(getUserInfoUrl);

                    var json = ThreadWebClientFactory.GetWebClient().DownloadString(getUserInfoUrl);
                    LogHelper.Info(json);
                    var userInfoRes = JsonConvert.DeserializeObject <WxUserInfoRes>(json);
                    if (userInfoRes.state == 1 && userInfoRes.userinfo.errcode == 1)
                    {
                        var channelUser = UserInfoClientChannelFactory.GetChannel();
                        var channelBase = BaseDataClientChannelFactory.GetChannel();

                        var userId   = userInfoRes.userinfo.userId;
                        var userInfo = channelUser.FindByUserId(userId);
                        if (userInfo == null)
                        {
                            var res1 = channelUser.Find(userId);

                            P_USERINFO entity = new P_USERINFO();
                            entity.ID         = Guid.NewGuid();
                            entity.UserId     = userId;
                            entity.Name       = res1.Name;
                            entity.CreateDate = DateTime.Now;
                            var _res = channelUser.Add(entity);

                            userInfo = channelUser.FindByUserId(userId);
                        }

                        var listGroup = channelBase.LoadUserGroup(userId).Select(a => a.GroupType).ToArray();

                        if (listGroup.Contains(GroupType.ServPause))
                        {
                            userInfo.IsServPause = 1;
                        }
                        if (listGroup.Contains(GroupType.OutSideHT))
                        {
                            userInfo.IsOutSideHT = 1;
                        }


                        Session[ConstantHelper.CURRENTWXUSER] = userInfo;
                        var url = filterContext.HttpContext.Request.RawUrl;
                        if (url.Contains("user_ticket"))
                        {
                            url = url.Replace($"user_ticket={user_ticket}", string.Empty);
                        }

                        filterContext.Result = new RedirectResult(url);
                    }
                    else
                    {
                        // 没有权限
                        filterContext.Result = new ContentResult()
                        {
                            Content = "您无使用此功能的权限"
                        };
                    }
                }
            }
            else
            {
                var           IsPublishProgram = ConfigurationManager.AppSettings["IsPublishProgram"];
                var           SystemCoders     = ConfigurationManager.AppSettings["SystemCoders"];
                List <string> Coders           = new List <string>();
                if (!string.IsNullOrEmpty(SystemCoders))
                {
                    Coders = SystemCoders.Split(';').ToList();
                }
                if (IsPublishProgram == "1" && !Coders.Contains(wxUser.UserId))
                {
                    var LocalService = ConfigurationManager.AppSettings["LocalService"];
                    filterContext.Result = new RedirectResult(LocalService + "/P/Publish/Index");
                }
            }
        }