Esempio n. 1
0
        /// <summary>
        /// 获取sid、uin及相关Cookie
        /// </summary>
        /// <param name="loginRedirect">扫描登录成功返回的string</param>
        /// <returns></returns>
        public string GetSidUinAndCookie(string loginRedirect)
        {
            try
            {
                byte[] bytes       = RequstService.SendGetRequest(loginRedirect + "&fun=new");
                string pass_ticket = Encoding.UTF8.GetString(bytes);
                string pass_Ticket = pass_ticket.Split(new string[] { "pass_ticket" }, StringSplitOptions.None)[1].TrimStart('>').TrimEnd('<', '/');
                string sKey        = pass_ticket.Split(new string[] { "skey" }, StringSplitOptions.None)[1].TrimStart('>').TrimEnd('<', '/');
                /// 登录后sid
                Cookie sid = RequstService.GetCookie("wxsid");
                /// 登录后uin
                Cookie   uin = RequstService.GetCookie("wxuin");
                Cookie   webwx_data_ticket = RequstService.GetCookie("webwx_data_ticket");
                WXResult wxResult          = new WXResult();

                wxResult.Status = "OK";
                SidUinAndCookie sidUinAndCookie = new SidUinAndCookie();
                sidUinAndCookie.pass_Ticket       = pass_Ticket;
                sidUinAndCookie.sId               = sid.Value;
                sidUinAndCookie.sKey              = sKey;
                sidUinAndCookie.uIn               = uin.Value;
                sidUinAndCookie.webwx_Data_Ticket = webwx_data_ticket.Value;
                wxResult.Result = sidUinAndCookie;
                return(_jsonSerialize.Serialize(wxResult));
            }
            catch (Exception ex)
            {
                WXResult wxResult = new WXResult();
                wxResult.Exception = ex.Message;
                return(_jsonSerialize.Serialize(wxResult));
            }
        }
Esempio n. 2
0
 /// <summary>
 /// 获取需要发送用户UserName
 /// </summary>
 /// <param name="nickName">用户昵称 从好友列表中获取</param>
 /// <returns></returns>
 public string GetUserName(string nickName)
 {
     try
     {
         WXResult wxResult = new WXResult();
         // JObject friends = MessageSync.Friends();
         JObject friends = MessageSync.friends_result;
         if (friends != null)
         {
             if (friends["MemberList"] != null)
             {
                 foreach (var item in friends["MemberList"])
                 {
                     if (item["NickName"].ToString() == nickName)
                     {
                         return(item["UserName"].ToString());
                     }
                 }
             }
         }
         return("");
     }
     catch (Exception ex)
     {
         return("");
     }
 }
Esempio n. 3
0
 /// <summary>
 /// 微信同步(获取最新消息)
 /// </summary>
 /// <returns></returns>
 public List <object> WxSync()
 {
     try
     {
         WXResult      wxResult    = new WXResult();
         JObject       sync_result = MessageSync.WxSync(); //同步检查
         List <object> msgList     = new List <object>();
         if (sync_result != null)
         {
             if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0")
             {
                 foreach (JObject m in sync_result["AddMsgList"])
                 {
                     WXMsg msg = new WXMsg();
                     msg.From = m["FromUserName"].ToString();
                     msg.To   = m["ToUserName"].ToString();
                     msg.Msg  = m["Content"].ToString();
                     msg.Type = int.Parse(m["MsgType"].ToString());
                     msgList.Add(msg);
                 }
                 return(msgList);
             }
         }
         return(null);
     }
     catch (Exception ex)
     {
         return(null);
     }
 }
Esempio n. 4
0
 /// <summary>
 /// 登录扫描检测 返回非空字符串为登录成功,该返回字符串用于请求 GetSidUinAndCookie 参数
 /// </summary>
 public string LoginScanDetection()
 {
     try
     {
         WXResult wxResult = new WXResult();
         object   _object  = _loginService.LoginScanDetection();
         if (_object is string)  //已扫描二维码并完成登录
         {
             _loginService.tip = 0;
             //登录获取sid、uin
             _loginService.GetSidUin(_object as string);
             return(_object as string);
         }
         return("");
     }
     catch (Exception ex)
     {
         return(null);
     }
 }
Esempio n. 5
0
        /// <summary>
        /// 获取用户信息——包括微擎方式
        /// </summary>
        /// <param name="code"></param>
        /// <param name="iv"></param>
        /// <param name="encryptedData"></param>
        /// <param name="appID"></param>
        /// <param name="appSecret"></param>
        /// <returns></returns>
        public static WXAccountInfo ProcessRequest(string code, string iv, string encryptedData, string appID = WxPayConfig.APPID, string appSecret = WxPayConfig.APPSECRET)
        {
            Console.WriteLine("进入登陆:&&&");
            string        grant_type = "authorization_code";
            WXAccountInfo userInfo   = new WXAccountInfo();
            //向微信服务端 使用登录凭证 code 获取 session_key 和 openid
            string url  = $"https://api.weixin.qq.com/sns/jscode2session?appid={appID}&secret={appSecret}&js_code={code}&grant_type={grant_type}";
            string type = "utf-8";

            WXAccountInfoGetter GetUsersHelper = new WXAccountInfoGetter();
            string j = WXAccountInfoGetter.GetUrltoHtml(url, type);//获取微信服务器返回字符串

            Console.WriteLine("登陆返回参数:" + j);
            //将字符串转换为json格式
            JObject jo = (JObject)JsonConvert.DeserializeObject(j);

            WXResult res = new WXResult();

            try
            {
                //微信服务器验证成功
                res.openid      = jo["openid"].ToString();
                res.session_key = jo["session_key"].ToString();
            }
            catch (Exception)
            {
                //微信服务器验证失败
                res.errcode = jo["errcode"].ToString();
                res.errmsg  = jo["errmsg"].ToString();
            }
            if (!string.IsNullOrEmpty(res.openid))
            {
                //用户数据解密
                WXAccountInfoGetter.AesIV  = iv;
                WXAccountInfoGetter.AesKey = res.session_key;
                Console.WriteLine("iv:{0},aeskey:{1}", iv, res.session_key);
                string result = GetUsersHelper.AESDecrypt(encryptedData);

                Console.WriteLine("result:" + result);
                //存储用户数据
                JObject _usrInfo = (JObject)JsonConvert.DeserializeObject(result);


                userInfo.OpenId = _usrInfo["openId"].ToString();
                Console.WriteLine("openId:" + userInfo.OpenId);

                try //部分验证返回值中没有unionId
                {
                    userInfo.UnionId = _usrInfo["unionId"].ToString();
                }
                catch (Exception)
                {
                    userInfo.UnionId = "unionId";
                }
                Console.WriteLine("unionId:" + userInfo.UnionId);

                userInfo.NickName  = _usrInfo["nickName"].ToString();
                userInfo.Gender    = Convert.ToInt16(_usrInfo["gender"].ToString());
                userInfo.City      = _usrInfo["city"].ToString();
                userInfo.Province  = _usrInfo["province"].ToString();
                userInfo.Country   = _usrInfo["country"].ToString();
                userInfo.AvatarUrl = _usrInfo["avatarUrl"].ToString();

                object watermark = _usrInfo["watermark"].ToString();
                object appid     = _usrInfo["watermark"]["appid"].ToString();
                object timestamp = _usrInfo["watermark"]["timestamp"].ToString();
            }
            return(userInfo);
        }