Ejemplo n.º 1
0
        public static ShareInfo GetPayInfo(string prepayid)
        {
            var shareInfo = new ShareInfo();

            //检查是否已经注册jssdk
            if (!JsApiTicketContainer.CheckRegistered(ConfigHelper.WeChatAppId))
            {
                JsApiTicketContainer.Register(ConfigHelper.WeChatAppId, ConfigHelper.WeChatSecret);
            }
            JsApiTicketResult jsApiTicket = JsApiTicketContainer.GetJsApiTicketResult(ConfigHelper.WeChatAppId);
            JSSDKHelper       jssdkHelper = new JSSDKHelper();

            shareInfo.Ticket    = jsApiTicket.ticket;
            shareInfo.CorpId    = ConfigHelper.WeChatAppId.ToLower();
            shareInfo.Noncestr  = JSSDKHelper.GetNoncestr().ToLower();
            shareInfo.Timestamp = JSSDKHelper.GetTimestamp().ToLower();
            shareInfo.Package   = "prepay_id=" + prepayid.ToLower();

            RequestHandler requestHandler = new RequestHandler(HttpContext.Current);

            requestHandler.SetParameter("appId", shareInfo.CorpId);
            requestHandler.SetParameter("timeStamp", shareInfo.Timestamp);
            requestHandler.SetParameter("nonceStr", shareInfo.Noncestr);
            requestHandler.SetParameter("package", shareInfo.Package);
            requestHandler.SetParameter("signType", "MD5");

            requestHandler.SetKey(tenPayV3Info.Key);
            requestHandler.CreateMd5Sign();
            requestHandler.GetRequestURL();
            requestHandler.CreateSHA1Sign();
            shareInfo.PaySign = (requestHandler.GetAllParameters()["sign"]).ToString();
            return(shareInfo);
        }
        /// <summary>
        /// 【异步方法】获取可用Ticket
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="getNewTicket">是否强制重新获取新的Ticket</param>
        /// <returns></returns>
        public static async Task <JsApiTicketResult> GetWxCardApiTicketResultAsync(string appId,
                                                                                   bool getNewTicket = false)
        {
            if (!CheckRegistered(appId))
            {
                throw new UnRegisterAppIdException(null, "此appId尚未注册,请先使用WxCardApiTicketContainer.Register完成注册(全局执行一次即可)!");
            }

            WxCardApiTicketBag wxCardApiTicketBag = TryGetItem(appId);

            using (Cache.BeginCacheLock(LockResourceName, appId))//同步锁
            {
                if (getNewTicket || wxCardApiTicketBag.WxCardApiTicketExpireTime <= DateTime.Now)
                {
                    //已过期,重新获取
                    JsApiTicketResult wxCardApiTicketResult = await CommonApi.GetTicketAsync(wxCardApiTicketBag.AppId,
                                                                                             wxCardApiTicketBag.AppSecret);

                    wxCardApiTicketBag.WxCardApiTicketResult     = wxCardApiTicketResult;
                    wxCardApiTicketBag.WxCardApiTicketExpireTime = DateTime.Now.AddSeconds(wxCardApiTicketBag.WxCardApiTicketResult.expires_in);
                    Update(wxCardApiTicketBag);
                }
            }
            return(wxCardApiTicketBag.WxCardApiTicketResult);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 【异步方法】获取可用Ticket
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="getNewTicket">是否强制重新获取新的Ticket</param>
        /// <returns></returns>
        public static async Task <JsApiTicketResult> GetWxCardApiTicketResultAsync(string appId,
                                                                                   bool getNewTicket = false)
        {
            if (!await CheckRegisteredAsync(appId).ConfigureAwait(false))
            {
                throw new UnRegisterAppIdException(null, "此appId尚未注册,请先使用WxCardApiTicketContainer.Register完成注册(全局执行一次即可)!");
            }

            WxCardApiTicketBag wxCardApiTicketBag = await TryGetItemAsync(appId).ConfigureAwait(false);

            using (await Cache.BeginCacheLockAsync(LockResourceName, appId).ConfigureAwait(false))//同步锁
            {
                if (getNewTicket || wxCardApiTicketBag.WxCardApiTicketExpireTime <= SystemTime.Now)
                {
                    //已过期,重新获取
                    JsApiTicketResult wxCardApiTicketResult = await CommonApi.GetTicketAsync(wxCardApiTicketBag.AppId,
                                                                                             wxCardApiTicketBag.AppSecret, "wx_card").ConfigureAwait(false);

                    wxCardApiTicketBag.WxCardApiTicketResult     = wxCardApiTicketResult;
                    wxCardApiTicketBag.WxCardApiTicketExpireTime = SystemTime.Now.AddSeconds(wxCardApiTicketBag.WxCardApiTicketResult.expires_in);
                    await UpdateAsync(wxCardApiTicketBag, null).ConfigureAwait(false);
                }
            }
            return(wxCardApiTicketBag.WxCardApiTicketResult);
        }
Ejemplo n.º 4
0
        protected WxpayInfo wxjsApiPay()
        {
            string            wxkey     = "s_wx_key_ticket";
            string            timeStamp = TenPayV3Util.GetTimestamp();
            string            nonceStr  = TenPayV3Util.GetNoncestr();
            JsApiTicketResult wxTicket  = CacheManager.Instance.Get <JsApiTicketResult>(wxkey);

            if (wxTicket == null)
            {
                wxTicket = CommonApi.GetTicket(Appid, Appkey);
                CacheManager.Instance.Set(wxkey, wxTicket, 0, wxTicket.expires_in - 120);
            }
            string url = Request.Url.AbsoluteUri;

            Senparc.Weixin.MP.TenPayLib.RequestHandler nativeHandler = new Senparc.Weixin.MP.TenPayLib.RequestHandler(null);
            nativeHandler.SetParameter("jsapi_ticket", wxTicket.ticket);
            nativeHandler.SetParameter("noncestr", nonceStr);
            nativeHandler.SetParameter("timestamp", timeStamp);
            nativeHandler.SetParameter("url", url);
            string sign = nativeHandler.CreateSHA1Sign();

            return(new WxpayInfo()
            {
                AppId = Appid,
                Noncestr = nonceStr,
                Timestamp = timeStamp,
                Signature = sign
            });
        }
Ejemplo n.º 5
0
        /// <summary>
        /// TencentToken
        /// </summary>
        /// <returns></returns>
        public async Task <JsApiTicketResult> TencentTicket(string type, string systemToken)
        {
            var url = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type={1}",
                                    systemToken, type);
            JsApiTicketResult result = await Senparc.CO2NET.HttpUtility.Get.GetJsonAsync <JsApiTicketResult>(url);

            return(result);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 获取调用微信JS接口的临时票据
        /// </summary>
        /// <param name="accessToken"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static JsApiTicketResult GetTicket(string accessToken, string type = "jsapi")
        {
            var url = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type={1}",
                                    accessToken, type);

            JsApiTicketResult result = Get.GetJson <JsApiTicketResult>(url);

            return(result);
        }
Ejemplo n.º 7
0
 public JsApiTicketResult GetTicket()
 {
     if (Qyinfo.IsUseWX == "Y")
     {
         JsApiTicketResult js = CommonApi.GetTicket(Qyinfo.corpId.Trim(), Qyinfo.corpSecret.Trim());
         return(js);
     }
     return(null);
 }
Ejemplo n.º 8
0
        //////////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1421823488&token=&lang=zh_CN
        /// 获取调用微信JS接口的临时票据 OPEN
        /// </summary>
        /// <param name="authorizerAccessToken">authorizer_access_token</param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static JsApiTicketResult GetJsApiTicket(string authorizerAccessToken, string type = "jsapi")
        {
            //获取第三方平台的授权公众号token(公众号授权给第三方平台后,第三方平台通过“接口说明”中的api_authorizer_token接口得到的token)
            var url = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type={1}",
                                    authorizerAccessToken, type);

            JsApiTicketResult result = Get.GetJson <JsApiTicketResult>(url);

            return(result);
        }
Ejemplo n.º 9
0
        //////////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1421823488&token=&lang=zh_CN
        /// 【异步方法】获取调用微信JS接口的临时票据 OPEN
        /// </summary>
        /// <param name="authorizerAccessToken">authorizer_access_token</param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static async Task <JsApiTicketResult> GetJsApiTicketAsync(string authorizerAccessToken, string type = "jsapi")
        {
            //获取第三方平台的授权公众号token(公众号授权给第三方平台后,第三方平台通过“接口说明”中的api_authorizer_token接口得到的token)
            var url = string.Format(Config.ApiMpHost + "/cgi-bin/ticket/getticket?access_token={0}&type={1}",
                                    authorizerAccessToken.AsUrlData(), type.AsUrlData());

            JsApiTicketResult result = await CommonJsonSend.SendAsync <JsApiTicketResult>(null, url, null, CommonJsonSendType.GET).ConfigureAwait(false);

            return(result);
        }
Ejemplo n.º 10
0
        public static JsApiTicketResult GetJsApiTicket(string authorizerAccessToken, string type = "jsapi")
        {
            //获取第三方平台的授权公众号token(公众号授权给第三方平台后,第三方平台通过“接口说明”中的api_authorizer_token接口得到的token)
            var url = string.Format(Config.ApiMpHost + "/cgi-bin/ticket/getticket?access_token={0}&type={1}",
                                    authorizerAccessToken.AsUrlData(), type.AsUrlData());

            JsApiTicketResult result = Get.GetJson <JsApiTicketResult>(url);

            return(result);
        }
Ejemplo n.º 11
0
        public static JsApiTicketResult GetTicketByAccessToken(string accessTokenOrAppId, string type = "jsapi")
        {
            return(ApiHandlerWapper.TryCommonApi(accessToken =>
            {
                var url = string.Format(Config.ApiMpHost + "/cgi-bin/ticket/getticket?access_token={0}&type={1}",
                                        accessToken.AsUrlData(), type.AsUrlData());

                JsApiTicketResult result = CommonJsonSend.Send <JsApiTicketResult>(null, url, null, CommonJsonSendType.GET);
                return result;
            }, accessTokenOrAppId));
        }
Ejemplo n.º 12
0
        public static JsApiTicketResult GetTicketByAccessToken(string accessTokenOrAppId, string type = "jsapi")
        {
            return(ApiHandlerWapper.TryCommonApi(accessToken =>
            {
                var url = string.Format(Config.ApiMpHost + "/cgi-bin/ticket/getticket?access_token={0}&type={1}",
                                        accessToken.AsUrlData(), type.AsUrlData());

                JsApiTicketResult result = CO2NET.HttpUtility.Get.GetJson <JsApiTicketResult>(url);
                return result;
            }, accessTokenOrAppId));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 【异步方法】获取调用微信JS接口的临时票据
        /// </summary>
        /// <param name="corpId"></param>
        /// <param name="corpSecret"></param>
        /// <returns></returns>
        public static async Task <JsApiTicketResult> GetTicketAsync(string corpId, string corpSecret)
        {
            var accessToken = GetToken(corpId, corpSecret).access_token;

            var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token={0}",
                                    accessToken.AsUrlData());

            JsApiTicketResult result = await Get.GetJsonAsync <JsApiTicketResult>(url);

            return(result);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// 获取调用微信JS接口的临时票据
        /// </summary>
        /// <param name="accessTokenOrAppId"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static JsApiTicketResult GetTicketByAccessToken(string accessTokenOrAppId, string type = "jsapi")
        {
            return(ApiHandlerWapper.TryCommonApi(accessToken =>
            {
                var url = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type={1}",
                                        accessToken.AsUrlData(), type.AsUrlData());

                JsApiTicketResult result = Get.GetJson <JsApiTicketResult>(url);
                return result;
            }, accessTokenOrAppId));
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 获取调用微信JS接口的临时票据
        /// </summary>
        /// <param name="corpId"></param>
        /// <param name="corpSecret"></param>
        /// <returns></returns>
        public static JsApiTicketResult GetTicket(string corpId, string corpSecret)
        {
            var accessToken = GetToken(corpId, corpSecret).access_token;

            var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token={0}",
                                    accessToken);

            JsApiTicketResult result = Get.GetJson <JsApiTicketResult>(url);

            return(result);
        }
Ejemplo n.º 16
0
        /// <summary>
        /// 获取调用微信JS接口的临时票据
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="secret"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static JsApiTicketResult GetTicket(string appId, string secret, string type = "jsapi")
        {
            var accessToken = AccessTokenContainer.TryGetToken(appId, secret);

            var url = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type={1}",
                                    accessToken, type);

            JsApiTicketResult result = GetMethod.GetJson <JsApiTicketResult>(url);

            return(result);
        }
Ejemplo n.º 17
0
        public static JsApiTicketResult GetTicket(string corpId, string corpSecret)
        {
            return(ApiHandlerWapper.TryCommonApi(accessToken =>
            {
                var url = string.Format(Config.ApiWorkHost + "/cgi-bin/get_jsapi_ticket?access_token={0}",
                                        accessToken.AsUrlData());

                JsApiTicketResult result = CommonJsonSend.Send <JsApiTicketResult>(null, url, null, CommonJsonSendType.GET);
                return result;
            }, AccessTokenContainer.BuildingKey(corpId, corpSecret)));
        }
Ejemplo n.º 18
0
        /// <summary>
        /// 获取调用微信JS接口的临时票据
        /// </summary>
        /// <param name="corpId"></param>
        /// <param name="corpSecret"></param>
        /// <returns></returns>
        public static JsApiTicketResult GetTicket(string corpId, string corpSecret)
        {
            var accessToken = AccessTokenContainer.TryGetToken(corpId, corpSecret);
            //var accessToken = GetToken(corpId, corpSecret).access_token;

            var url = string.Format(Config.ApiWorkHost + "/cgi-bin/get_jsapi_ticket?access_token={0}",
                                    accessToken.AsUrlData());

            JsApiTicketResult result = Get.GetJson <JsApiTicketResult>(url);

            return(result);
        }
Ejemplo n.º 19
0
        /// <summary>
        /// 获取调用微信JS接口的临时票据
        /// </summary>
        /// <param name="corpId"></param>
        /// <param name="corpSecret"></param>
        /// <param name="isAgentConfig">是否为“应用jsapi_ticket”,如果是某个特定应用,则输入 true(用于计算 agentConfig 的签名),否则为 false。参考:<see href="https://developer.work.weixin.qq.com/document/path/90506#14924"/></param>
        /// <returns></returns>
        public static JsApiTicketResult GetTicket(string corpId, string corpSecret, bool isAgentConfig)
        {
            return(ApiHandlerWapper.TryCommonApi(accessToken =>
            {
                //https://developer.work.weixin.qq.com/document/10029#%E8%8E%B7%E5%8F%96%E5%BA%94%E7%94%A8%E7%9A%84jsapi_ticket
                var url = isAgentConfig
                            ? $"{Config.ApiWorkHost}/cgi-bin/ticket/get?access_token={accessToken.AsUrlData()}&type=agent_config"
                            : $"{Config.ApiWorkHost}/cgi-bin/get_jsapi_ticket?access_token={accessToken.AsUrlData()}";

                JsApiTicketResult result = CommonJsonSend.Send <JsApiTicketResult>(null, url, null, CommonJsonSendType.GET);
                return result;
            }, AccessTokenContainer.BuildingKey(corpId, corpSecret)));
        }
Ejemplo n.º 20
0
        public static async Task <JsApiTicketResult> GetTicketAsync(string corpId, string corpSecret)
        {
            var accessToken = await AccessTokenContainer.TryGetTokenAsync(corpId, corpSecret);

            //var accessToken = GetToken(corpId, corpSecret).access_token;

            var url = string.Format(Config.ApiWorkHost + "/cgi-bin/get_jsapi_ticket?access_token={0}",
                                    accessToken.AsUrlData());

            JsApiTicketResult result = await CO2NET.HttpUtility.Get.GetJsonAsync <JsApiTicketResult>(url);

            return(result);
        }
Ejemplo n.º 21
0
        public string GetTicketByToken(string accessToken, string type = "jsapi", bool IsRemote = false)
        {
            string str = "";

            if (!string.IsNullOrWhiteSpace(accessToken))
            {
                JsApiTicketResult ticket = CommonApi.GetTicket(accessToken, type);
                if (ticket.errcode != ReturnCode.请求成功)
                {
                    object[] objArray = new object[] { "WXERR:[", ticket.errcode, "]", ticket.errmsg };
                    throw new Exception(string.Concat(objArray));
                }
                str = ticket.ticket;
            }
            return(str);
        }
Ejemplo n.º 22
0
        /// <summary>
        /// 更新jsapi_ticket
        /// </summary>
        public static bool Updatejsapiticket(string accesstoken, string username = "******", string strIp = "")
        {
            bool result = false;
            JsApiTicketResult jsapi_ticket = CommonApi.GetTicketByAccessToken(accesstoken);

            if (jsapi_ticket != null)
            {
                if (jsapi_ticket.ticket.Length > 0)
                {
                    CommonHelp.UpdateAppConfig("jsapi_ticket", jsapi_ticket.ticket);
                    new JH_Auth_LogB().InsertLog("WXFWHelper", "更新jsapi_ticket为" + jsapi_ticket.ticket, "WXFWHelper", username, username, 0, strIp);
                    result = true;
                }
            }
            return(result);
        }
Ejemplo n.º 23
0
        public static JsSdkUiPackage GetJsSdkUiPackage(string url)
        {
            long   timestamp = JSSDKHelper.GetTimestamp();
            string nonceStr  = JSSDKHelper.GetNoncestr();

            JsApiTicketResult ticket = new JsApiTicketResult();

            if (CacheFactory.Cache().GetCache <JsApiTicketResult>("jsapi_ticket") == null)
            {
                ticket = CommonApi.GetTicket(CORPID, _JsCorpSecret);
                CacheFactory.Cache().WriteCache(ticket, "jsapi_ticket", System.DateTime.Now.AddSeconds(3600));
            }
            else
            {
                ticket = CacheFactory.Cache().GetCache <JsApiTicketResult>("jsapi_ticket");
            }
            string         signature = JSSDKHelper.GetSignature(ticket.ticket, nonceStr, timestamp, url);
            JsSdkUiPackage result    = new JsSdkUiPackage(CORPID, timestamp.ToString(), nonceStr, signature);

            return(result);
        }
Ejemplo n.º 24
0
        /// <summary>
        ///【异步方法】 获取可用Ticket
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="getNewTicket">是否强制重新获取新的Ticket</param>
        /// <returns></returns>
        public static async Task <string> GetWxCardApiTicketAsync(string appId, bool getNewTicket = false)
        {
            JsApiTicketResult result = await GetWxCardApiTicketResultAsync(appId, getNewTicket).ConfigureAwait(false);

            return(result.ticket);
        }
Ejemplo n.º 25
0
        public string GetTicket(string appid, string appsecret)
        {
            int             num             = context.WeiXinBasicInfo.ToList().Count();
            WeiXinBasicInfo weiXinBasicInfo = null;

            if (num != 0)
            {
                weiXinBasicInfo = context.WeiXinBasicInfo.FirstOrDefault();
            }
            else
            {
                WeiXinBasicInfo weiXinBasicInfo1 = new WeiXinBasicInfo()
                {
                    TicketOutTime = DateTime.Now,
                    Ticket        = ""
                };
                weiXinBasicInfo             = weiXinBasicInfo1;
                weiXinBasicInfo.AppId       = "";
                weiXinBasicInfo.AccessToken = "";
                weiXinBasicInfo             = context.WeiXinBasicInfo.Add(weiXinBasicInfo);
                context.SaveChanges();
            }
            if (weiXinBasicInfo.TicketOutTime > DateTime.Now)
            {
                return(weiXinBasicInfo.Ticket);
            }
            JsApiTicketResult jsApiTicketResult = new JsApiTicketResult();

            try
            {
                string str = CommonApi.GetToken(appid, appsecret).access_token;
                weiXinBasicInfo.AccessToken = str;
                jsApiTicketResult           = CommonApi.GetTicket(str, "jsapi");
            }
            catch (Exception exception1)
            {
                Exception exception = exception1;
                if (jsApiTicketResult.errcode == ReturnCode.获取access_token时AppSecret错误或者access_token无效)
                {
                    Log.Info("请求Ticket出错,强制刷新acess_token", exception);
                    string str1 = CommonApi.GetToken(appid, appsecret).access_token;

                    weiXinBasicInfo.AccessToken = str1;
                    jsApiTicketResult           = CommonApi.GetTicket(str1, "jsapi");
                }
            }
            if (jsApiTicketResult.errcode != ReturnCode.请求成功)
            {
                throw new HimallException("请求微信接口出错");
            }
            if (jsApiTicketResult.expires_in > 3600)
            {
                jsApiTicketResult.expires_in = 3600;
            }
            weiXinBasicInfo.AppId = appid;
            DateTime now = DateTime.Now;

            weiXinBasicInfo.TicketOutTime = now.AddSeconds(jsApiTicketResult.expires_in);
            weiXinBasicInfo.Ticket        = jsApiTicketResult.ticket;
            try
            {
                context.Configuration.ValidateOnSaveEnabled = false;
                context.SaveChanges();
                context.Configuration.ValidateOnSaveEnabled = true;
            }
            catch (Exception exception3)
            {
                Exception exception2 = exception3;
                Log.Info("保存失败", (exception2.InnerException != null ? exception2.InnerException : exception2));
            }
            return(weiXinBasicInfo.Ticket);
        }
Ejemplo n.º 26
0
        /// <summary>
        /// 获取jssdk 里的临时票据
        /// </summary>
        /// <param name="wid"></param>
        /// <param name="error"></param>
        /// <returns></returns>
        public static string getJsApiTicket(int wid, out string error)
        {
            string atErr       = "";
            string accessToken = getAccessToken(wid, out atErr);

            if (atErr != "")
            {
                accessToken = FlushAccessToken(wid, out atErr);
            }
            if (accessToken == "")
            {
                error = "取accessToken值出现异常";
                WXLogs.AddLog(wid, "getJsApiTicket", "获得getJsApiTicket", "WeiXinPF.WeiXinComm.getJsApiTicket" + error);
                return("");
            }

            string token = "";

            error = "";
            try
            {
                wx_property_info  pBll = new wx_property_info();
                BLL.wx_userweixin wBll = new wx_userweixin();

                Model.wx_userweixin weixininfo = wBll.GetModel(wid);
                if (weixininfo.AppId == null || weixininfo.AppSecret == null || weixininfo.AppId.Trim().Length <= 0 || weixininfo.AppSecret.Trim().Length <= 0)
                {
                    error = "appId或者AppSecret未填写完全,请在[我的公众帐号]里补全信息!";
                    return("");
                }
                WeiXinPF.Model.wx_property_info wxProperty = new WeiXinPF.Model.wx_property_info();
                //第一次插入微信属性表
                if (!pBll.ExistsWid(wid, "JsApiTicket"))
                {
                    string type = "jsapi";
                    var    url  = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type={1}",
                                                accessToken, type);

                    JsApiTicketResult result = OneGulp.WeChat.HttpUtility.Get.GetJson <JsApiTicketResult>(url);
                    token = result.ticket;
                    //存入属性表
                    wxProperty.wid        = wid;
                    wxProperty.iName      = "JsApiTicket";
                    wxProperty.iContent   = token;
                    wxProperty.createDate = DateTime.Now;
                    wxProperty.expires_in = result.expires_in;
                    wxProperty.count      = 1;
                    pBll.Add(wxProperty);

                    return(token);
                }

                wxProperty = pBll.GetModelList("iName='JsApiTicket' and wid=" + wid)[0];
                double chajunSecond = (DateTime.Now - wxProperty.createDate.Value).TotalSeconds;

                if (chajunSecond >= wxProperty.expires_in)
                {  //从微信平台重新获得access_token
                    string type = "jsapi";
                    var    url  = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type={1}",
                                                accessToken, type);

                    JsApiTicketResult result = OneGulp.WeChat.HttpUtility.Get.GetJson <JsApiTicketResult>(url);
                    token = result.ticket;

                    //更新到数据库里
                    wxProperty.iContent   = token;
                    wxProperty.createDate = DateTime.Now;
                    wxProperty.expires_in = result.expires_in;
                    pBll.Update(wxProperty);
                }
                else
                {
                    token = wxProperty.iContent;
                }
            }
            catch (Exception ex)
            {
                error = "获得getJsApiTicket出错:" + ex.Message;
                WXLogs.AddLog(wid, "getJsApiTicket", "获得getJsApiTicket", "WeiXinPF.WeiXinComm.getJsApiTicket" + error);
            }
            return(token);
        }