/// <summary> /// 邀请码进入 /// </summary> private void InviteQRHandler() { try { //教师邀请 if (_EventKey.StartsWith(WxConfig.QR_Invite_TecPre)) { var wxUser = WXApi.GetWXUserInfo(_wxMessage.FromUserName); var user = _UserSrv.AddOrUpdateFromWXUser(wxUser); _TecSrv.NewTecFromUser(user); _ResultMsg = _wxMessage.toText(WXReplyContent.NewTec(user.Name)); } else if (_EventKey.StartsWith(WxConfig.QR_Invite_User)) { var ownOpenId = _EventKey.Split("_")[2]; var user = _BusinessSrv.InvitedUserComing(_wxMessage.FromUserName, ownOpenId); _ResultMsg = _wxMessage.toText(WXReplyContent.NewUserAdd(user.Name)); } } catch (Exception ex) { NLogHelper.ErrorTxt($"[InviteQRHandler]-FromUserName:{_wxMessage.FromUserName}| 信息:{ex.Message}"); } }
/// <summary> /// 被邀请用户首次进入公众号,绑定关系 /// wxUser 因为获取方式不同 /// </summary> /// <param name="wxMessage"></param> /// <param name="ownOpenId"></param> /// <returns></returns> public EUserInfo InvitedUserComing(string InvitedOpenId, string ownOpenId, WXUserInfo wxUser = null) { UserSrv userSrv = new UserSrv(_dbContext); SalesSrv salesSrv = new SalesSrv(_dbContext); EUserInfo user = null; try { if (wxUser == null) { wxUser = WXApi.GetWXUserInfo(InvitedOpenId); } } catch (Exception ex) { NLogHelper.ErrorTxt($"businessSrv-[InvitedUserComing] -GetWXUserInfo Error:{ex.Message}"); throw ex; } EUserInfo owner = null; try { //如果是老用户,不能绑定邀请 if (!userSrv.IsExistUser(InvitedOpenId)) { owner = salesSrv.BindUser(ownOpenId, InvitedOpenId); } } catch (Exception ex) { NLogHelper.ErrorTxt($"businessSrv-[InvitedUserComing] -BindUser Error:{ex.Message}"); throw ex; } try { user = userSrv.AddOrUpdateFromWXUser(wxUser, owner, false); } catch (Exception ex) { NLogHelper.ErrorTxt($"businessSrv-[InvitedUserComing] -AddOrUpdateFromWXUser Error:{ex.Message}"); throw ex; } _dbContext.SaveChanges(); return(user); }
public void OnPostInviteTec() { Msg = "创建成功!"; try { WXUserInfo wxUser = GetWXUser(); if (wxUser != null) { var user = _UserSrv.AddOrUpdateFromWXUser(wxUser); _TecSrv.NewTecFromUser(user); } } catch (Exception ex) { Msg = ex.Message; } }
public void LoginWX() { if (!string.IsNullOrEmpty(HttpContext.Request.Query["code"])) { //获取code码,以获取openid和access_token string code = HttpContext.Request.Query["code"]; NLogHelper.InfoTxt($"LoginWX-Query:{HttpContext.Request.QueryString}"); var accessToken = WXApi.GetOAuth2AccessTokenFromCode(code); if (!string.IsNullOrEmpty(accessToken.openid)) { string url_userInfo = string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN", accessToken.access_token, accessToken.openid); WXUserInfo wxUser = HttpHelper.Get <WXUserInfo>(url_userInfo, false); EUserInfo ui = TryInvitedUserComing(accessToken.openid, wxUser); if (ui == null) { ui = _UserSrv.AddOrUpdateFromWXUser(wxUser); } WXLoginCallBack(ui); string toPage = HttpContext.Request.Query["toPage"]; if (!string.IsNullOrEmpty(toPage)) { if (toPage.Contains("/User/MyCourse") && ui.UserRole == UserRole.Teacher) { // HttpContext.Response.Redirect("/Teacher/DayCourse"); return; } //微信QR支付页面 string amt = HttpContext.Request.Query["amt"]; if (!string.IsNullOrEmpty(amt)) { var ct = HttpContext.Request.Query["ct"]; toPage += $"?amt={amt}&ct={ct}"; } HttpContext.Response.Redirect(toPage); } } } else { try { var reUrl = $"https://edu.iqianba.cn/User/Login{Request.QueryString}"; // NLogHelper.InfoTxt($"Login-reUrl:{reUrl}"); var redirect_uri = System.Web.HttpUtility.UrlEncode(reUrl, System.Text.Encoding.UTF8); WxPayData data = new WxPayData(); data.SetValue("appid", WxConfig.APPID); data.SetValue("redirect_uri", redirect_uri); data.SetValue("response_type", "code"); data.SetValue("scope", "snsapi_userinfo"); data.SetValue("state", "1" + "#wechat_redirect"); string url = "https://open.weixin.qq.com/connect/oauth2/authorize?" + data.ToUrl(); HttpContext.Response.Redirect(url); } catch (Exception ex) { NLogHelper.ErrorTxt($"LoginWX:{ex.Message}"); } return; } }