/// <summary>
        /// 请求结果
        /// </summary>
        protected virtual async Task <RefundResult> RequstResult(WechatpayConfig config, WechatpayRefundParameterBuilder builder)
        {
            var response = await Request(config, builder);

            var result = new WechatpayRefundResult(ConfigProvider, response);

            WriteLog(config, builder, result);
            return(await CreateResult(config, builder, result));
        }
 /// <summary>
 /// 获取结果
 /// </summary>
 /// <param name="config">支付配置</param>
 /// <param name="builder">参数生成器</param>
 /// <param name="result">支付结果</param>
 protected string GetResult(WechatpayConfig config, WechatpayRefundParameterBuilder builder, WechatpayRefundResult result)
 {
     return(new WechatpayParameterBuilder(config)
            .Add("appId", config.AppId)
            .Add("timeStamp", Time.GetUnixTimestamp().SafeString())
            .Add("nonceStr", Id.Guid())
            .Add("signType", config.SignType.Description())
            .SignParamName("paySign")
            .ToJson());
 }
        /// <summary>
        /// 创建退款结果
        /// </summary>
        /// <param name="config">支付配置</param>
        /// <param name="builder">参数生成器</param>
        /// <param name="result">支付结果</param>
        protected virtual async Task <RefundResult> CreateResult(WechatpayConfig config, WechatpayRefundParameterBuilder builder, WechatpayRefundResult result)
        {
            var success = (await result.ValidateAsync()).IsValid;

            return(new RefundResult(success, result.GetPrepayId(), result.Raw)
            {
                Parameter = builder.ToString(),
                Message = result.GetReturnMessage(),
                Result = success ? GetResult(config, builder, result) : null
            });
        }