Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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"));
        }