private void GetOpenId(ref int comid) { //完整url、域名、参数 string urlstr = Request.Url.ToString(); string hoststr = HttpContext.Current.Request.Url.Host; string paramstr = HttpContext.Current.Request.Url.Query; //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "urlstr:" + urlstr + "\r\n----------------------------------------\r\n" + "hoststr:" + hoststr + "\r\n----------------------------------------\r\n" + "paramstr:" + paramstr); //根据域名获取comid comid = int.Parse(Regex.Match(hoststr, "\\d{1,}").ToString()); if (comid == 0) { return; } //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "Cookiehelp.GetCookie(openid):" + Cookiehelp.GetCookie("openid")); //判断openid是否存在于cookie中 if (Cookiehelp.GetCookie("openid") != "") { Openid = Cookiehelp.GetCookie("openid"); //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "openid:" + Openid); } else { //判断code值是否存在,存在获取openid,并且保存到cookie中; if (Request["code"].ConvertTo <string>("") != "") { string code = Request["code"]; //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "code:" + code); WeiXinBasic basic = new WeiXinBasicData().GetWxBasicByComId(comid); if (basic == null) { return; } //必须为认证服务号才含有网页授权获取用户openid的权限 if (basic.Weixintype == 4) { string requrl = string.Format( "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", basic.AppId, basic.AppSecret, code); string returnStr = HttpUtil.Send("", requrl); //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "returnStr:" + returnStr); var obj = JsonConvert.DeserializeObject <ModelOpenID>(returnStr); Openid = obj.openid; //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "获取的openid:" + Openid); //向cookie添加值 Cookiehelp.WriteCookie("openid", Openid, DateTime.Now.AddDays(30)); } } else //code值不存在,把域名、完整网址、参数部分 保存到数据库 请求网址记录表ReqUrl_Log,返回标识列值Mid; { ReqUrl_Log requrllog = new ReqUrl_Log { mid = 0, urlstr = urlstr, hoststr = hoststr, paramstr = paramstr, subtime = DateTime.Now }; int mid = new ReqUrl_LogHelper().InsReqUrlLog(requrllog); WeiXinBasic basic = new WeiXinBasicData().GetWxBasicByComId(comid); if (basic == null) { return; } //必须为认证服务号才含有网页授权获取用户openid的权限 if (basic.Weixintype == 4) { string redirect_url = urlstr.Replace(".aspx" + paramstr, "_wx_" + mid + ".aspx"); //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "redirect_url:" + redirect_url); scopeurl = WeiXinJsonData.GetFollowOpenLinkUrl(comid, redirect_url); //TxtHelper.WriteFile("D:\\site\\b2betown\\ETS2.WebApp\\Log.txt", "scopeurl:" + scopeurl); } } } }
protected void Button1_Click(object sender, EventArgs e) { //测试阶段清除cookie,测试完成后删除 Cookiehelp.DeleteCookie("openid"); }