/// <summary> /// Execute WeChatPay API request implementation /// </summary> /// <typeparam name="TModel"></typeparam> /// <typeparam name="TResponse"></typeparam> /// <param name="request"></param> /// <returns></returns> public async Task <TResponse> ExecuteAsync <TModel, TResponse>(BaseRequest <TModel, TResponse> request) { BuildParams(request); //var reqsign= request.GetStringValue("sign"); string result = await HttpUtil.PostAsync(request.RequestUrl, request.ToXml()); request.FromXml(result); var baseResponse = (BaseResponse)(object)request.ToObject <TResponse>(); baseResponse.Raw = result; var repsign = request.GetStringValue("sign"); if (string.IsNullOrEmpty(repsign) && !SignatureUtil.VerifyData(request, repsign)) { _logger.LogError("Signature verification failed:{0}", result); throw new FreePayException("Signature verification failed."); } return((TResponse)(object)baseResponse); }