/// <summary> /// 获取用户信息 /// </summary> /// <param name="user"></param> /// <returns></returns> public List <WXUserInfo> GetUserInfo(WXUserInfo user) { if (user.openid == null) { SqlParameter[] sp = new SqlParameter[] { new SqlParameter("@OpenId", " 1=1 ") }; var result = Dapper.Helper.SQLHelper.QueryDataSet(@"select * from [dbo].[UserInfo] where 1=1", sp, CommandType.Text); if (result == "") { return(null); } return(result.JsonDeserialize <List <WXUserInfo> >()); } else { SqlParameter[] sp = new SqlParameter[] { new SqlParameter("@OpenId", user.openid) }; var result = Dapper.Helper.SQLHelper.QueryDataSet(@"select * from [dbo].[UserInfo] b where b.OpenId=@OpenId ", sp, CommandType.Text); if (result == "") { return(null); } return(result.JsonDeserialize <List <WXUserInfo> >()); } }
public IActionResult WXAuth(WXUserInfo info) { var response = ResponseModelFactory.CreateInstance; SystemUser user = new SystemUser(); //string result= EWM.AES_decrypt(info.EncryptedData,info.Session_key,info.Iv); //return Ok(response); using (_dbContext) { var entity = _dbContext.SystemUser.FirstOrDefault(x => x.Wechat == info.Openid); if (entity == null) { user.SystemUserUuid = Guid.NewGuid(); user.LoginName = info.NickName; user.RealName = ""; user.Wechat = info.Openid; //授权登录的家庭用户 user.UserType = 5; user.AddTime = DateTime.Now.ToString("yyyy-MM-dd"); if (info.Sex == 0) { user.Sex = "未知"; } if (info.Sex == 1) { user.Sex = "男"; } if (info.Sex == 2) { user.Sex = "女"; } user.Phone = info.Phone; user.IsDeleted = 0; user.SystemRoleUuid = _dbContext.SystemRole.FirstOrDefault(x => x.RoleName == "家庭用户").SystemRoleUuid.ToString(); _dbContext.SystemUser.Add(user); } else { entity.LoginName = info.NickName; //if (info.Sex == 0) //{ // entity.Sex = "未知"; //} //if (info.Sex == 1) //{ // entity.Sex = "男"; //} //if (info.Sex == 2) //{ // entity.Sex = "女"; //} entity.IsDeleted = 0; } _dbContext.SaveChanges(); response.SetSuccess("授权成功"); return(Ok(response)); } }
public string HaveUserInfo(WXUserInfo v) { string sql = "select count(*) from XXCLOUDVisitor.dbo.Table_WXUserInfo where OpenId = @OpenId"; object obj; SqlParameter[] pms = new SqlParameter[] { new SqlParameter("@OpenId", SqlDbType.NVarChar) { Value = DataHelper.IsNullReturnLine(v.OpenId) } }; try { obj = SQLHelper.ExecuteScalar(sql, System.Data.CommandType.Text, pms); if (Convert.ToInt32(obj) == 1) { return(ConvertHelper.resultJson(1, "数据库中已经存在此数据")); } else { return(ConvertHelper.resultJson(0, "数据库中不存在此数据")); } } catch (Exception e) { //在webapi中要想抛出异常必须这样抛出,否则只抛出一个默认500的异常 var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(e.ToString()), ReasonPhrase = "error" }; throw new HttpResponseException(resp); } }
/// <summary> /// 微信登陆回调 /// </summary> /// <param name="str"></param> public void onWeChatLogin(string str) { WXUserInfo wxUserInfo = JsonUtility.FromJson <WXUserInfo>(str); PlayerPrefs.SetString(PrefsKey.USERMAC, wxUserInfo.unionid); PlayerPrefs.SetString(PrefsKey.USERNAME, wxUserInfo.nickname); PlayerPrefs.SetString(PrefsKey.HEADURL, wxUserInfo.headimgurl); PlayerPrefs.SetInt(PrefsKey.SEX, int.Parse(wxUserInfo.sex)); ApplicationFacade.Instance.SendNotification(NotificationConstant.MEDI_LOGIN_WXLOGINSUCCEED); }
// // GET: /Account/ /// <summary> /// 绑定微信 /// </summary> /// <param name="url"></param> /// <returns></returns> public ActionResult WXBind(string url) { try { JsApi jsapi = new JsApi(this); string codeUrl = jsapi.GetOpenidAndAccessToken_snsapi_userinfo(); if (codeUrl != string.Empty) { return(Redirect(codeUrl)); } WXVariousApi VariousApi = new WXVariousApi(); VariousApi.LoadWxConfigIncidentalAccess_token(); WXUserInfo wx_userinfo = VariousApi.GetUserInfo(jsapi.openid); C_UserWxInfo.UnBindWxByC_UserName(CurrentUser.UserName);//解绑微信 //用户信息,包括微信信息 C_UserWxInfo wxInfo = C_UserWxInfo.GetInfoByOpenid(jsapi.openid); if (wxInfo == null) { wxInfo = new C_UserWxInfo(); wxInfo.C_UserName = CurrentUser.UserName; wxInfo.openid = jsapi.openid; wxInfo.accesstoken = jsapi.access_token; wxInfo.nickname = wx_userinfo.nickname; wxInfo.sex = wx_userinfo.sex; wxInfo.unionid = wx_userinfo.unionid; wxInfo.headimgurl = wx_userinfo.headimgurl; wxInfo.subscribe = (wx_userinfo.subscribe == "0" ? false : true); wxInfo.country = wx_userinfo.country; wxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time); wxInfo.language = wx_userinfo.language; wxInfo.ID = wxInfo.InsertAndReturnIdentity();//新的ID } else { C_UserWxInfo.BindWxByC_UserName(CurrentUser.UserName, wxInfo.ID); } return(Redirect(HttpUtility.UrlDecode(url))); } catch (Exception ex) { DAL.Log.Instance.Write(ex.ToString(), "WXBind_error"); return(View(ErrorPage.ViewName, new ErrorPage { Message = "绑定微信失败" })); } }
// 找回奖品 public ContentResult RetrievePrizes(string SecurityCode) { string ResultStr = ""; try { WXUserInfo userInfo = new WXUserInfo(); string UserOpenId = ""; if (Session["openid"] != null) { UserOpenId = Session["openid"].ToString(); string ACCESS_TOKEN = Session["ACCESS_TOKEN"].ToString(); WXVariousApi VariousApi = new WXVariousApi(); userInfo = GetUserInfo(UserOpenId, ACCESS_TOKEN); } LotteryRecord lotteryRecord = LotteryRecord.GetRecByIntegralCode(SecurityCode); if (lotteryRecord != null && !lotteryRecord.IsNot) { if (lotteryRecord.UserOpenId == "12345" || lotteryRecord.UserOpenId == "") { lotteryRecord.UserOpenId = Session["openid"].ToString(); lotteryRecord.UserWxName = userInfo.nickname; lotteryRecord.UserWxImg = userInfo.headimgurl; int iRet = lotteryRecord.UpdateByID(); if (iRet > 0) { ResultStr = "ok"; } else { ResultStr = "找回奖品失败,请联系管理员!"; } } else { ResultStr = "此防伪码不参与奖品找回!"; } } else { ResultStr = "此防伪码没有中奖!"; } } catch (Exception ex) { ResultStr = "找回奖品异常!error:" + ex.Message; } return(Content(ResultStr)); }
public int SetUserBean(WXUserInfo bag) { SqlParameter[] sp = new SqlParameter[] { new SqlParameter("@OpenId", bag.openid), new SqlParameter("@BeanNum", bag.beannum), }; var result = Dapper.Helper.SQLHelper.Execute(@" UPDATE [dbo].[UserInfo] SET [BeanNum] = [BeanNum]+@BeanNum WHERE OpenId=@OpenId", sp, CommandType.Text); return(result); }
public int ChangeUserStatus(WXUserInfo bag) { SqlParameter[] sp = new SqlParameter[] { new SqlParameter("@OpenId", bag.openid), new SqlParameter("@Invite", bag.Invite) }; var result = Dapper.Helper.SQLHelper.Execute(@" UPDATE[dbo].[UserInfo] SET[Invite] =@Invite WHERE [OpenId] =@OpenId", sp, CommandType.Text); return(result); }
/// <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 int SetUserImage(WXUserInfo bag) { SqlParameter[] sp = new SqlParameter[] { new SqlParameter("@OpenId", bag.openid), new SqlParameter("@HasImg", bag.hasImg), }; var result = Dapper.Helper.SQLHelper.Execute(@" UPDATE [dbo].[UserInfo] SET [HasImg] = @HasImg WHERE OpenId=@OpenId", sp, CommandType.Text); return(result); }
private EUserInfo TryInvitedUserComing(string OpenId, WXUserInfo wXUser) { var act = HttpContext.Request.Query["act"]; EUserInfo ui = null; if (act == "Invite") { string ownOpenId = HttpContext.Request.Query["OwnOpenId"]; if (!string.IsNullOrEmpty(ownOpenId)) { ui = _BusinessSrv.InvitedUserComing(OpenId, ownOpenId, wXUser); } } return(ui); }
private WXUserInfo GetWXUser() { string path = EduEnviroment._Enviroment.WebRootPath + @"\Files\Test\wxUser.json"; FileInfo fi = new FileInfo(path); FileStream fs = fi.Open(FileMode.Open); WXUserInfo wxUser = null; using (StreamReader sr = new StreamReader(fs)) { string json = sr.ReadToEnd(); wxUser = JsonConvert.DeserializeObject <WXUserInfo>(json); fs.Close(); fs.Dispose(); } return(wxUser); }
public IActionResult WXPhone(WXUserInfo info) { var response = ResponseModelFactory.CreateInstance; string result = EWM.AES_decrypt(info.EncryptedData, info.Session_key, info.Iv); UserPhoneInfoModel model = JsonConvert.DeserializeObject <UserPhoneInfoModel>(result); if (model == null) { response.SetFailed(); } else { response.SetData(model.purePhoneNumber); } return(Ok(response)); }
public static WXUserInfo GetWXUserInfo(string OpenId, AccessToken accessToken = null) { if (accessToken == null) { accessToken = getAccessToken(); } NLogHelper.InfoTxt($"[WXApi]GetWXUserInfo -- accesstoken:{accessToken}.openid:{OpenId}"); string url_userInfo = string.Format("https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}", accessToken.access_token, OpenId); WXUserInfo wxUser = HttpHelper.Get <WXUserInfo>(url_userInfo); return(wxUser); }
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; } }
/// <summary> /// 获取用户信息 /// </summary> /// <param name="user"></param> /// <returns></returns> public List <WXUserInfo> GetUserInfoByPage(WXUserInfo user, int pageindex, int pagesize, out int pageCount) { Dictionary <string, string> dic = new Dictionary <string, string>(); List <SqlParameter> spList = new List <SqlParameter>(); string strWhere = string.Empty; string countsql = "select * from UserInfo where 1=1"; string sql = @"SELECT TOP " + pagesize + @" * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY openid) AS RowNumber,* FROM [UserInfo] ) as A WHERE RowNumber > " + pagesize + @"*(" + pageindex + @"-1) "; if (user.nickname != null) { spList.Add(new SqlParameter("@NickName", user.nickname)); strWhere += " and NickName like '%" + user.nickname + "%' "; } spList.Add(new SqlParameter("@Invite", user.Invite)); if (user.Invite != -1) { strWhere += " and Invite = " + user.Invite + " "; } SqlParameter[] sp = spList.ToArray(); SqlParameter[] spcount = spList.ToArray(); var result = Dapper.Helper.SQLHelper.QueryDataSet(sql + strWhere, sp, CommandType.Text); var countresult = Dapper.Helper.SQLHelper.QueryDataSet(countsql + strWhere, spcount, CommandType.Text); if (countresult == "") { pageCount = 0; } else { pageCount = countresult.JsonDeserialize <List <WXUserInfo> >().Count; } if (result == "") { return(null); } return(result.JsonDeserialize <List <WXUserInfo> >()); }
/// <summary> /// https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN /// </summary> /// <param name="openid"></param> /// <returns></returns> public static WXUserInfo GetWXUserInfo(string openid, string accessToken) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("准备获取GetWXUserInfo"); HttpClient http = new HttpClient(); var result = http.GetAsync("https://api.weixin.qq.com/sns/userinfo?access_token=" + accessToken + "&openid=" + openid + "&lang=zh_CN").Result; if (result.StatusCode == System.Net.HttpStatusCode.OK) { WXUserInfo model = JsonConvert.DeserializeObject <WXUserInfo>(result.Content.ReadAsStringAsync().Result); if (model.errcode == 0) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("获取成功"); return(model); } Error(model); } return(null); }
public int InsertUserInfo(WXUserInfo user) { SqlParameter[] sp = new SqlParameter[] { new SqlParameter("@UserId", Guid.NewGuid()), new SqlParameter("@OpenId", user.openid), new SqlParameter("@NickName", user.nickname), new SqlParameter("@HeadImgUrl", user.headimgurl), new SqlParameter("@Country", user.country), new SqlParameter("@Province", user.province), new SqlParameter("@City", user.city), new SqlParameter("@Sex", user.sex), new SqlParameter("@HasImg", user.hasImg), new SqlParameter("@Invite", user.Invite), }; var result = Dapper.Helper.SQLHelper.Execute(@"INSERT INTO [dbo].[UserInfo] ([UserId] ,[OpenId] ,[NickName] ,[HeadImgUrl] ,[Country] ,[Province] ,[City] ,[Sex] ,[HasImg] ,Invite) VALUES (@UserId ,@OpenId ,@NickName ,@HeadImgUrl ,@Country ,@Province ,@City ,@Sex ,@HasImg ,@Invite)", sp, CommandType.Text); return(result); }
/// <summary> /// 通过OpenID获取微信用户信息 /// </summary> /// <returns></returns> private WXUserInfo GetUserInfo(string openid, string ACCESS_TOKEN) { try { WxData data = new WxData(); data.SetValue("access_token", ACCESS_TOKEN); data.SetValue("openid", openid); data.SetValue("lang", "zh_CN"); string url = "https://api.weixin.qq.com/cgi-bin/user/info?" + data.ToUrl(); //请求url以获取数据 string result = WebRequestHelper.Get(url); //保存用户信息 WXUserInfo wxuserinfo = JsonConvert.DeserializeObject <WXUserInfo>(result); DAL.Log.Instance.Write("请求:" + data.ToUrl() + ",返回:" + result, "获取微信用户信息"); return(wxuserinfo); } catch (Exception ex) { DAL.Log.Instance.Write(ex.ToString(), "获取微信用户信息错误"); throw new Exception(ex.ToString()); } }
public ActionResult UpdateWx(string UserName) { C_UserWxInfo info = C_UserWxInfo.GetInfoByC_UserName(UserName); WXVariousApi VariousApi = new WXVariousApi(); VariousApi.LoadWxConfigIncidentalAccess_token(); WXUserInfo wx_userinfo = VariousApi.GetUserInfo(info.openid); info.nickname = wx_userinfo.nickname; info.headimgurl = wx_userinfo.headimgurl; info.groupid = wx_userinfo.groupid; info.C_UserName = UserName; info.subscribe = (wx_userinfo.subscribe == "0" ? false : true); info.country = wx_userinfo.country; info.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time); info.language = wx_userinfo.language; bool rtn = true; if (!string.IsNullOrWhiteSpace(info.nickname)) { rtn = info.UpdateUserWxInfo(); } return(Content(rtn ? "ok" : "更新失败")); }
/// <summary> /// 抽奖 /// </summary> /// <param name="fwm"></param> /// <param name="mobile"></param> /// <returns></returns> public ActionResult toPrizeDraw(int ActivityID, string fwm, string Phone, string Name) { //if (string.IsNullOrWhiteSpace(Phone)) //{ // return Content("fail|手机号不能为空"); //} //if (Phone.Length != 11) //{ // return Content("fail|手机号有误"); //} //if (string.IsNullOrWhiteSpace(Name)) //{ // return Content("fail|姓名不能为空"); //} WXUserInfo userInfo = new WXUserInfo(); //string UserOpenId = ""; //if (Session["openid"] != null) //{ //UserOpenId = Session["openid"].ToString(); //string ACCESS_TOKEN = Session["ACCESS_TOKEN"].ToString(); //userInfo=GetUserInfo(UserOpenId, ACCESS_TOKEN); //} WXVariousApi VariousApi = new WXVariousApi(); string UserOpenId = ReGetOpenId(VariousApi.WxConfig.APPID, VariousApi.WxConfig.ACCESS_TOKEN); userInfo = VariousApi.GetUserInfo(UserOpenId); PrizeAttr drawrtn = LotteryPrizes.toPrizeDraw(fwm, ActivityID, Phone, Name, UserOpenId, userInfo); return(Json(drawrtn, JsonRequestBehavior.AllowGet)); }
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; } }
public IActionResult WXAuth(WXUserInfo info) { var response = ResponseModelFactory.CreateInstance; SystemUser user = new SystemUser(); using (_dbContext) { var entity = _dbContext.SystemUser.FirstOrDefault(x => x.Wechat == info.Openid); string nowdate = DateTime.Now.ToString("yyyy-MM-dd"); if (entity == null) { user.SystemUserUuid = Guid.NewGuid(); user.LoginName = info.NickName; user.Nickname = info.NickName; user.RealName = ""; user.Wechat = info.Openid; //授权登录的普通用户 user.UserType = 5; user.AddTime = DateTime.Now.ToString("yyyy-MM-dd"); if (info.Sex == 0) { user.Sex = "未知"; } if (info.Sex == 1) { user.Sex = "男"; } if (info.Sex == 2) { user.Sex = "女"; } //user.Phone = info.Phone; user.IsDeleted = 0; user.SystemRoleUuid = _dbContext.SystemRole.FirstOrDefault(x => x.RoleName == "微信用户").SystemRoleUuid.ToString(); _dbContext.SystemUser.Add(user); //判断当天用户增加次数 //var ac = _dbContext.ActiveQuantity.FirstOrDefault(x => x.Type == 1 && x.AddTime== nowdate); //if (ac == null) //{ // ac = new ActiveQuantity(); // ac.ActiveQuantityUuid = Guid.NewGuid(); // ac.AddTime = DateTime.Now.ToString("yyyy-MM-dd"); // ac.Num = 1; // ac.Type = 1; // _dbContext.ActiveQuantity.Add(ac); //} //else //{ // ac.Num = ac.Num + 1; //} } else { entity.LoginName = info.NickName; entity.IsDeleted = 0; //判断当天用户登录次数 //var ac = _dbContext.ActiveQuantity.FirstOrDefault(x => x.Type == 2 && x.AddTime == nowdate); //if(ac==null) //{ // ac = new ActiveQuantity(); // ac.ActiveQuantityUuid = Guid.NewGuid(); // ac.AddTime = DateTime.Now.ToString("yyyy-MM-dd"); // ac.Num = 1; // ac.Type = 2; // _dbContext.ActiveQuantity.Add(ac); //} //else //{ // ac.Num = ac.Num + 1; //} } _dbContext.SaveChanges(); response.SetSuccess("授权成功"); return(Ok(response)); } }
public IHttpActionResult Login(string code, string rawData, string signature, string encryptedData, string iv) { VMUserInfo vmUserInfo = new VMUserInfo(); WXOpenId wxOpenId = JsonConvert.DeserializeObject <WXOpenId>(HttpHelper.HttpGet("https://api.weixin.qq.com/sns/jscode2session?appid=" + HttpHelper.AppId + "&secret=" + HttpHelper.AppSecret + "&js_code=" + code + "&grant_type=authorization_code")); //通过签名验证数据是否有效 SHA1 sha1 = new SHA1CryptoServiceProvider(); byte[] source = Encoding.UTF8.GetBytes(rawData + wxOpenId.session_key); byte[] target = sha1.ComputeHash(source); if (BitConverter.ToString(target).Replace("-", "").ToLower() == signature) { //解密数据 AesCryptoServiceProvider aes = new AesCryptoServiceProvider(); aes.Mode = CipherMode.CBC; aes.BlockSize = 128; aes.Padding = PaddingMode.PKCS7; byte[] byte_encryptedData = Convert.FromBase64String(encryptedData); byte[] byte_iv = Convert.FromBase64String(iv); byte[] byte_sessionKey = Convert.FromBase64String(wxOpenId.session_key); aes.IV = byte_iv; aes.Key = byte_sessionKey; ICryptoTransform transform = aes.CreateDecryptor(); byte[] final = transform.TransformFinalBlock(byte_encryptedData, 0, byte_encryptedData.Length); WXUserInfo wxUserInfo = JsonConvert.DeserializeObject <WXUserInfo>(Encoding.UTF8.GetString(final)); UserInfo userInfo = dbContext.UserInfos.FirstOrDefault(t => t.OpenId == wxOpenId.openid); if (userInfo == null) { userInfo = new UserInfo(); userInfo.Token = Convert.ToBase64String(Guid.NewGuid().ToByteArray()); userInfo.OpenId = wxOpenId.openid; userInfo.SessionKey = wxOpenId.session_key; userInfo.Unionid = wxOpenId.unionid; userInfo.NickName = wxUserInfo.nickName; userInfo.Gender = (gender)wxUserInfo.gender; userInfo.City = wxUserInfo.city; userInfo.Province = wxUserInfo.province; userInfo.Country = wxUserInfo.country; userInfo.AvatarUrl = wxUserInfo.avatarUrl; userInfo.AppId = wxUserInfo.watermark.appid; userInfo.TimeStamp = wxUserInfo.watermark.timestamp; userInfo.Balance = 299m; dbContext.UserInfos.Add(userInfo); } else { userInfo.SessionKey = wxOpenId.session_key; userInfo.Unionid = wxOpenId.unionid; userInfo.NickName = wxUserInfo.nickName; userInfo.Gender = (gender)wxUserInfo.gender; userInfo.City = wxUserInfo.city; userInfo.Province = wxUserInfo.province; userInfo.Country = wxUserInfo.country; userInfo.AvatarUrl = wxUserInfo.avatarUrl; userInfo.AppId = wxUserInfo.watermark.appid; userInfo.TimeStamp = wxUserInfo.watermark.timestamp; } dbContext.SaveChanges(); vmUserInfo = VMUserInfo.GetVMUserInfo(userInfo); } return(Json(vmUserInfo)); }
public string AddWXUserInfo(WXUserInfo v) { string sql = "select count(*) from XXCLOUDVisitor.dbo.Table_WXUserInfo where OpenId = @OpenId"; object obj; SqlParameter[] pms = new SqlParameter[] { new SqlParameter("@OpenId", SqlDbType.NVarChar) { Value = DataHelper.IsNullReturnLine(v.OpenId) } }; try { obj = SQLHelper.ExecuteScalar(sql, System.Data.CommandType.Text, pms); if (Convert.ToInt32(obj) == 1) { return(ConvertHelper.resultJson(1, "数据库中已经存在此数据")); } else if (Convert.ToInt32(obj) == 0) { //return ConvertHelper.resultJson(0, "数据库中不存在此数据"); string sql2 = "insert into XXCLOUDVisitor.dbo.Table_WXUserInfo(NickName, Gender, City, Province, AvatarUrl, OpenId)" + "values(@NickName, @Gender, @City, @Province, @AvatarUrl, @OpenId)"; DateTime dt = DateTime.Now; SqlParameter[] pms2 = new SqlParameter[] { new SqlParameter("@NickName", SqlDbType.NVarChar) { Value = DataHelper.IsNullReturnLine(v.NickName) }, new SqlParameter("@Gender", SqlDbType.NVarChar) { Value = DataHelper.IsNullReturnLine(v.Gender) }, new SqlParameter("@City", SqlDbType.NVarChar) { Value = DataHelper.IsNullReturnLine(v.City) }, new SqlParameter("@Province", SqlDbType.NVarChar) { Value = DataHelper.IsNullReturnLine(v.Province) }, new SqlParameter("@AvatarUrl", SqlDbType.NVarChar) { Value = DataHelper.IsNullReturnLine(v.AvatarUrl) }, new SqlParameter("@OpenId", SqlDbType.NVarChar) { Value = DataHelper.IsNullReturnLine(v.OpenId) }, new SqlParameter("@CreateTime", SqlDbType.NVarChar) { Value = dt.ToString("yyyy-MM-dd hh:mm:ss") } }; try { int result = SQLHelper.ExecuteNonQuery(sql2, System.Data.CommandType.Text, pms2); return(ConvertHelper.IntToJson(result)); } catch (Exception e) { //在webapi中要想抛出异常必须这样抛出,否则只抛出一个默认500的异常 var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(e.ToString()), ReasonPhrase = "error" }; throw new HttpResponseException(resp); } } return(ConvertHelper.resultJson(0, "系统出错了")); } catch (Exception e) { //在webapi中要想抛出异常必须这样抛出,否则只抛出一个默认500的异常 var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(e.ToString()), ReasonPhrase = "error" }; throw new HttpResponseException(resp); } }
public ActionResult WXLogin(string url) { try { JsApi jsapi = new JsApi(this); string codeUrl = jsapi.GetOpenidAndAccessToken_snsapi_userinfo(); if (codeUrl != string.Empty) { return(Redirect(codeUrl)); } //用户信息,包括微信信息 C_UserWxVM userVM = new C_UserWxVM(); Log.Instance.Write(jsapi.openid, "OpenID"); userVM.LoadUserVMByOpenid(jsapi.openid); WXVariousApi VariousApi = new WXVariousApi(); VariousApi.LoadWxConfigIncidentalAccess_token(); WXUserInfo wx_userinfo = VariousApi.GetUserInfo(jsapi.openid); //未关注获取头像 if (wx_userinfo.subscribe == "0") { WXUserInfo new_Wx_UserInfo = VariousApi.GetUserInfo0(jsapi.openid, jsapi.access_token); if (new_Wx_UserInfo != null) { wx_userinfo.nickname = new_Wx_UserInfo.nickname; wx_userinfo.sex = new_Wx_UserInfo.sex; wx_userinfo.province = new_Wx_UserInfo.province; wx_userinfo.city = new_Wx_UserInfo.city; wx_userinfo.country = new_Wx_UserInfo.country; wx_userinfo.headimgurl = new_Wx_UserInfo.headimgurl; wx_userinfo.unionid = new_Wx_UserInfo.unionid; } } if (userVM == null || userVM.user == null) { if (wx_userinfo.unionid.Length > 0) { userVM.LoadUserVMByunionid(wx_userinfo.unionid); } } if (userVM == null || userVM.user == null) { userVM.user = new C_WxUser(); userVM.userWxInfo = new C_UserWxInfo(); //用户信息赋值 userVM.user.UserName = "******" + (C_User.GetTopUseID() + 1 + 1000); userVM.user.PassWord = ""; userVM.user.IsValid = true; userVM.user.DatRegister = DateTime.Now; userVM.user.NickName = wx_userinfo.nickname; userVM.user.PortraitUrl = wx_userinfo.headimgurl; userVM.userWxInfo.openid = jsapi.openid; userVM.userWxInfo.accesstoken = jsapi.access_token; userVM.userWxInfo.nickname = wx_userinfo.nickname; userVM.userWxInfo.sex = wx_userinfo.sex; userVM.userWxInfo.unionid = wx_userinfo.unionid; userVM.userWxInfo.headimgurl = wx_userinfo.headimgurl; userVM.userWxInfo.subscribe = (wx_userinfo.subscribe == "0" ? false : true); userVM.userWxInfo.country = wx_userinfo.country; userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time); userVM.userWxInfo.language = wx_userinfo.language; userVM.AddUser(); userVM.userWxInfo.C_UserName = userVM.user.UserName; } else { userVM.user.NickName = wx_userinfo.nickname; userVM.user.PortraitUrl = wx_userinfo.headimgurl; userVM.userWxInfo.openid = jsapi.openid; userVM.userWxInfo.accesstoken = jsapi.access_token; userVM.userWxInfo.nickname = wx_userinfo.nickname; userVM.userWxInfo.sex = wx_userinfo.sex; userVM.userWxInfo.unionid = wx_userinfo.unionid; userVM.userWxInfo.headimgurl = wx_userinfo.headimgurl; userVM.userWxInfo.subscribe = (wx_userinfo.subscribe == "0" ? false : true); userVM.userWxInfo.country = wx_userinfo.country; userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time); userVM.userWxInfo.language = wx_userinfo.language; userVM.user.UpdateByID(); } string error = string.Empty; string userName = userVM.user.UserName; userVM.userWxInfo.accesstoken = jsapi.access_token; userVM.userWxInfo.nickname = wx_userinfo.nickname; userVM.userWxInfo.groupid = wx_userinfo.groupid; userVM.userWxInfo.headimgurl = wx_userinfo.headimgurl; userVM.userWxInfo.subscribe = (wx_userinfo.subscribe == "0" ? false : true); userVM.userWxInfo.country = wx_userinfo.country; userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time); userVM.userWxInfo.language = wx_userinfo.language; if (!string.IsNullOrWhiteSpace(userVM.userWxInfo.nickname)) { new System.Threading.Thread(delegate() { userVM.UpdateUserWxInfo(); }).Start(); } Common.SetCookie("WxUserName", userName); DAL.Log.Instance.Write(userName + HttpUtility.UrlDecode(url) + wx_userinfo.nickname, "WXLogin_error11"); return(Redirect(HttpUtility.UrlDecode(url))); } catch (Exception ex) { DAL.Log.Instance.Write(ex.ToString(), "WXLogin_error"); return(View(ErrorPage.ViewName, new ErrorPage { Message = ex.ToString() })); } }
// // GET: /xfz_home/ public ActionResult wxlogin(string url) { try { string openid = ""; string access_token = ""; if (!string.IsNullOrWhiteSpace(WeConfig.WxDebug)) { openid = WeConfig.WxDebug; access_token = ""; } else { JsApi jsapi = new JsApi(this); string codeUrl = jsapi.GetOpenidAndAccessToken_snsapi_userinfo(); if (codeUrl != string.Empty) { return(Redirect(codeUrl)); } openid = jsapi.openid; access_token = jsapi.access_token; } //用户信息,包括微信信息 C_ConsumerWxVM userVM = new C_ConsumerWxVM(); userVM.LoadUserVMByOpenid(openid); WXVariousApi VariousApi = new WXVariousApi(); VariousApi.LoadWxConfigIncidentalAccess_token(); WXUserInfo wx_userinfo = VariousApi.GetUserInfo(openid); if (wx_userinfo == null) { wx_userinfo = new WXUserInfo(); } //未关注获取头像 if (wx_userinfo.subscribe == "0") { WXUserInfo new_Wx_UserInfo = VariousApi.GetUserInfo0(openid, access_token); if (new_Wx_UserInfo != null) { wx_userinfo.nickname = new_Wx_UserInfo.nickname; wx_userinfo.sex = new_Wx_UserInfo.sex; wx_userinfo.province = new_Wx_UserInfo.province; wx_userinfo.city = new_Wx_UserInfo.city; wx_userinfo.country = new_Wx_UserInfo.country; wx_userinfo.headimgurl = new_Wx_UserInfo.headimgurl; wx_userinfo.unionid = new_Wx_UserInfo.unionid; } } if (userVM == null || userVM.user == null) { string guidCode = DAL.MD5Helper.GetMD5UTF8(Request.UserHostAddress + "," + Guid.NewGuid().ToString()); userVM.user = new C_Consumer(); userVM.userWxInfo = new C_UserWxInfo(); //用户信息赋值 userVM.user.UserName = "******" + (C_Consumer.GetTopUseID() + 1 + 1000 + guidCode.SubStringSafe(0, 4)); userVM.user.Pwd = ""; userVM.user.DatReg = DateTime.Now; userVM.user.Mobile = ""; userVM.user.Type = "消费者"; userVM.userWxInfo.openid = openid; userVM.userWxInfo.accesstoken = access_token; userVM.userWxInfo.nickname = wx_userinfo.nickname; userVM.userWxInfo.sex = wx_userinfo.sex; userVM.userWxInfo.unionid = wx_userinfo.unionid; userVM.userWxInfo.headimgurl = wx_userinfo.headimgurl; userVM.userWxInfo.subscribe = (wx_userinfo.subscribe == "0" ? false : true); userVM.userWxInfo.country = wx_userinfo.country; userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time); userVM.userWxInfo.language = wx_userinfo.language; userVM.AddUser(); userVM.userWxInfo.C_UserName = userVM.user.UserName; } userVM.userWxInfo.C_ConsumerUserName = userVM.user.UserName; string error = string.Empty; string userName = userVM.user.UserName; userVM.userWxInfo.accesstoken = access_token; userVM.userWxInfo.nickname = wx_userinfo.nickname; userVM.userWxInfo.groupid = wx_userinfo.groupid; userVM.userWxInfo.headimgurl = wx_userinfo.headimgurl; userVM.userWxInfo.subscribe = (wx_userinfo.subscribe == "0" ? false : true); userVM.userWxInfo.country = wx_userinfo.country; userVM.userWxInfo.subscribe_time = Common.ConvertToDateTen(wx_userinfo.subscribe_time); userVM.userWxInfo.language = wx_userinfo.language; if (!string.IsNullOrWhiteSpace(userVM.userWxInfo.nickname)) { new System.Threading.Thread(delegate() { userVM.UpdateUserWxInfo(); }).Start(); } Session["xfz_UserName"] = userName; return(Redirect(HttpUtility.UrlDecode(url))); } catch (Exception ex) { DAL.Log.Instance.Write(ex.ToString(), "WXLogin_error"); return(View(ErrorPage.ViewName, new ErrorPage { Message = ex.ToString() })); } }