Beispiel #1
0
        /// <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);
        }