protected void Page_Load(object sender, EventArgs e) { //string appid = "wx64dcf57278caa037"; //string redirect_uri = "http://www.zljdsc.com/test/WxLogin.aspx"; //string secret = "71c21ab790c34c05e1290a26ff025c70"; M_Third_Info wxInfo = thirdBll.SelModelByName("wechat"); string state = ""; if (string.IsNullOrEmpty(Request.QueryString["code"]))//微信登录操作 { state = function.GetRandomString(8).ToLower(); Session.Add("wx_state", state); string url = "https://open.weixin.qq.com/connect/qrconnect?appid=" + wxInfo.ID + "&redirect_uri=" + HttpUtility.UrlEncode(wxInfo.CallBackUrl) + "&response_type=code&scope=snsapi_login&state=" + state + "#wechat_redirect"; Response.Redirect(url); } else//登录返回操作 { //检测state参数是否匹配 if (Session["wx_state"] == null || !Session["wx_state"].Equals(Request.QueryString["state"])) { function.WriteErrMsg("参数错误!"); } Session["wx_state"] = null; string url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + wxInfo.ID + "&secret=" + wxInfo.Secret + "&code=" + Request.QueryString["code"] + "&grant_type=authorization_code"; JObject wxinfo = GetWxInfo(url); Appinfo infomod = AppBll.SelModelByOpenID(wxinfo["openid"].ToString(), "wechat"); if (infomod == null)//新用户注册 { infomod = GetNewUser(wxinfo); } M_UserInfo mu = buser.SelReturnModel(infomod.UserID); buser.SetLoginState(mu); Response.Redirect("/User"); } }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { WxAPI wxapi = WxAPI.Code_Get(); string code = Request.QueryString["code"] ?? ""; if (string.IsNullOrEmpty(code)) { return; } string result = APIHelper.GetWebResult("https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + wxapi.AppId.APPID + "&secret=" + wxapi.AppId.Secret + "&code=" + code + "&grant_type=authorization_code"); JObject obj = (JObject)JsonConvert.DeserializeObject(result); string openid = obj["openid"].ToString(); Appinfo umod = appBll.SelModelByOpenID(openid, "wechat"); M_UserInfo mu = new M_UserInfo(); if (umod == null) { umod = new Appinfo(); M_WX_User wuMod = wxuserBll.SelForOpenid(wxapi.AppId.ID, openid); if (wuMod == null) { wuMod = wxapi.GetWxUserModel(openid); wxuserBll.Insert(wuMod); } mu.UserName = "******" + DateTime.Now.ToString("yyyyMMddHHmmss") + function.GetRandomString(2).ToLower(); mu.UserPwd = StringHelper.MD5(function.GetRandomString(6)); mu.Email = function.GetRandomString(10) + "@random.com"; mu.HoneyName = wuMod.Name; mu.TrueName = wuMod.Name; mu.UserID = buser.Add(mu); umod.UserID = mu.UserID; umod.SourcePlat = "wechat"; umod.OpenID = wuMod.OpenID; appBll.Insert(umod); M_Uinfo mubase = new M_Uinfo(); mubase.UserId = mu.UserID; buser.AddBase(mubase); } else { mu = buser.SelReturnModel(umod.UserID); } //设置为登录状态 buser.SetLoginState(mu); Response.Redirect(RUrl); } }
//进入该页即开始推广,自动创建用户,关联APPID protected void Page_Load(object sender, EventArgs e) { int AppID = DataConverter.CLng(Request.QueryString["appid"]); B_UserAPP appBll = new B_UserAPP(); int puid = DataConverter.CLng(Session["WX_PUserID"]); string rurl = DataConvert.CStr(Session["WX_R"]); //if (puid < 1) { function.WriteErrMsg("推荐用户不存在"); } M_WX_APPID appMod = new M_WX_APPID();//自行置入缓存,使用时取出 appMod = WxPayApi.Pay_GetByID(AppID); if (string.IsNullOrEmpty(rurl)) { string url = HttpUtility.UrlEncode(SiteConfig.SiteInfo.SiteUrl + "/User/"); rurl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appMod.APPID + "&redirect_uri=" + url + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"; } string code = Request["code"]; string access_token = APIHelper.GetWebResult("https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appMod.APPID + "&secret=" + appMod.Secret + "&code=" + code + "&grant_type=authorization_code"); JObject obj = (JObject)JsonConvert.DeserializeObject(access_token); JObject userobj = (JObject)JsonConvert.DeserializeObject(APIHelper.GetWebResult("https://api.weixin.qq.com/sns/userinfo?access_token=" + obj["access_token"] + "&openid=" + obj["openid"] + "&lang=zh_CN")); string openID = obj["openid"].ToString(); M_UserAPP umod = appBll.SelModelByOpenID(openID, "wechat"); M_UserInfo mu = new M_UserInfo(); if (umod != null) { mu = buser.SelReturnModel(umod.UserID); buser.SetLoginState(mu); try { string vpath = SiteConfig.SiteOption.UploadDir + "User/" + mu.UserName + "/wxheadimg.jpg"; HttpHelper.DownFile(userobj["headimgurl"].ToString(), vpath); mu.UserFace = vpath; buser.UpdateByID(mu); } catch (Exception ex) { } if (puid > 0 && DataConvert.CLng(mu.ParentUserID) <= 0) { if (puid == mu.UserID) { function.WriteErrMsg("不能绑定自己!"); } else { string err = ""; if (CheckParentUser(puid, mu.UserID, ref err)) { mu.ParentUserID = puid.ToString(); buser.UpdateByID(mu); } else { function.WriteErrMsg("绑定失败,错误信息:" + err); } } } Response.Redirect(rurl); } else //新用户则注册 { umod = new M_UserAPP(); mu.UserName = "******" + DateTime.Now.ToString("yyyyMMddHHmmss") + function.GetRandomString(2).ToLower(); mu.UserPwd = StringHelper.MD5(function.GetRandomString(6)); mu.Email = function.GetRandomString(10) + "@wx.com"; mu.Question = function.GetRandomString(5); mu.Answer = function.GetRandomString(5); mu.ParentUserID = puid.ToString(); mu.TrueName = userobj["nickname"].ToString(); try { string vpath = SiteConfig.SiteOption.UploadDir + "User/" + mu.UserName + "/wxheadimg.jpg"; HttpHelper.DownFile(userobj["headimgurl"].ToString(), vpath); mu.UserFace = vpath; } catch (Exception ex) { } mu.GroupID = 1; mu.UserID = buser.Add(mu); umod.UserID = mu.UserID; umod.SourcePlat = "wechat"; umod.OpenID = openID; appBll.Insert(umod); M_Uinfo mubase = new M_Uinfo(); mubase.UserId = mu.UserID; buser.AddBase(mubase); //推广人得积分 if (puid > 0) { M_UserInfo pmu = buser.SelReturnModel(puid); if (!pmu.IsNull) { buser.ChangeVirtualMoney(pmu.UserID, new M_UserExpHis() { score = 20, ScoreType = (int)M_UserExpHis.SType.Point, detail = "新用户[" + mu.UserName + "]注册,获得推广积分:" + 20 }); } } buser.SetLoginState(mu); Response.Redirect(rurl); } }
private void SendMsg(Object info) { try { M_WxTextMsg reqMod = (M_WxTextMsg)info; System.Threading.Thread.Sleep(1000);//延迟1秒,避免先于欢迎消息 M_WX_APPID appmod = new B_WX_APPID().GetAppByWxNo(reqMod.ToUserName); if (appmod == null) { throw new Exception("目标公众号[" + reqMod.ToUserName + "]不存在"); } string msgStr = ""; M_UserAPP uappMod = new M_UserAPP(); B_UserAPP uappBll = new B_UserAPP(); M_UserInfo mu = new M_UserInfo(); uappMod = uappBll.SelModelByOpenID(reqMod.FromUserName, "wechat"); if (uappMod != null) { mu = buser.GetUserByUserID(uappMod.UserID); M_UserInfo pmu = buser.GetUserByUserID(DataConvert.CLng(reqMod.EventKey.Replace("qrscene_", ""))); if (mu != null && mu.UserID > 0) { if (DataConvert.CLng(mu.ParentUserID) > 0) { msgStr = "您已绑定了推荐人不能重复绑定!"; } else { if (mu.UserID == DataConvert.CLng(reqMod.EventKey.Replace("qrscene_", ""))) { msgStr = "您扫描的是您自己的二维码!"; } else { if (pmu != null && pmu.UserID > 0) { string err = ""; if (CheckParentUser(pmu.UserID, mu.UserID, ref err)) { mu.ParentUserID = pmu.UserID.ToString(); if (buser.UpdateByID(mu)) { msgStr = "您成功绑定了推荐人:" + pmu.TrueName + "!"; } else { msgStr = "绑定推荐人失败!"; } } else { msgStr = "绑定推荐失败,错误信息:" + err; } } else { msgStr = "绑定推荐失败,推荐人不存在!"; } } } } WxAPI.Code_Get(appmod).SendMsg(reqMod.FromUserName, msgStr); } } catch (Exception ex) { ZLLog.L("微信多信息出错,原因:" + ex.Message); } }
/// <summary> /// 系统事件,如订阅等处理 /// </summary> public void WxEventHandler(M_WxTextMsg reqMod) { M_WX_User userMod = null; errmsg += ",事件:" + reqMod.Event; switch (reqMod.Event.ToLower()) { case "subscribe": userMod = api.GetWxUserModel(reqMod.FromUserName); userMod.CDate = DateTime.Now; userMod.AppId = api.AppId.ID; wxuserBll.Insert(userMod); M_WxImgMsg msgmod = JsonConvert.DeserializeObject <M_WxImgMsg>(api.AppId.WelStr); msgmod.ToUserName = reqMod.FromUserName; msgmod.FromUserName = reqMod.ToUserName; int pid = DataConvert.CLng(reqMod.EventKey.Replace("qrscene_", "")); M_UserAPP uappMod1 = new M_UserAPP(); M_UserInfo mu1 = new M_UserInfo(); M_WX_User wuserMod = new M_WX_User(); M_Uinfo mubase = new M_Uinfo(); uappMod1 = uappBll.SelModelByOpenID(reqMod.FromUserName, "wechat"); wuserMod = api.GetWxUserModel(reqMod.FromUserName); if (uappMod1 != null) { mu1 = buser.GetUserByUserID(uappMod1.UserID); if (mu1 != null && mu1.UserID > 0) { mu1.TrueName = wuserMod.Name; try { string vpath = SiteConfig.SiteOption.UploadDir + "User/" + mu1.UserName + mu1.UserID + "/wxheadimg.jpg"; HttpHelper.DownFile(wuserMod.HeadImgUrl, vpath); mu1.UserFace = vpath; } catch (Exception ex) { ZLLog.L("微信更新头像错误,原因:" + ex.Message); } mu1.GroupID = 1; buser.UpdateByID(mu1); } else { mu1.UserName = "******" + DateTime.Now.ToString("yyyyMMddHHmmss") + function.GetRandomString(2).ToLower(); mu1.UserPwd = StringHelper.MD5(function.GetRandomString(6)); mu1.Email = function.GetRandomString(10) + "@wx.com"; mu1.Question = function.GetRandomString(5); mu1.Answer = function.GetRandomString(5); mu1.TrueName = wuserMod.Name; mu1.GroupID = 1; try { string vpath = SiteConfig.SiteOption.UploadDir + "User/" + mu1.UserName + mu1.UserID + "/wxheadimg.jpg"; HttpHelper.DownFile(wuserMod.HeadImgUrl, vpath); mu1.UserFace = vpath; } catch (Exception ex) { ZLLog.L("微信更新头像错误,原因:" + ex.Message); } mu1.UserID = buser.Add(mu1); uappMod1.UserID = mu1.UserID; uappMod1.SourcePlat = "wechat"; uappMod1.OpenID = reqMod.FromUserName; uappBll.UpdateByID(uappMod1); mubase.UserId = mu1.UserID; buser.AddBase(mubase); } } else { uappMod1 = new M_UserAPP(); mu1.UserName = "******" + DateTime.Now.ToString("yyyyMMddHHmmss") + function.GetRandomString(2).ToLower(); mu1.UserPwd = StringHelper.MD5(function.GetRandomString(6)); mu1.Email = function.GetRandomString(10) + "@wx.com"; mu1.Question = function.GetRandomString(5); mu1.Answer = function.GetRandomString(5); mu1.TrueName = wuserMod.Name; mu1.GroupID = 1; try { string vpath = SiteConfig.SiteOption.UploadDir + "User/" + mu1.UserName + mu1.UserID + "/wxheadimg.jpg"; HttpHelper.DownFile(wuserMod.HeadImgUrl, vpath); mu1.UserFace = vpath; } catch (Exception ex) { ZLLog.L("微信更新头像错误,原因:" + ex.Message); } mu1.UserID = buser.Add(mu1); uappMod1.UserID = mu1.UserID; uappMod1.SourcePlat = "wechat"; uappMod1.OpenID = reqMod.FromUserName; uappBll.Insert(uappMod1); mubase.UserId = mu1.UserID; buser.AddBase(mubase); } if (string.IsNullOrEmpty(msgmod.Articles[0].PicUrl)) //如未设置图片则以纯文本格式发送,纯文本支持内置超链接 { M_WxTextMsg textMod = ImageToText(msgmod); RepToClient(textMod.ToXML()); } else { RepToClient(msgmod.ToXML()); } //关注时发送多条信息 if (pid > 0) { System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SendMsg), reqMod); } //关注时发送多条信息 //System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SendMsg), reqMod); break; case "unsubscribe": wxuserBll.DelByOpenid(api.AppId.ID, reqMod.FromUserName); break; case "location": //用户进入公众号(包含定位信息) break; case "scan": M_UserAPP uappMod = new M_UserAPP(); M_UserInfo mu = new M_UserInfo(); M_WxTextMsg textMod2 = new M_WxTextMsg(); M_WX_User wuserMod1 = api.GetWxUserModel(reqMod.FromUserName); M_Uinfo mubase1 = new M_Uinfo(); textMod2.FromUserName = reqMod.ToUserName; textMod2.ToUserName = reqMod.FromUserName; textMod2.MsgType = "text"; textMod2.Content = ""; uappMod = uappBll.SelModelByOpenID(reqMod.FromUserName, "wechat"); if (uappMod != null) { mu = buser.GetUserByUserID(uappMod.UserID); M_UserInfo pmu = buser.GetUserByUserID(DataConvert.CLng(reqMod.EventKey)); if (mu != null && mu.UserID > 0) { if (DataConvert.CLng(mu.ParentUserID) > 0) { textMod2.Content = "您已绑定了推荐人不能重复绑定!"; RepToClient(textMod2.ToXML()); } else { if (mu.UserID == DataConvert.CLng(reqMod.EventKey)) { textMod2.Content = "您扫描的是您自己的二维码!"; } else { mu.ParentUserID = DataConvert.CLng(reqMod.EventKey).ToString(); if (pmu != null && pmu.UserID > 0) { string err = ""; try { if (CheckParentUser(pmu.UserID, mu.UserID, ref err)) { mu.ParentUserID = pmu.UserID.ToString(); if (buser.UpdateByID(mu)) { textMod2.Content = "您成功绑定了推荐人:" + pmu.TrueName + "!"; } else { textMod2.Content = "绑定推荐人失败!"; } } else { textMod2.Content = "绑定推荐失败,错误信息:" + err; } } catch (Exception ex) { textMod2.Content = "绑定推荐失败,错误信息:" + pmu.TrueName + "的推荐关系有循环!"; } } else { textMod2.Content = "绑定推荐失败,推荐人不存在!"; } } RepToClient(textMod2.ToXML()); } } } else { uappMod1 = new M_UserAPP(); mu.UserName = "******" + DateTime.Now.ToString("yyyyMMddHHmmss") + function.GetRandomString(2).ToLower(); mu.UserPwd = StringHelper.MD5(function.GetRandomString(6)); mu.Email = function.GetRandomString(10) + "@wx.com"; mu.Question = function.GetRandomString(5); mu.Answer = function.GetRandomString(5); mu.TrueName = wuserMod1.Name; mu.GroupID = 1; try { string vpath = SiteConfig.SiteOption.UploadDir + "User/" + mu.UserName + mu.UserID + "/wxheadimg.jpg"; HttpHelper.DownFile(wuserMod1.HeadImgUrl, vpath); mu.UserFace = vpath; } catch (Exception ex) { ZLLog.L("微信更新头像错误,原因:" + ex.Message); } M_UserInfo pmu = buser.GetUserByUserID(DataConvert.CLng(reqMod.EventKey)); if (pmu != null && pmu.UserID > 0) { mu.ParentUserID = reqMod.EventKey; } mu.UserID = buser.Add(mu); uappMod1.UserID = mu.UserID; uappMod1.SourcePlat = "wechat"; uappMod1.OpenID = reqMod.FromUserName; uappBll.Insert(uappMod1); mubase1.UserId = mu.UserID; buser.AddBase(mubase1); if (pmu != null && pmu.UserID > 0) { textMod2.Content = "您成功绑定了推荐人:" + pmu.TrueName + "!"; RepToClient(textMod2.ToXML()); } } break; default: break; } }
//进入该页即开始推广,自动创建用户,关联APPID protected void Page_Load(object sender, EventArgs e) { int AppID = DataConverter.CLng(Request.QueryString["appid"]); B_User buser = new B_User(); B_UserAPP appBll = new B_UserAPP(); int puid = DataConverter.CLng(Session["WX_PUserID"]); string rurl = DataConvert.CStr(Session["WX_R"]); if (string.IsNullOrEmpty(rurl)) { rurl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8c5c2dc7b10a36f3&redirect_uri=http%3a%2f%2fv.wodian8.com%2fUser%2fDefault1.aspx&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"; } //if (puid < 1) { function.WriteErrMsg("推荐用户不存在"); } M_WX_APPID appMod = new M_WX_APPID();//自行置入缓存,使用时取出 appMod = WxPayApi.Pay_GetByID(AppID); string code = Request["code"]; string access_token = APIHelper.GetWebResult("https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appMod.APPID + "&secret=" + appMod.Secret + "&code=" + code + "&grant_type=authorization_code"); JObject obj = (JObject)JsonConvert.DeserializeObject(access_token); JObject userobj = (JObject)JsonConvert.DeserializeObject(APIHelper.GetWebResult("https://api.weixin.qq.com/sns/userinfo?access_token=" + obj["access_token"] + "&openid=" + obj["openid"] + "&lang=zh_CN")); string openID = obj["openid"].ToString(); Appinfo umod = appBll.SelModelByOpenID(openID, "wechat"); M_UserInfo mu = new M_UserInfo(); if (umod != null) { mu = buser.SelReturnModel(umod.UserID); buser.SetLoginState(mu); Response.Redirect(rurl); } else //新用户则注册 { umod = new Appinfo(); mu.UserName = "******" + DateTime.Now.ToString("yyyyMMddHHmmss") + function.GetRandomString(2).ToLower(); mu.UserPwd = StringHelper.MD5(function.GetRandomString(6)); mu.Email = function.GetRandomString(10) + "@wx.com"; mu.Question = function.GetRandomString(5); mu.Answer = function.GetRandomString(5); mu.ParentUserID = puid.ToString(); mu.TrueName = userobj["nickname"].ToString(); mu.GroupID = 1; mu.UserID = buser.Add(mu); umod.UserID = mu.UserID; umod.SourcePlat = "wechat"; umod.OpenID = openID; appBll.Insert(umod); M_Uinfo mubase = new M_Uinfo(); mubase.UserId = mu.UserID; buser.AddBase(mubase); //推广人得积分 if (puid > 0) { M_UserInfo pmu = buser.SelReturnModel(puid); if (!pmu.IsNull) { buser.ChangeVirtualMoney(pmu.UserID, new M_UserExpHis() { score = 20, ScoreType = (int)M_UserExpHis.SType.Point, detail = "新用户[" + mu.UserName + "]注册,获得推广积分:" + 20 }); } } buser.SetLoginState(mu); Response.Redirect(rurl); } }
/// <summary> /// 系统事件,如订阅等处理 /// </summary> public void WxEventHandler(M_WxTextMsg reqMod) { M_WX_User userMod = null; errmsg += ",事件:" + reqMod.Event; switch (reqMod.Event.ToLower()) { case "subscribe": userMod = api.GetWxUserModel(reqMod.FromUserName); userMod.CDate = DateTime.Now; userMod.AppId = api.AppId.ID; wxuserBll.Insert(userMod); M_WxImgMsg msgmod = new M_WxImgMsg(); msgmod.ToUserName = reqMod.FromUserName; msgmod.FromUserName = reqMod.ToUserName; M_WX_ReplyMsg rpMod1 = new M_WX_ReplyMsg(); rpMod1 = rpBll.SelByFileAndDef(appBll.GetAppByWxNo(reqMod.ToUserName).ID, "头图"); if (rpMod1 != null) { M_WXImgItem item = JsonConvert.DeserializeObject <M_WXImgItem>(rpMod1.Content); msgmod.Articles.Add(new M_WXImgItem() { Title = item.Title, Url = item.Url, Description = item.Description, PicUrl = item.PicUrl }); } rpMod1 = rpBll.SelByFileAndDef(appBll.GetAppByWxNo(reqMod.ToUserName).ID, "推送1"); { M_WXImgItem item = JsonConvert.DeserializeObject <M_WXImgItem>(rpMod1.Content); msgmod.Articles.Add(new M_WXImgItem() { Title = item.Title, Url = item.Url, Description = item.Description, PicUrl = item.PicUrl }); } rpMod1 = rpBll.SelByFileAndDef(appBll.GetAppByWxNo(reqMod.ToUserName).ID, "推送2"); { M_WXImgItem item = JsonConvert.DeserializeObject <M_WXImgItem>(rpMod1.Content); msgmod.Articles.Add(new M_WXImgItem() { Title = item.Title, Url = item.Url, Description = item.Description, PicUrl = item.PicUrl }); } rpMod1 = rpBll.SelByFileAndDef(appBll.GetAppByWxNo(reqMod.ToUserName).ID, "推送3"); { M_WXImgItem item = JsonConvert.DeserializeObject <M_WXImgItem>(rpMod1.Content); msgmod.Articles.Add(new M_WXImgItem() { Title = item.Title, Url = item.Url, Description = item.Description, PicUrl = item.PicUrl }); } rpMod1 = rpBll.SelByFileAndDef(appBll.GetAppByWxNo(reqMod.ToUserName).ID, "推送4"); { M_WXImgItem item = JsonConvert.DeserializeObject <M_WXImgItem>(rpMod1.Content); msgmod.Articles.Add(new M_WXImgItem() { Title = item.Title, Url = item.Url, Description = item.Description, PicUrl = item.PicUrl }); } rpMod1 = rpBll.SelByFileAndDef(appBll.GetAppByWxNo(reqMod.ToUserName).ID, "推送5"); { M_WXImgItem item = JsonConvert.DeserializeObject <M_WXImgItem>(rpMod1.Content); msgmod.Articles.Add(new M_WXImgItem() { Title = item.Title, Url = item.Url, Description = item.Description, PicUrl = item.PicUrl }); } RepToClient(msgmod.ToXML()); System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SendMsg), reqMod); break; case "unsubscribe": { userMod = wxuserBll.SelForOpenid(reqMod.FromUserName); if (userMod != null) { wxuserBll.Del(userMod.ID); } } break; case "location": //用户进入公众号(包含定位信息) break; case "scan": //带参数的二维码扫描进入(关注事件在上方处理) M_UserAPP uappMod = new M_UserAPP(); B_UserAPP uappBll = new B_UserAPP(); M_UserInfo mu = new M_UserInfo(); M_WxTextMsg textMod2 = new M_WxTextMsg(); textMod2.FromUserName = reqMod.ToUserName; textMod2.ToUserName = reqMod.FromUserName; textMod2.MsgType = "text"; textMod2.Content = ""; uappMod = uappBll.SelModelByOpenID(reqMod.FromUserName, "wechat"); if (uappMod != null) { mu = buser.GetUserByUserID(uappMod.UserID); M_UserInfo pmu = buser.GetUserByUserID(DataConvert.CLng(reqMod.EventKey)); if (mu != null && mu.UserID > 0) { if (DataConvert.CLng(mu.ParentUserID) > 0) { textMod2.Content = "您已绑定了推荐人不能重复绑定!"; RepToClient(textMod2.ToXML()); } else { if (mu.UserID == DataConvert.CLng(reqMod.EventKey)) { textMod2.Content = "您扫描的是您自己的二维码!"; } else { mu.ParentUserID = DataConvert.CLng(reqMod.EventKey).ToString(); if (pmu != null && pmu.UserID > 0) { string err = ""; if (CheckParentUser(pmu.UserID, mu.UserID, ref err)) { mu.ParentUserID = pmu.UserID.ToString(); if (buser.UpdateByID(mu)) { textMod2.Content = "您成功绑定了推荐人:" + pmu.TrueName + "!"; } else { textMod2.Content = "绑定推荐人失败!"; } } else { textMod2.Content = "绑定推荐失败,错误信息:" + err; } } else { textMod2.Content = "绑定推荐失败,推荐人不存在!"; } } RepToClient(textMod2.ToXML()); } } } break; default: break; } }
/// <summary> /// 系统事件,如订阅等处理 /// </summary> public void WxEventHandler(M_WxTextMsg reqMod) { M_WX_User userMod = null; switch (reqMod.Event.ToLower()) { case "subscribe": userMod = api.GetWxUserModel(reqMod.FromUserName); userMod.CDate = DateTime.Now; userMod.AppId = api.AppId.ID; wxuserBll.Insert(userMod); M_WxImgMsg msgmod = JsonConvert.DeserializeObject <M_WxImgMsg>(api.AppId.WelStr); msgmod.ToUserName = reqMod.FromUserName; msgmod.FromUserName = reqMod.ToUserName; int pid = DataConvert.CLng(reqMod.EventKey.Replace("qrscene_", "")); Appinfo uappMod1 = new Appinfo(); B_UserAPP uappBll1 = new B_UserAPP(); M_UserInfo mu1 = new M_UserInfo(); M_WX_User wuserMod = new M_WX_User(); M_Uinfo mubase = new M_Uinfo(); uappMod1 = uappBll1.SelModelByOpenID(reqMod.FromUserName, "wechat"); wuserMod = api.GetWxUserModel(reqMod.FromUserName); if (uappMod1 != null) { mu1 = buser.GetUserByUserID(uappMod1.UserID); if (mu1 != null && mu1.UserID > 0) { mu1.TrueName = wuserMod.Name; mu1.GroupID = 1; buser.UpdateByID(mu1); } else { mu1.UserName = "******" + DateTime.Now.ToString("yyyyMMddHHmmss") + function.GetRandomString(2).ToLower(); mu1.UserPwd = StringHelper.MD5(function.GetRandomString(6)); mu1.Email = function.GetRandomString(10) + "@wx.com"; mu1.Question = function.GetRandomString(5); mu1.Answer = function.GetRandomString(5); mu1.TrueName = wuserMod.Name; mu1.GroupID = 1; mu1.UserID = buser.Add(mu1); uappMod1.UserID = mu1.UserID; uappMod1.SourcePlat = "wechat"; uappMod1.OpenID = reqMod.FromUserName; uappBll1.UpdateByID(uappMod1); mubase.UserId = mu1.UserID; buser.AddBase(mubase); } } else { uappMod1 = new Appinfo(); mu1.UserName = "******" + DateTime.Now.ToString("yyyyMMddHHmmss") + function.GetRandomString(2).ToLower(); mu1.UserPwd = StringHelper.MD5(function.GetRandomString(6)); mu1.Email = function.GetRandomString(10) + "@wx.com"; mu1.Question = function.GetRandomString(5); mu1.Answer = function.GetRandomString(5); mu1.TrueName = wuserMod.Name; mu1.GroupID = 1; mu1.UserID = buser.Add(mu1); uappMod1.UserID = mu1.UserID; uappMod1.SourcePlat = "wechat"; uappMod1.OpenID = reqMod.FromUserName; uappBll1.Insert(uappMod1); mubase.UserId = mu1.UserID; buser.AddBase(mubase); } if (string.IsNullOrEmpty(msgmod.Articles[0].PicUrl)) //如未设置图片则以纯文本格式发送,纯文本支持内置超链接 { M_WxTextMsg textMod = ImageToText(msgmod); RepToClient(textMod.ToXML()); } else { RepToClient(msgmod.ToXML()); } //关注时发送多条信息 if (pid > 0) { System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SendMsg), reqMod); } //关注时发送多条信息 //System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(SendMsg), reqMod); break; case "unsubscribe": wxuserBll.DelByOpenid(api.AppId.ID, reqMod.FromUserName); break; case "location": //用户进入公众号(包含定位信息) M_WxImgMsg msgmod1 = new M_WxImgMsg(); msgmod1.ToUserName = reqMod.FromUserName; msgmod1.FromUserName = reqMod.ToUserName; M_WX_ReplyMsg rpMod = new M_WX_ReplyMsg(); rpMod = rpBll.SelByFileAndDef(appBll.GetAppByWxNo(reqMod.ToUserName).ID, "头图"); if (rpMod != null) { M_WXImgItem item = JsonConvert.DeserializeObject <M_WXImgItem>(rpMod.Content); msgmod1.Articles.Add(new M_WXImgItem() { Title = item.Title, Url = item.Url, Description = item.Description, PicUrl = item.PicUrl }); } // rpMod = rpBll.SelByFileAndDef(appBll.GetAppByWxNo(reqMod.ToUserName).ID, "推送1"); // { // M_WXImgItem item = JsonConvert.DeserializeObject<M_WXImgItem>(rpMod.Content); // msgmod1.Articles.Add(new M_WXImgItem() { Title = item.Title, Url = item.Url, Description = item.Description, PicUrl = item.PicUrl }); // } // rpMod = rpBll.SelByFileAndDef(appBll.GetAppByWxNo(reqMod.ToUserName).ID, "推送2"); // { // M_WXImgItem item = JsonConvert.DeserializeObject<M_WXImgItem>(rpMod.Content); // msgmod1.Articles.Add(new M_WXImgItem() { Title = item.Title, Url = item.Url, Description = item.Description, PicUrl = item.PicUrl }); // } // rpMod = rpBll.SelByFileAndDef(appBll.GetAppByWxNo(reqMod.ToUserName).ID, "推送3"); // { // M_WXImgItem item = JsonConvert.DeserializeObject<M_WXImgItem>(rpMod.Content); // msgmod1.Articles.Add(new M_WXImgItem() { Title = item.Title, Url = item.Url, Description = item.Description, PicUrl = item.PicUrl }); // } // rpMod = rpBll.SelByFileAndDef(appBll.GetAppByWxNo(reqMod.ToUserName).ID, "推送4"); // { // M_WXImgItem item = JsonConvert.DeserializeObject<M_WXImgItem>(rpMod.Content); // msgmod1.Articles.Add(new M_WXImgItem() { Title = item.Title, Url = item.Url, Description = item.Description, PicUrl = item.PicUrl }); // } RepToClient(msgmod1.ToXML()); break; case "scan": Appinfo uappMod = new Appinfo(); B_UserAPP uappBll = new B_UserAPP(); M_UserInfo mu = new M_UserInfo(); M_WxTextMsg textMod2 = new M_WxTextMsg(); textMod2.FromUserName = reqMod.ToUserName; textMod2.ToUserName = reqMod.FromUserName; textMod2.MsgType = "text"; textMod2.Content = ""; uappMod = uappBll.SelModelByOpenID(reqMod.FromUserName, "wechat"); if (uappMod != null) { mu = buser.GetUserByUserID(uappMod.UserID); M_UserInfo pmu = buser.GetUserByUserID(DataConvert.CLng(reqMod.EventKey)); if (mu != null && mu.UserID > 0) { if (DataConvert.CLng(mu.ParentUserID) > 0) { textMod2.Content = "您已绑定了推荐人不能重复绑定!"; RepToClient(textMod2.ToXML()); } else { if (mu.UserID == DataConvert.CLng(reqMod.EventKey)) { textMod2.Content = "您扫描的是您自己的二维码!"; } else { mu.ParentUserID = DataConvert.CLng(reqMod.EventKey).ToString(); if (pmu != null && pmu.UserID > 0) { string err = ""; if (CheckParentUser(pmu.UserID, mu.UserID, ref err)) { mu.ParentUserID = pmu.UserID.ToString(); if (buser.UpdateByID(mu)) { textMod2.Content = "您成功绑定了推荐人:" + pmu.TrueName + "!"; } else { textMod2.Content = "绑定推荐人失败!"; } } else { textMod2.Content = "绑定推荐失败,错误信息:" + err; } } else { textMod2.Content = "绑定推荐失败,推荐人不存在!"; } } RepToClient(textMod2.ToXML()); } } } break; default: break; } }
protected void Register_Click(object sender, EventArgs e) { UserName_T.Text = UserName_T.Text.Replace(" ", ""); UserPwd_T.Text = UserPwd_T.Text.Replace(" ", ""); ConfirmPwd_T.Text = ConfirmPwd_T.Text.Replace(" ", ""); if (string.IsNullOrEmpty(UserName_T.Text)) { function.WriteErrMsg("用户名不能为空"); } if (string.IsNullOrEmpty(UserPwd_T.Text)) { function.WriteErrMsg("密码不能为空"); } if (ConfirmPwd_T.Text != UserPwd_T.Text) { function.WriteErrMsg("密码不一致"); } if (buser.IsExistUName(UserName_T.Text)) { function.WriteErrMsg("用户名已存在,请更换用户名注册"); } //if (buser.IsExist("ume", UserName_T.Text)) { function.WriteErrMsg("用户名已存在,请更换用户名注册"); } M_UserInfo mu = new M_UserInfo(); mu.UserName = UserName_T.Text; mu.UserPwd = StringHelper.MD5(UserPwd_T.Text); mu.Email = Email_T.Text; mu.Question = function.GetRandomString(10); mu.Answer = function.GetRandomString(10); Appinfo appMod = new Appinfo(); appMod.SourcePlat = ZType; switch (appMod.SourcePlat) { case "qq": { if (string.IsNullOrEmpty(QQ_OpenID_Hid.Value)) { function.WriteErrMsg("绑定信息错误"); } if (appBll.SelModelByOpenID(QQ_OpenID_Hid.Value, "qq") != null) { function.WriteErrMsg("该OpenID已存在,不可重复绑定"); } appMod.OpenID = QQ_OpenID_Hid.Value; //JObject obj = new QQHelper(QQ_Token_Hid.Value, QQ_OpenID_Hid.Value).GetUserInfo(); //mu.HoneyName = obj["data"]["nick"].ToString();||obj["nickname"] } break; case "sina": { if (string.IsNullOrEmpty(Sina_OpenID_Hid.Value)) { function.WriteErrMsg("未指定openid"); } if (appBll.SelModelByOpenID(Sina_OpenID_Hid.Value, "sina") != null) { function.WriteErrMsg("该OpenID已存在,不可重复绑定"); } appMod.OpenID = Sina_OpenID_Hid.Value; } break; case "wechat": default: throw new Exception("暂未开启该[" + ZType + "]平台注册"); } mu.UserID = buser.AddModel(mu); if (mu.UserID < 1) { function.WriteErrMsg("用户添加失败!!!"); } appMod.UserID = mu.UserID; appBll.Insert(appMod); buser.SetLoginState(mu); Response.Redirect(targetUrl); }
//进入该页即开始推广,自动创建用户,关联APPID protected void Page_Load(object sender, EventArgs e) { B_User buser = new B_User(); B_UserAPP appBll = new B_UserAPP(); int puid = DataConverter.CLng(Session["WX_PUserID"]); string rurl = DataConvert.CStr(Session["WX_R"]); if (string.IsNullOrEmpty(rurl)) { rurl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx215c3a129d4f8fcc&redirect_uri=http%3a%2f%2fx014.2013.hx008.com&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"; } //if (puid < 1) { function.WriteErrMsg("推荐用户不存在"); } M_WX_APPID appMod = new M_WX_APPID(); //自行置入缓存,使用时取出 appMod.APPID = WxPayConfig.APPID; //"wx674f7f7116d71f52"; appMod.Secret = WxPayConfig.APPSECRET; //1ea6ecc8a53028019f604097379d3b21 WxAPI wxapi = WxAPI.Code_Get(1); //wxapi.AppId = appMod; string code = Request["code"]; string access_token = APIHelper.GetWebResult("https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appMod.APPID + "&secret=" + appMod.Secret + "&code=" + code + "&grant_type=authorization_code"); JObject obj = (JObject)JsonConvert.DeserializeObject(access_token); JObject userobj = (JObject)JsonConvert.DeserializeObject(APIHelper.GetWebResult("https://api.weixin.qq.com/sns/userinfo?access_token=" + obj["access_token"] + "&openid=" + obj["openid"] + "&lang=zh_CN")); string openID = obj["openid"].ToString(); Appinfo umod = appBll.SelModelByOpenID(openID, "wechat"); M_UserInfo mu = new M_UserInfo(); if (umod != null) { mu = buser.SelReturnModel(umod.UserID); buser.SetLoginState(mu); Response.Redirect(rurl); } else //新用户则注册 { umod = new Appinfo(); mu.UserName = "******" + DateTime.Now.ToString("yyyyMMddHHmmss") + function.GetRandomString(2).ToLower(); mu.UserPwd = StringHelper.MD5(function.GetRandomString(6)); mu.Email = function.GetRandomString(10) + "@wx.com"; mu.Question = function.GetRandomString(5); mu.Answer = function.GetRandomString(5); mu.ParentUserID = puid.ToString(); mu.TrueName = userobj["nickname"].ToString(); mu.GroupID = 1; mu.UserID = buser.Add(mu); umod.UserID = mu.UserID; umod.SourcePlat = "wechat"; umod.OpenID = openID; appBll.Insert(umod); M_Uinfo mubase = new M_Uinfo(); mubase.UserId = mu.UserID; buser.AddBase(mubase); //推广人得积分 //if (puid > 0) //{ // M_UserInfo pmu = buser.SelReturnModel(puid); // if (!pmu.IsNull) // { // buser.ChangeVirtualMoney(pmu.UserID, new M_UserExpHis() // { // score = 20, // ScoreType = (int)M_UserExpHis.SType.Point, // detail = "新用户[" + mu.UserName + "]注册,获得推广积分:"+20 // }); // } //} buser.SetLoginState(mu); Response.Redirect(rurl); } }