public async Task <T> ExecuteAsync <T>(IKdniaoRequest <T> request, KdniaoOptions options) where T : KdniaoResponse { OptionsValidate.Confirm(options); var dataSign = Encrypt.Compute(request.GetRequestData(), options.AppKey, "UTF-8"); var param = new KdniaoDictionary(request.GetParameters()) { { "EBusinessID", options.EBusinessID }, { "DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8) }, }; var reqUrl = options.IsSandBox == false?request.GetNotifyUrl() : request.GetSandBoxNotifyUrl(); var form = new FormUrlEncodedContent(param); var client = _httpClientFactory.CreateClient(nameof(KdniaoClient)); var response = await client.PostAsync(reqUrl, form); var result = await response.Content.ReadAsStringAsync(); return(JsonUtil.Deserialize <T>(result)); }