Exemplo n.º 1
0
 /// <summary>
 /// 初始化微信支付关闭订单结果
 /// </summary>
 /// <param name="success">是否成功</param>
 /// <param name="result">请求结果</param>
 public WechatpayCloseOrderResult(bool success, WechatpayResult result)
 {
     Success   = success;
     ErrorCode = result.GetErrorCode();
     Raw       = result.Raw;
     Parameter = result.Builder.ToString();
 }
Exemplo n.º 2
0
        public async Task Test()
        {
            //设置返回响应
            var response = @"<xml>
                                <return_code><![CDATA[SUCCESS]]></return_code>
                                <return_msg><![CDATA[OK]]></return_msg>
                                <appid><![CDATA[wx9b90e1788b39fec6]]></appid>
                                <mch_id><![CDATA[1985518532]]></mch_id>
                                <nonce_str><![CDATA[wrKodsjUFk34qYno]]></nonce_str>
                                <sign><![CDATA[5F721ADF22DD2C60B4E171228F8DA36E]]></sign>
                                <result_code><![CDATA[SUCCESS]]></result_code>
                                <prepay_id><![CDATA[wx141217433636466fe2c3b2a10139084028]]></prepay_id>
                                <trade_type><![CDATA[APP]]></trade_type>
                            </xml>";

            //操作
            var result = new WechatpayResult(new TestConfigProvider(), response);

            //验证
            Assert.Equal("SUCCESS", result.GetReturnCode());
            Assert.Equal("OK", result.GetReturnMessage());
            Assert.Equal("wx9b90e1788b39fec6", result.GetAppId());
            Assert.Equal("1985518532", result.GetMerchantId());
            Assert.Equal("wrKodsjUFk34qYno", result.GetNonce());
            Assert.Equal("5F721ADF22DD2C60B4E171228F8DA36E", result.GetSign());
            Assert.Equal("SUCCESS", result.GetResultCode());
            Assert.Equal("wx141217433636466fe2c3b2a10139084028", result.GetPrepayId());
            Assert.Equal("APP", result.GetTradeType());
            var isValid = (await result.ValidateAsync()).IsValid;

            Assert.True(isValid);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 请求结果
        /// </summary>
        /// <param name="config">微信支付配置</param>
        /// <param name="builder">微信支付参数生成器</param>
        /// <returns></returns>
        protected virtual async Task <PayResult> RequestResult(WechatpayConfig config, WechatpayParameterBuilder builder)
        {
            var result = new WechatpayResult(ConfigProvider, await Request(config, builder));

            WriteLog(config, builder, result);
            return(await CreateResult(config, builder, result));
        }
Exemplo n.º 4
0
        /// <summary>
        /// 初始化结果
        /// </summary>
        protected virtual void InitResult()
        {
            Request?.EnableRewind();
            var sm       = Request?.Body;;
            var response = sm?.ToContent();

            Result = new WechatpayResult <TResponse>(Config, response, Request);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 请求结果
        /// </summary>
        protected async Task <WechatpayResult <TResponse> > RequstResult <TResponse>(WechatpayConfig config, WechatpayParameterBuilder builder) where TResponse : WechatpayResponse
        {
            var result = new WechatpayResult <TResponse>(Config, await Request(config, builder));

            WriteLog(config, builder, result);
            await ValidateResult(result);

            return(result);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 请求失败
        /// </summary>
        private async Task <WechatpayDownloadBillResult> Fail(string response, WechatpayConfig config, WechatpayParameterBuilder builder)
        {
            var result = new WechatpayResult(ConfigProvider, response, config, builder);

            WriteLog(config, builder, result);
            var success = (await result.ValidateAsync()).IsValid;

            return(new WechatpayDownloadBillResult(success, result));
        }
Exemplo n.º 7
0
        /// <summary>
        /// 请求结果
        /// </summary>
        protected virtual async Task <WechatpayResult> RequstResult(WechatpayConfig config, WechatpayParameterBuilder builder)
        {
            var response = await SendRequest(config, builder);

            var result = new WechatpayResult(ConfigProvider, response, config, builder);

            WriteLog(config, builder, result);
            return(result);
        }
Exemplo n.º 8
0
 /// <summary>
 /// 获取结果
 /// </summary>
 /// <param name="result">支付结果</param>
 protected override string GetResult(WechatpayResult result)
 {
     return(new WechatpayParameterBuilder(result.Config)
            .Add("appId", result.Config.AppId)
            .Add("timeStamp", Time.GetUnixTimestamp().SafeString())
            .Add("nonceStr", Id.Guid())
            .Package($"prepay_id={result.GetPrepayId()}")
            .Add("signType", result.Config.SignType.Description())
            .ToJson());
 }
Exemplo n.º 9
0
        protected override void InitResult()
        {
            //建议使用 WechatRefundQueryService
            //TODO解密 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_16&index=10
            Request?.EnableRewind();
            var sm   = Request?.Body;
            var body = sm?.ToContent();

            Result = new WechatpayResult <WechatRefundNotifyResponse>(Config, body, Request);
        }
Exemplo n.º 10
0
        /// <summary>
        /// 创建支付结果
        /// </summary>
        /// <param name="result">支付结果</param>
        protected virtual async Task <PayResult> CreateResult(WechatpayResult result)
        {
            var success = (await result.ValidateAsync()).IsValid;

            return(new PayResult(success, result.GetPrepayId(), result.Raw)
            {
                Parameter = result.Builder.ToString(),
                Message = result.GetReturnMessage(),
                Result = success ? GetResult(result) : null
            });
        }
Exemplo n.º 11
0
 /// <summary>
 /// 获取结果
 /// </summary>
 /// <param name="result">支付结果</param>
 protected override string GetResult(WechatpayResult result)
 {
     return(new WechatpayParameterBuilder(result.Config)
            .AppId(result.Config.AppId)
            .PartnerId(result.Config.MerchantId)
            .Add("prepayid", result.GetPrepayId())
            .Add("noncestr", Id.Guid())
            .Timestamp()
            .Package()
            .ToJson());
 }
Exemplo n.º 12
0
 /// <summary>
 /// 获取结果
 /// </summary>
 /// <param name="config">微信支付配置</param>
 /// <param name="builder">微信支付参数生成器</param>
 /// <param name="result">微信支付结果</param>
 /// <returns></returns>
 protected override string GetResult(WechatpayConfig config, WechatpayParameterBuilder builder, WechatpayResult result)
 {
     return(result.GetCodeUrl());
 }
 /// <summary>
 /// 获取结果
 /// </summary>
 /// <param name="config">支付配置</param>
 /// <param name="builder">参数生成器</param>
 /// <param name="wechatpayResult">支付结果</param>
 protected override string GetResult(WechatpayConfig config, WechatpayParameterBuilder builder, WechatpayResult wechatpayResult)
 {
     return(new WechatpayParameterBuilder(config)
            .AppId(config.AppId)
            .PartnerId(config.MerchantId)
            .Add("prepayid", wechatpayResult.GetPrepayId())
            .Add("noncestr", System.Guid.NewGuid().ToString("N"))
            .Timestamp()
            .Package()
            .ToJson());
 }
Exemplo n.º 14
0
        /// <summary>
        /// 写日志
        /// </summary>
        protected virtual void WriteLog <TResponse>(WechatpayConfig config, WechatpayParameterBuilder builder, WechatpayResult <TResponse> result) where TResponse : WechatpayResponse
        {
            var logContent = LogContentBuilder.CreateLogContentBuilder()
                             .SetEventId(Guid.NewGuid()).SetMoudle(GetType().FullName).SetTitle("微信支付")
                             .AddContent($"支付方式 : {GetType()}")
                             .AddContent($"支付网关 : {config.GetOrderUrl()}")
                             .AddContent($"原始响应:{result?.Raw}")
                             .Build();

            Logger.LogInfo(logContent);
        }
Exemplo n.º 15
0
 /// <summary>
 /// 获取结果
 /// </summary>
 /// <param name="config">微信支付配置</param>
 /// <param name="builder">微信支付参数生成器</param>
 /// <param name="result">微信支付结果</param>
 /// <returns></returns>
 protected virtual string GetResult(WechatpayConfig config, WechatpayParameterBuilder builder,
                                    WechatpayResult result)
 {
     return(result.GetPrepayId());
 }
Exemplo n.º 16
0
 /// <summary>
 /// 验证返回结果
 /// </summary>
 /// <param name="config">支付配置</param>
 /// <param name="builder">参数生成器</param>
 /// <param name="result">支付结果</param>
 protected virtual async Task ValidateResult <TResponse>(WechatpayResult <TResponse> result) where TResponse : WechatpayResponse
 {
     var validationResult = await result.ValidateAsync();
 }
Exemplo n.º 17
0
        /// <summary>
        /// 写日志
        /// </summary>
        /// <param name="config">微信支付配置</param>
        /// <param name="builder">微信支付参数生成器</param>
        /// <param name="result">微信支付结果</param>
        protected void WriteLog(WechatpayConfig config, WechatpayParameterBuilder builder, WechatpayResult result)
        {
            var log = GetLog();

            if (log.IsTraceEnabled == false)
            {
                return;
            }
            log.Class(GetType().FullName)
            .Caption("微信支付")
            .Content($"支付方式 : {GetPayWay().Description()}")
            .Content($"支付网关 : {config.GetOrderUrl()}")
            .Content("请求参数:")
            .Content(builder.ToXml())
            .Content()
            .Content("返回结果:")
            .Content(result.GetParams())
            .Content()
            .Content("原始响应: ")
            .Content(result.Raw)
            .Trace();
        }
Exemplo n.º 18
0
 /// <summary>
 /// 获取结果
 /// </summary>
 /// <param name="config">支付配置</param>
 /// <param name="builder">参数生成器</param>
 /// <param name="result">支付结果</param>
 protected string GetResult(WechatpayConfig config, WechatpayRefundParameterBuilder builder, WechatpayResult 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());
 }
Exemplo n.º 19
0
        /// <summary>
        /// 写日志
        /// </summary>
        protected void WriteLog(WechatpayConfig config, WechatpayRefundParameterBuilder builder, WechatpayResult result)
        {
            var log = GetLog();

            if (log.IsTraceEnabled == false)
            {
                return;
            }
            log.Class(GetType().FullName)
            .Caption("微信退款")
            .Content($"退款Api地址 : {config.GetRefundUrl()}")
            .Content("请求参数:")
            .Content(builder.ToXml())
            .Content()
            .Content("返回结果:")
            .Content(result.GetParams())
            .Content()
            .Content("原始响应: ")
            .Content(result.Raw)
            .Trace();
        }
Exemplo n.º 20
0
 /// <summary>
 /// 获取结果
 /// </summary>
 /// <param name="result">支付结果</param>
 protected override string GetResult(WechatpayResult result)
 {
     return(result.GetParam("code_url"));
 }
Exemplo n.º 21
0
        /// <summary>
        /// 创建退款结果
        /// </summary>
        /// <param name="config">支付配置</param>
        /// <param name="builder">参数生成器</param>
        /// <param name="result">支付结果</param>
        protected virtual async Task <RefundResult> CreateResult(WechatpayConfig config, WechatpayRefundParameterBuilder builder, WechatpayResult result)
        {
            var success = (await result.ValidateAsync()).IsValid;

            return(new RefundResult(success, result.GetRefundId(), result.Raw)
            {
                Parameter = builder.ToString(),
                Message = result.GetReturnMessage(),
                Result = success ? GetResult(config, builder, result) : null
            });
        }
Exemplo n.º 22
0
        /// <summary>
        /// 创建关闭订单结果
        /// </summary>
        private async Task <WechatpayCloseOrderResult> CreateResult(WechatpayResult result)
        {
            var success = (await result.ValidateAsync()).IsValid;

            return(new WechatpayCloseOrderResult(success, result));
        }
Exemplo n.º 23
0
 /// <summary>
 /// 获取结果
 /// </summary>
 /// <param name="result">支付结果</param>
 protected virtual string GetResult(WechatpayResult result)
 {
     return(result.GetPrepayId());
 }
 protected override void InitResult()
 {
     //建议使用 WechatRefundQueryService
     //TODO解密 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_16&index=10
     Result = new WechatpayResult(ConfigProvider, Web.Body);
 }
 /// <summary>
 /// 初始化支付结果
 /// </summary>
 protected virtual void InitResult()
 {
     Result = new WechatpayResult(ConfigProvider, Web.Body);
 }
Exemplo n.º 26
0
 /// <summary>
 /// 写日志
 /// </summary>
 protected void WriteLog(WechatpayConfig config, WechatpayParameterBuilder builder, WechatpayResult result)
 {
     Logger.Error(GetType().FullName + " 微信支付:"
                  + $"支付方式 : {EnumUtil.GetEnumDescription(GetPayWay())}"
                  + $"支付网关 : {config.GetOrderUrl()}"
                  + "请求参数:" + builder.ToXml()
                  + "返回结果:" + result.GetParams()
                  + "原始请求:" + builder.ToString()
                  + "原始响应: " + result.Raw
                  );
 }
 /// <summary>
 /// 初始化支付结果
 /// </summary>
 private void InitResult()
 {
     _result = new WechatpayResult(_configProvider, Web.Body);
 }
Exemplo n.º 28
0
 /// <summary>
 /// 初始化支付结果
 /// </summary>
 private void InitResult()
 {
     _result = new WechatpayResult(_configProvider, GetRequest());
 }