public async Task <Result> PreTest([FromBody] PreTestPatams testPatams)
        {
            try
            {
                var sw      = Stopwatch.StartNew();
                var appinfo = _appService.GetAppCache(testPatams.AppKey);
                if (appinfo == null)
                {
                    return new Result {
                               Status = false, Message = TaskResultStatus.AppKeyError.ToString()
                    }
                }
                ;
                var json = AESAlgorithm.Decrypt(testPatams.PreData, appinfo.AppSecret);
                //var p= _serializer.Deserialize<PreTestModel>(json);
                // var dto = p.MapTo<PreTestDto>();
                var dto  = new PreTestDto();
                var pArr = json.Split("&", StringSplitOptions.RemoveEmptyEntries);
                dto.AppKey     = pArr[0];
                dto.AppSecret  = pArr[1];
                dto.MerchantNo = pArr[2];
                var rlt = await _preTestService.PreTest(dto);

                sw.Stop();
                Logger.Info($"pretest time:{sw.ElapsedMilliseconds}");
                return(rlt);
            }
            catch (Exception ex)
            {
                Logger.Error("预验失败", ex);
                return(new Result {
                    Status = false
                });
            }
        }
        public async Task <Result> PreTest(PreTestDto dto)
        {
            try
            {
                var appInfo = _appService.GetAppCache(dto.AppKey);
                if (appInfo == null)
                {
                    return new Result {
                               Status = false, Message = TaskResultStatus.AppKeyError.ToString()
                    }
                }
                ;
                if (!VerifTimeStamp(dto.TimeStamp))
                {
                    return(await Task.FromResult(new Result { Status = false, Message = TaskResultStatus.TimeStampError.ToString() }));
                }
                var md5 = Hx.Security.Md5Getter.Get($"{appInfo.Id}{appInfo.AppSecret}{dto.TimeStamp}{appInfo.UserId}");
                if (!dto.Signature.ToLower().Equals(md5.ToLower()))
                {
                    return new Result {
                               Status = false, Message = TaskResultStatus.PreSignatureError.ToString()
                    }
                }
                ;

                //验证余额
                var ver = await VerifiedBalance(appInfo);

                if (!ver.Status)
                {
                    return(ver);
                }

                var dataContent = AESAlgorithm.Decrypt(dto.DataContent, appInfo.AppSecret);
                if (string.IsNullOrWhiteSpace(dataContent))
                {
                    return new Result {
                               Status = false, Message = TaskResultStatus.TokenError.ToString()
                    }
                }
                ;
                //计费
                await Balance(appInfo);

                //redis
                await _redisHelper.StringIncrementAsync(RedisKeyName.CreateUserAmountKey(appInfo.UserId), -1);

                //计费明细写数据库
                await BillingDetails(appInfo, dataContent);

                return(new Result {
                    Status = true, Message = TaskResultStatus.OK.ToString()
                });
            }
            catch (Exception ex)
            {
                Logger.Error($"PreTest error:{ex},dto:{Serializer.Serialize(dto)}");
                return(new Result {
                    Status = false, Message = TaskResultStatus.SystemError.ToString()
                });
            }
        }