/// <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(); }
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); }
/// <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)); }
/// <summary> /// 初始化结果 /// </summary> protected virtual void InitResult() { Request?.EnableRewind(); var sm = Request?.Body;; var response = sm?.ToContent(); Result = new WechatpayResult <TResponse>(Config, response, Request); }
/// <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); }
/// <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)); }
/// <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); }
/// <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()); }
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); }
/// <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 }); }
/// <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()); }
/// <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()); }
/// <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); }
/// <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()); }
/// <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(); }
/// <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(); }
/// <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()); }
/// <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(); }
/// <summary> /// 获取结果 /// </summary> /// <param name="result">支付结果</param> protected override string GetResult(WechatpayResult result) { return(result.GetParam("code_url")); }
/// <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 }); }
/// <summary> /// 创建关闭订单结果 /// </summary> private async Task <WechatpayCloseOrderResult> CreateResult(WechatpayResult result) { var success = (await result.ValidateAsync()).IsValid; return(new WechatpayCloseOrderResult(success, result)); }
/// <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); }
/// <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); }
/// <summary> /// 初始化支付结果 /// </summary> private void InitResult() { _result = new WechatpayResult(_configProvider, GetRequest()); }