public string GetOpenId(string code)
        {
            string url   = AuthorizeUrl.GetUserTokenUrl(code);
            var    token = NetHelper.HttpGet <WeiXinUserToken>(url, SerializationType.Json);

            if (token.errcode == 0)
            {
                return(token.openid);
            }

            return(string.Empty);
        }
        public WeiXinUser GetUserInfo(string code)
        {
            string url   = AuthorizeUrl.GetUserTokenUrl(code);
            var    token = NetHelper.HttpGet <WeiXinUserToken>(url, SerializationType.Json);

            if (token.errcode == 0)
            {
                //成功
                url = AuthorizeUrl.GetUserInfoUrl(token.access_token, token.openid);
                var user = NetHelper.HttpGet <WeiXinUser>(url, SerializationType.Json);
                if (user.errcode == 0)
                {
                    return(user);
                }
            }

            return(null);
        }
        /// <summary>
        /// 获取JsApiTicket
        /// </summary>
        /// <returns></returns>
        //private string GetJsApiTicket()
        //{
        //    string ticket = string.Empty;
        //    var cacheKey = "TCWIRELESS.OPERATION.WeiXin.JsApiTicket";
        //    //先从缓存取,并判断是否过期
        //    var cacheValue = CacheHelper.GetValue<WXTokenModel>(cacheKey);
        //    if (cacheValue != null
        //        && DateTime.Now < cacheValue.OverTime)
        //    {
        //        return cacheValue.Ticket;
        //    }

        //    var token = GetAccessToken();
        //    var now = DateTime.Now;
        //    var url = string.Format(TicketUrl, token);
        //    var request = new TCHttpRequest(url);
        //    var result = request.PostDataToServer(HttpRequestMethod.Get, "utf-8");
        //    var model = JsonConvert.DeserializeObject<WXTokenModel>(result);
        //    model.OverTime = now.AddSeconds(model.Expires_In);
        //    CacheHelper.Set(cacheKey, model, TimeSpan.FromSeconds(model.Expires_In));
        //    ticket = model.Ticket;
        //    return ticket;
        //}

        /// <summary>
        /// 获取JsApi配置信息
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        //public virtual WXJsApiTicketModel GetWXJsApiConfig(string url)
        //{
        //    var model = new WXJsApiTicketModel
        //    {
        //        AppId = AppId,
        //        TimeStamp = DateTime.Now.ToTimeStamp(),//1414587457,
        //        NonceStr = Guid.NewGuid().ToString("N")//"Wm3WZYTPz0wzccnW"
        //    };
        //    var ticket = GetJsApiTicket();//"sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg";
        //    //组装
        //    var sigStr = string.Format("jsapi_ticket={0}&noncestr={1}&timestamp={2}&url={3}", ticket, model.NonceStr,
        //        model.TimeStamp, url);
        //    //sha1加密
        //    model.Signature = FormsAuthentication.HashPasswordForStoringInConfigFile(sigStr, "SHA1").ToLower();//f4d90daf4b3bca3078ab155816175ba34c443a7b
        //    return model;
        //}

        #endregion

        #region 发送消息
        public static void SendMsg(WeiXinMsg msg)
        {
            string token  = GetExistAccessToken();
            string url    = AuthorizeUrl.GetMsgSendUrl(token);
            var    result = NetHelper.HttpPost(url, msg, SerializationType.Json);
        }
 public static void SendTemplateMsg(object msg)
 {
     string token  = GetExistAccessToken();
     string url    = AuthorizeUrl.GetTemplateSendUrl(token);
     var    result = NetHelper.HttpPost(url, msg, SerializationType.Json);
 }
        private static SysAccessToken GetAccessToken()
        {
            string url = AuthorizeUrl.GetTokenUrl();

            return(NetHelper.HttpGet <SysAccessToken>(url, SerializationType.Json));
        }