public async Task <SystemToken> JSWecharTokenList(string TokenType, SystemTokenIn accesstoken) { var SystemTokens = _repository.GetAll().Where(a => a.IsDelete == false && a.TokenType == TokenType).OrderByDescending(a => a.CreatedOn); var TokenInfos = await SystemTokens.ToListAsync(); var TokenInfo = TokenInfos.FirstOrDefault(); if (TokenInfo != null) { // 如果数据超时了重新获取 if (TokenInfo.EffectiveTime <= DateTime.Now.AddMinutes(5)) { var Tokens = await tencentToken.TencentTicket("jsapi", accesstoken.access_token); TokenInfo.access_token = Tokens.ticket; TokenInfo.EffectiveLength = Tokens.expires_in; TokenInfo.EffectiveTime = DateTime.Now.AddSeconds(TokenInfo.EffectiveLength); TokenInfo.TokenJson = JsonHelper.ToJson(Tokens); TokenInfo.RefreshEffectiveTime = DateTime.Now; TokenInfo = await _repository.UpdateAsync(TokenInfo); } if (string.IsNullOrEmpty(TokenInfo.access_token)) { var Tokens = await tencentToken.TencentTicket("jsapi", accesstoken.access_token); TokenInfo.access_token = Tokens.ticket; TokenInfo.EffectiveLength = Tokens.expires_in; TokenInfo.EffectiveTime = DateTime.Now.AddSeconds(TokenInfo.EffectiveLength); TokenInfo.TokenJson = JsonHelper.ToJson(Tokens); TokenInfo.RefreshEffectiveTime = DateTime.Now; TokenInfo = await _repository.UpdateAsync(TokenInfo); } } else { // 当没数据时先获取数据再保存 var Tokens = await tencentToken.TencentTicket("jsapi", accesstoken.access_token); TokenInfo = new SystemToken(); TokenInfo.access_token = Tokens.ticket; TokenInfo.EffectiveLength = Tokens.expires_in; TokenInfo.EffectiveTime = DateTime.Now.AddSeconds(TokenInfo.EffectiveLength); TokenInfo.TokenJson = JsonHelper.ToJson(Tokens); TokenInfo.TokenType = TokenType; TokenInfo.YaeherPlatform = accesstoken.YaeherPlatform; TokenInfo.Appid = accesstoken.Appid; TokenInfo.AppSecret = accesstoken.AppSecret; TokenInfo.RefreshEffectiveTime = DateTime.Now; TokenInfo.Id = await _repository.InsertAndGetIdAsync(TokenInfo); } return(TokenInfo); }
public async Task <ObjectResultModule> WXJSTicket([FromBody] TencentTicletModel input) { if (!Commons.CheckSecret(input.Secret)) { this.ObjectResultModule.StatusCode = 422; this.ObjectResultModule.Message = "Wrong Secret"; this.ObjectResultModule.Object = ""; return(this.ObjectResultModule); } #region 获取微信系统参数 //SystemConfigsIn systemConfigsIn = new SystemConfigsIn(); //systemConfigsIn.AndAlso(t => !t.IsDelete && t.SystemType == "TencentWechar"); //var configs = await _systemConfigsService.SystemConfigsList(systemConfigsIn); //var tencentparam = configs.FirstOrDefault(); //TencentWeCharEntity tencentWeCharEntity = new TencentWeCharEntity(); //tencentWeCharEntity.grant_type = "authorization_code"; //tencentWeCharEntity.appid = tencentparam.AppID; //tencentWeCharEntity.secret = tencentparam.AppSecret; // SystemToken systemToken = new SystemToken(); // systemToken.TokenType = "Wechar"; var Tokens = await _systemTokenService.SystemTokenList("Wechar"); #endregion SystemTokenIn Token = new SystemTokenIn(); Token.access_token = Tokens.access_token; Token.Appid = Tokens.Appid; Token.AppSecret = Tokens.AppSecret; Token.YaeherPlatform = Tokens.YaeherPlatform; var JSTicketTokens = await _systemTokenService.JSWecharTokenList("JSWechar", Token); //var result = await tencentoken.TencentTicket("jsapi",Tokens.access_token); var nonce_str = TenPayUtil.GetNoncestr(); string timeStamp = TenPayUtil.GetTimestamp(); var requestHandler2 = new RequestHandler(null); requestHandler2.SetParameter("noncestr", nonce_str); requestHandler2.SetParameter("jsapi_ticket", JSTicketTokens.access_token); requestHandler2.SetParameter("timestamp", timeStamp); requestHandler2.SetParameter("url", input.url); ////SHA1加密签名 var sha1Sign = requestHandler2.CreateSHA1Sign(); TencentTicletResponseModel model = new TencentTicletResponseModel(); model.appId = Tokens.Appid; model.nonceStr = nonce_str; model.signature = sha1Sign; model.timestamp = timeStamp; return(new ObjectResultModule(model, 200, "success")); }