public Task <OrgInfo> GetOrgInfo(string bsKey) { return(Task.Factory.StartNew(() => { using (DB db = new DB()) { var orgInfo = db.OrgInfos.Find(bsKey); if (orgInfo == null) { throw new Exception("错误的大屏号码"); } if (string.IsNullOrEmpty(orgInfo.Ticket)) { var qrcode = WXServiceManager.CreateQrcodeLIMIT(orgInfo.Key); orgInfo.Ticket = qrcode.ticket; orgInfo.Url = WXServiceManager.GetShortUrl(qrcode.url); orgInfo = db.OrgInfos.Edit(orgInfo); db.Save(); } Context.Set("OrgInfo", orgInfo); StartClass.log.WriteInfo("添加到组:" + Context.ConnectionId + "-" + orgInfo.Key); context.Groups.Add(Context.ConnectionId, orgInfo.Key).Wait(); return orgInfo; } })); }
public Task <string> GetAuthUrl() { return(Task.Factory.StartNew(() => { return WXServiceManager.GetAuthUrl(((OrgInfo)Context.Get("OrgInfo")).Key.ToString()); })); }
/// <summary> /// 验证微信签名 /// </summary> /// <returns></returns> /// * 将token、timestamp、nonce三个参数进行字典序排序 /// * 将三个参数字符串拼接成一个字符串进行sha1加密 /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。 private bool CheckSignature(string signature, string timestamp, string nonce, string echostr) { string[] ArrTmp = { WXServiceManager._PushToken, timestamp, nonce }; Array.Sort(ArrTmp); string tmpStr = string.Join("", ArrTmp); StartClass.log.WriteInfo(tmpStr); var result = WXServiceManager.SHA1(tmpStr, Encoding.UTF8).ToLower(); StartClass.log.WriteInfo(result); return(signature == result); }
public Task <UserInfo> GetUserForCode(string code) { return(Task.Factory.StartNew(() => { var accessToken = WXServiceManager.GetWXWebAccessTokenForCode(code); if (string.IsNullOrEmpty(accessToken.openid)) { throw new Exception("错误"); } using (DB db = new DB()) { //如果已经有了. var user = db.UserInfos.AsQuery().Where(w => w.WXOpenId == accessToken.openid).FirstOrDefault(); if (user != null) { Context.Set("UserInfo", user); return user; } //如果没有,需要从新拉去并注册 var WXUser = WXServiceManager.GetWXUserInfo(accessToken.openid, accessToken.access_token); //开始注册 user = new UserInfo(); user.WXOpenId = WXUser.openid; user.WXCity = WXUser.city; user.WXCountry = WXUser.country; user.WXHeadImgUrl = WXUser.headimgurl.Remove(WXUser.headimgurl.Length - 2); user.WXNickName = WXUser.nickname; user.WXProvince = WXUser.province; user.WXSex = WXUser.sex; user = db.UserInfos.Add(user); db.Save(); Context.Set("UserInfo", user); return user; } })); }
private HttpResponseMessage ResponseXML(WxXmlModel wxXmlModel) { string XML = ""; StartClass.log.WriteInfo(wxXmlModel.MsgType + "-" + wxXmlModel.Event); switch (wxXmlModel.MsgType) { case "text": //文本回复 XML = GetText(wxXmlModel.FromUserName, wxXmlModel.ToUserName, wxXmlModel.Content); break; case "event": //文本回复 StartClass.log.WriteInfo("!!!!!!"); if (wxXmlModel.Event == "subscribe" || wxXmlModel.Event == "SCAN") { using (DB db = new DB()) { StartClass.log.WriteInfo("!" + wxXmlModel.EventKey); var org = db.OrgInfos.Find(wxXmlModel.EventKey); StartClass.log.WriteInfo(wxXmlModel.EventKey); if (org != null) { StartClass.log.WriteInfo(org.Key); XML = ReArticle(wxXmlModel.FromUserName, wxXmlModel.ToUserName, org.OrgName, org.OrgName, "http://pic.cnblogs.com/avatar/743013/20150521120816.png", WXServiceManager.GetAuthUrl(org.Key)); } } } else { return(null); } break; default: //默认回复 XML = GetText(wxXmlModel.FromUserName, wxXmlModel.ToUserName, "未知的关键字"); break; } StartClass.log.WriteInfo(XML); return(new HttpResponseMessage() { Content = new StringContent(XML, Encoding.UTF8, "application/xml") }); }