public string GetTicket(string appid, string appsecret) { var model = DbFactory.Default.Get <WeiXinBasicInfo>().FirstOrDefault(); if (model != null && model.TicketOutTime > DateTime.Now && !string.IsNullOrEmpty(model.Ticket)) { return(model.Ticket); } lock (_locker) { model = DbFactory.Default.Get <WeiXinBasicInfo>().FirstOrDefault(); if (model != null && model.TicketOutTime > DateTime.Now && !string.IsNullOrEmpty(model.Ticket)) { return(model.Ticket); } if (model == null) { model = new WeiXinBasicInfo(); } var ticketRequest = new Senparc.Weixin.MP.Entities.JsApiTicketResult(); ticketRequest.errcode = Senparc.Weixin.ReturnCode.系统繁忙此时请开发者稍候再试; try { var accessToken = this.TryGetToken(appid, appsecret); model.AccessToken = accessToken; ticketRequest = CommonApi.GetTicket(accessToken); } catch (Exception e) { Log.Error("请求Ticket出错,强制刷新acess_token", e); var accessToken = this.TryGetToken(appid, appsecret, true); model.AccessToken = accessToken; ticketRequest = CommonApi.GetTicket(accessToken); } if (ticketRequest.errcode == Senparc.Weixin.ReturnCode.请求成功 && !string.IsNullOrEmpty(ticketRequest.ticket)) { if (ticketRequest.expires_in > 3600) { ticketRequest.expires_in = 3600; } model.AppId = appid; model.TicketOutTime = DateTime.Now.AddSeconds(ticketRequest.expires_in); model.Ticket = ticketRequest.ticket; DbFactory.Default.Save(model); return(model.Ticket); } else { throw new HimallException("请求微信接口出错"); } } }
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); }