public bool Save(WxTicketType wxTicketType, WxTicket ticket) { WxTicket wxTicket = GetWxTicket(wxTicketType); if (wxTicket == null) { wxTicket = new WxTicket(); wxTicket.Key = wxTicketType; } wxTicket.Ticket = ticket.Ticket; wxTicket.ExpireTime = ticket.ExpireTime; return(base.Save(wxTicket)); }
public async Task <bool> SaveAsync(WxTicketType wxTicketType, WxTicket ticket) { WxTicket wxTicket = await GetWxTicketAsync(wxTicketType); if (wxTicket == null) { wxTicket = new WxTicket(); wxTicket.Key = wxTicketType; } wxTicket.Ticket = ticket.Ticket; wxTicket.ExpireTime = ticket.ExpireTime; return(await base.SaveAsync(wxTicket)); }
public static async Task <WxPayData> GetJSSDKConfig() { JsApiConfig jsApiConfig = new JsApiConfig(); string appid = jsApiConfig.AppId; string secret = jsApiConfig.AppSecret; string timestamp = WxPayApi.GenerateTimeStamp(); string noncestr = WxPayApi.GenerateNonceStr(); string signature = ""; //签名算法 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 //1. 获取AccessToken(有效期7200秒,开发者必须在自己的服务全局缓存access_token) WxTicketHelper helper = new WxTicketHelper(); WxTicket wxticket = await helper.GetWxTicketAsync(WxTicketType.ACCESS_TOKEN); string access_token = string.Empty; if (wxticket == null || wxticket.ExpireTime < ConvertDateTimeInt(DateTime.Now)) { string url1 = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret; string result = HttpService.Get(url1); JsonData jd = JsonMapper.ToObject(result); if (!((System.Collections.IDictionary)jd).Contains("access_token")) { LogHelper.Error("access_token is null:" + result); return(null); } access_token = (string)jd["access_token"]; await helper.SaveAsync(WxTicketType.ACCESS_TOKEN, new WxTicket { Ticket = access_token, ExpireTime = ConvertDateTimeInt(DateTime.Now) + 7180 }); } else { access_token = wxticket.Ticket; } //2. 用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket) wxticket = await helper.GetWxTicketAsync(WxTicketType.TICKET); string ticket = string.Empty; if (wxticket == null || wxticket.ExpireTime < ConvertDateTimeInt(DateTime.Now)) { string url2 = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + access_token + "&type=jsapi"; string result2 = HttpService.Get(url2); JsonData jd2 = JsonMapper.ToObject(result2); if (!((System.Collections.IDictionary)jd2).Contains("ticket")) { return(null); } ticket = (string)jd2["ticket"]; await helper.SaveAsync(WxTicketType.TICKET, new WxTicket { Ticket = ticket, ExpireTime = ConvertDateTimeInt(DateTime.Now) + 7180 }); } else { ticket = wxticket.Ticket; } //3. 开始签名 Uri uri = HttpContext.Current.Request.Url; string now_url = (uri.Scheme + "://" + uri.Host + HttpContext.Current.Request.RawUrl).Split('#')[0]; string no_jiami = $"jsapi_ticket={ticket}&noncestr={noncestr}×tamp={timestamp}&url={now_url}"; //SHA1加密 signature = SHA1_Hash(no_jiami); WxPayData data = new WxPayData(); data.SetValue("appId", appid); data.SetValue("timestamp", timestamp); data.SetValue("nonceStr", noncestr); data.SetValue("signature", signature); return(data); }