protected void btnRegister_Click(object sender, EventArgs e) { WeiXinUserInfoModel wxuserinfo = Session["wxuserinfo"] as WeiXinUserInfoModel; if (wxuserinfo == null) { Response.Write("<script>alert('只能从微信客户端打开')</script>"); return; } string userName = this.txtUserName.Text.Trim(); string nickName = this.txtNickName.Text.Trim(); string email = this.txtEmail.Text.Trim(); string qq = this.txtQQ.Text.Trim(); string password = this.txtPassword.Text; string confirmpwd = this.txtConfirmPassword.Text; string alipayAccount = this.txtAlipayAccount.Text.Trim(); string alipayRealName = this.txtAlipayRealName.Text.Trim(); string IDCardNo = this.txtIDCardNo.Text.Trim(); foreach (var item in GlobalData.InvalidName) { if (userName.Contains(item)) { Response.Write("<script>alert('用户名无效,无法注册!')</script>"); return; } if (nickName.Contains(item)) { Response.Write("<script>alert('昵称无效,无法注册!')</script>"); return; } } if (!WcfClient.IsReady) { Response.Write("<script>alert('服务器繁忙,请稍候!')</script>"); return; } if (!CheckAuthCode()) { return; } if (!CheckUserName(userName)) { return; } if (!CheckNickName(nickName)) { return; } if (!CheckPassword(password, confirmpwd)) { return; } if (!CheckAlipayAccount(alipayAccount)) { return; } if (!CheckAlipayRealName(alipayRealName, alipayAccount)) { return; } if (!CheckIDCardNo(IDCardNo)) { return; } if (!CheckEmail(email)) { return; } if (!CheckQQ(qq)) { return; } string ip = System.Web.HttpContext.Current.Request.UserHostAddress; RegisterUser(wxuserinfo.openid, wxuserinfo.nickname, ip, userName, nickName, password, alipayAccount, alipayRealName, IDCardNo, email, qq); }
protected void btnBind_Click(object sender, EventArgs e) { try { string userName = this.txtUserName.Text.Trim(); string password = this.txtPassword.Text; if (userName == "") { Response.Write("<script>alert('请输入用户名')</script>"); return; } if (password == "") { Response.Write("<script>alert('请输入密码')</script>"); return; } #if Test WeiXinUserInfoModel userObj = null; if (userName == "小开心") { userObj = new WeiXinUserInfoModel() { openid = Config.TestUserOpenId, nickname = "小查", }; } else if (userName == "nero") { userObj = new WeiXinUserInfoModel() { openid = Config.TestLVSU_UserOpenID, nickname = "wgflicker", }; } Session[Config.SESSIONKEY_WXUSERINFO] = userObj; string ip = System.Web.HttpContext.Current.Request.UserHostAddress; OperResultObject resultObj = WcfClient.Instance.WeiXinLogin(userObj.openid, userObj.nickname, ip); if (resultObj.OperResultCode == OperResult.RESULTCODE_TRUE) { var player = WcfClient.Instance.GetPlayerByWeiXinOpenID(userObj.openid); WebUserInfo userinfo = new WebUserInfo(); userinfo.xlUserID = player.SimpleInfo.UserID; userinfo.xlUserName = player.SimpleInfo.UserName; userinfo.wxOpenID = userObj.openid; // 登录状态100分钟内有效 MyFormsPrincipal <WebUserInfo> .SignIn(userinfo.xlUserName, userinfo, 100); Session[userinfo.xlUserName] = player; Response.Redirect("View/Index.aspx", false); //Server.Execute("View/Index.aspx"); } else if (resultObj.OperResultCode == OperResult.RESULTCODE_EXCEPTION) { Response.Write("<script>alert('服务器连接失败,请稍候再试')</script>"); } else { string message = string.IsNullOrEmpty(resultObj.Message) ? OperResult.GetMsg(resultObj.OperResultCode) : resultObj.Message; Response.Write("<script>alert('测试登录失败, 原因为:" + message + "')</script>"); } #else WeiXinUserInfoModel wxuserinfo = Session["wxuserinfo"] as WeiXinUserInfoModel; if (wxuserinfo == null) { Response.Write("<script>alert('只能从微信客户端打开')</script>"); return; } if (string.IsNullOrEmpty(wxuserinfo.openid)) { Response.Write("<script>alert('微信登录失败,无法绑定')</script>"); return; } string ip = System.Web.HttpContext.Current.Request.UserHostAddress; OperResultObject resultObj = WcfClient.Instance.BindWeiXinUser(wxuserinfo.openid, wxuserinfo.nickname, userName, password, ip); if (resultObj.OperResultCode == OperResult.RESULTCODE_TRUE) { var player = WcfClient.Instance.GetPlayerByWeiXinOpenID(wxuserinfo.openid); if (player != null) { WebUserInfo userinfo = new WebUserInfo(); userinfo.xlUserID = player.SimpleInfo.UserID; userinfo.xlUserName = player.SimpleInfo.UserName; userinfo.wxOpenID = wxuserinfo.openid; // 登录状态100分钟内有效 MyFormsPrincipal <WebUserInfo> .SignIn(userinfo.xlUserName, userinfo, 100); Session[userinfo.xlUserName] = player; Response.Redirect("View/Index.aspx", false); } else { Response.Write("<script>alert('绑定失败, 原因为:没有找到迅灵账户')</script>"); } } else { string message = string.IsNullOrEmpty(resultObj.Message) ? OperResult.GetMsg(resultObj.OperResultCode) : resultObj.Message; Response.Write("<script>alert('绑定失败, 原因为:" + message + "')</script>"); } #endif } catch (Exception exc) { LogHelper.Instance.AddErrorLog("Bind User Exception", exc); } }
protected void Page_Load(object sender, EventArgs e) { try { if (!this.IsPostBack) { //code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。 string code = Request["code"]; string state = Request["state"]; this.lblMsg.Text = "欢迎进入迅灵矿场"; LogHelper.Instance.AddInfoLog("code:" + code + "; state: " + state); if (state == Config.state) { HttpGetReturnModel resultValue = WeiXinHandler.SynGetUserAccessToken(code); if (resultValue.Exception != null) { this.lblMsg.Text = "登录异常,请联系迅灵矿场管理员"; return; } if (resultValue.ResponseError != null) { Session[Config.SESSIONKEY_RESPONSEERROR] = resultValue.ResponseError; Server.Transfer("ErrorPage.aspx"); return; } AuthorizeResponseModel authObj = resultValue.ResponseResult as AuthorizeResponseModel; if (authObj != null) { this.lblMsg.Text = "authObj OK"; Session[Config.SESSIONKEY_AUTHORIZEOBJ] = authObj; resultValue = WeiXinHandler.SyncGetUserInfo(authObj.access_token, authObj.openid); } if (resultValue.Exception != null) { this.lblMsg.Text = "登录异常,请联系迅灵矿场管理员"; return; } if (resultValue.ResponseError != null) { Session[Config.SESSIONKEY_RESPONSEERROR] = resultValue.ResponseError; Server.Transfer("ErrorPage.aspx"); return; } WeiXinUserInfoModel userObj = resultValue.ResponseResult as WeiXinUserInfoModel; Session[Config.SESSIONKEY_WXUSERINFO] = userObj; string ip = System.Web.HttpContext.Current.Request.UserHostAddress; this.lblMsg.Text = "欢迎 " + userObj.nickname + " 进入迅灵矿场"; OperResultObject resultobj = WcfClient.Instance.WeiXinLogin(userObj.openid, userObj.nickname, ip); this.lblMsg.Text = "登录迅灵矿场,结果为:" + OperResult.GetMsg(resultobj.OperResultCode); if (resultobj.OperResultCode == OperResult.RESULTCODE_TRUE) { this.lblMsg.Text = "WeiXinLogin OK"; var player = WcfClient.Instance.GetPlayerByWeiXinOpenID(userObj.openid); this.lblMsg.Text = "player OK"; WebUserInfo userinfo = new WebUserInfo(); userinfo.xlUserID = player.SimpleInfo.UserID; userinfo.xlUserName = player.SimpleInfo.UserName; userinfo.wxOpenID = userObj.openid; // 登录状态100分钟内有效 MyFormsPrincipal <WebUserInfo> .SignIn(userinfo.xlUserName, userinfo, 100); //Session[userinfo.xlUserName] = player; Response.Redirect("View/Index.aspx", false); } else if (resultobj.OperResultCode == OperResult.RESULTCODE_USER_NOT_EXIST || resultobj.OperResultCode == OperResult.RESULTCODE_USERNAME_PASSWORD_ERROR) { Response.Redirect("LoginPage.aspx", false); } else { string message = string.IsNullOrEmpty(resultobj.Message) ? OperResult.GetMsg(resultobj.OperResultCode) : resultobj.Message; Response.Write("<script>alert('登录迅灵矿场失败, 原因为:" + message + "')</script>"); } } else { } } } catch (Exception exc) { this.lblMsg.Text = "WeiXinResponse Exception. " + exc.Message; LogHelper.Instance.AddErrorLog("WeiXinResponse Exception", exc); } }