From d6af4520eb948a5b1ab1c6c4352d9688513e1713 Mon Sep 17 00:00:00 2001 From: zhengyuxuan <zhengyuxuan1995> Date: 星期四, 27 三月 2025 16:26:18 +0800 Subject: [PATCH] fix:新增微信支付查询 --- LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml | 16 +++++ LifePayment/LifePayment.Domain/WeChat/WxClient.cs | 2 LifePayment/LifePayment.Domain/WeChat/IWxPayApi.cs | 2 LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs | 26 +++++++- LifePayment/LifePayment.Domain/Ali/IAliPayApi.cs | 2 LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs | 14 ++++ LifePayment/LifePayment.Domain/Ali/AliPayApi.cs | 11 ++- LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml | 11 +++ LifePayment/LifePayment.Domain/WeChat/WxPayApi.cs | 8 ++ LifePayment/LifePayment.Application/LifePay/LifePayService.cs | 27 +++++++- LifePayment/LifePayment.Domain.Shared/LifePaymentConstant.cs | 4 + 11 files changed, 109 insertions(+), 14 deletions(-) diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs index 1a065eb..652dc01 100644 --- a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs +++ b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs @@ -277,9 +277,21 @@ /// </summary> /// <param name="input"></param> /// <returns></returns> - Task<AlipayTradeQueryResponse> QueryGetAlipayTrade(OrderInQuiryInput input); + Task<AlipayTradeQueryResponse> QueryAlipayTrade(OrderInQuiryInput input); + /// <summary> + /// 鏌ヨ鏀粯瀹濋��娆捐鍗曚俊鎭� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + Task<AlipayTradeFastpayRefundQueryResponse> QueryAlipayTradeRefund(OrderInQuiryInput input); + /// <summary> + /// 鏌ヨ寰俊鏀粯璁㈠崟淇℃伅 + /// </summary> + /// <param name="outTradeNo"></param> + /// <returns></returns> + Task WxPayDomesticRefundsQuery(string outTradeNo); /// <summary> /// 璁剧疆鐢熸椿缂磋垂鏀粯绫诲瀷 diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs index 3645623..727e993 100644 --- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs +++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs @@ -821,13 +821,32 @@ } } - public async Task<AlipayTradeQueryResponse> QueryGetAlipayTrade(OrderInQuiryInput input) + /// <summary> + /// 鏌ヨ鏀粯瀹濇敮浠樿鍗曚俊鎭� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + public async Task<AlipayTradeQueryResponse> QueryAlipayTrade(OrderInQuiryInput input) { var result = await _aliPayApi.OrderInQuiry(input); return result; } + /// <summary> + /// 鏌ヨ鏀粯瀹濋��娆捐鍗曚俊鎭� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + public async Task<AlipayTradeFastpayRefundQueryResponse> QueryAlipayTradeRefund(OrderInQuiryInput input) + { + var result = await _aliPayApi.QueryAlipayTradeRefund(input); + return result; + } + public async Task WxPayDomesticRefundsQuery(string outTradeNo) + { + await _wxPayApi.WxPayDomesticRefundsQuery(outTradeNo); + } #endregion @@ -850,7 +869,7 @@ CheckExtensions.IfTrueThrowUserFriendlyException(channle == null, "娓犻亾涓嶅瓨鍦�"); var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.璇濊垂璁㈠崟 && x.PayStatus == LifePayStatusEnum.宸叉敮浠� - && x.LifePayOrderStatus == LifePayOrderStatusEnum.鍏呭�间腑 && x.OrderParamDetailJsonStr.Contains(input.ProductData.IspCode) + && x.LifePayOrderStatus == LifePayOrderStatusEnum.鍏呭�间腑 && x.OrderParamDetailJsonStr.Contains(input.ProductData.Phone)).ToListAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(repeatOrder.Count() > 0, "鎮ㄦ湁鍚屾埛鍙疯鍗曟鍦ㄥ厖鍊间腑锛岃鍕块噸澶嶅厖鍊�"); @@ -911,7 +930,7 @@ //var rate = await GetRate(); //CheckExtensions.IfTrueThrowUserFriendlyException(rate.IsNullOrEmpty(), "鏈厤缃姌鎵�"); var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.鐢佃垂璁㈠崟 && x.PayStatus == LifePayStatusEnum.宸叉敮浠� - && x.LifePayOrderStatus == LifePayOrderStatusEnum.鍏呭�间腑 && x.OrderParamDetailJsonStr.Contains(input.ProductData.ElectricType) + && x.LifePayOrderStatus == LifePayOrderStatusEnum.鍏呭�间腑 && x.OrderParamDetailJsonStr.Contains(input.ProductData.ElectricAccount)).ToListAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(repeatOrder.Count() > 0, "鎮ㄦ湁鍚屾埛鍙疯鍗曟鍦ㄥ厖鍊间腑锛岃鍕块噸澶嶅厖鍊�"); @@ -966,7 +985,7 @@ //var rate = await GetRate(); //CheckExtensions.IfTrueThrowUserFriendlyException(rate.IsNullOrEmpty(), "鏈厤缃姌鎵�"); var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.鐕冩皵璁㈠崟 && x.PayStatus == LifePayStatusEnum.宸叉敮浠� - && x.LifePayOrderStatus == LifePayOrderStatusEnum.鍏呭�间腑 && x.OrderParamDetailJsonStr.Contains(input.ProductData.GasOrgType) + && x.LifePayOrderStatus == LifePayOrderStatusEnum.鍏呭�间腑 && x.OrderParamDetailJsonStr.Contains(input.ProductData.GasAccount)).ToListAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(repeatOrder.Count() > 0, "鎮ㄦ湁鍚屾埛鍙疯鍗曟鍦ㄥ厖鍊间腑锛岃鍕块噸澶嶅厖鍊�"); diff --git a/LifePayment/LifePayment.Domain.Shared/LifePaymentConstant.cs b/LifePayment/LifePayment.Domain.Shared/LifePaymentConstant.cs index 3643d64..676634c 100644 --- a/LifePayment/LifePayment.Domain.Shared/LifePaymentConstant.cs +++ b/LifePayment/LifePayment.Domain.Shared/LifePaymentConstant.cs @@ -53,8 +53,12 @@ public const string PayTransactionsH5 = "/v3/pay/transactions/h5"; + public const string WxPayTradeQyery = "/v3/pay/transactions/out-trade-no/{out_trade_no}"; + public const string WxPayDomesticRefunds = "/v3/refund/domestic/refunds"; + public const string WxPayDomesticRefundsQuery = "/v3/refund/domestic/refunds/{out_refund_no}"; + public const string WxPayTradeBillApply = "/v3/fund-app/mch-transfer/elecsign/out-bill-no"; public const string WxPayTradeBillQuery = "/v3/fund-app/mch-transfer/elecsign/out-bill-no/{out_bill_no}"; diff --git a/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs b/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs index 88c1357..cdeb515 100644 --- a/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs +++ b/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs @@ -40,15 +40,20 @@ return response; } - public async Task<AlipayTradeQueryResponse> TradeRefundQuiry(OrderInQuiryInput input) + /// <summary> + /// 鏌ヨ鏀粯瀹濋��娆捐鍗曚俊鎭� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + public async Task<AlipayTradeFastpayRefundQueryResponse> QueryAlipayTradeRefund(OrderInQuiryInput input) { - AlipayTradeQueryResponse response = Factory.Payment.Common().Query(input.OutTradeNo); + AlipayTradeFastpayRefundQueryResponse response = await Factory.Payment.Common().QueryRefundAsync(input.OutTradeNo, input.OutTradeNo); return response; } public async Task<AlipayTradeRefundResponse> TradeRefund(AlipayTradeRefundRequest input) { - AlipayTradeRefundResponse response = Factory.Payment.Common().Refund(input.OutTradeNo,input.RefundAmount); + AlipayTradeRefundResponse response = await Factory.Payment.Common().RefundAsync(input.OutTradeNo,input.RefundAmount); return response; } diff --git a/LifePayment/LifePayment.Domain/Ali/IAliPayApi.cs b/LifePayment/LifePayment.Domain/Ali/IAliPayApi.cs index fa58cc9..d22903b 100644 --- a/LifePayment/LifePayment.Domain/Ali/IAliPayApi.cs +++ b/LifePayment/LifePayment.Domain/Ali/IAliPayApi.cs @@ -12,6 +12,8 @@ Task<AlipayTradeQueryResponse> OrderInQuiry(OrderInQuiryInput input); + Task<AlipayTradeFastpayRefundQueryResponse> QueryAlipayTradeRefund(OrderInQuiryInput input); + Task<AlipayTradeRefundResponse> TradeRefund(AlipayTradeRefundRequest input); } } \ No newline at end of file diff --git a/LifePayment/LifePayment.Domain/WeChat/IWxPayApi.cs b/LifePayment/LifePayment.Domain/WeChat/IWxPayApi.cs index 805ecfc..410e790 100644 --- a/LifePayment/LifePayment.Domain/WeChat/IWxPayApi.cs +++ b/LifePayment/LifePayment.Domain/WeChat/IWxPayApi.cs @@ -24,6 +24,8 @@ Task<WxPayDomesticRefundsReponse> WxPayDomesticRefunds(WxPayDomesticRefundsRequest input); + Task WxPayDomesticRefundsQuery(string outTradeNo); + Task<WxPayTradeBillApplyReponse> WxPayTradeBillApply(WxPayTradeBillApplyRequest input); Task<WxPayTradeBillQueryReponse> WxPayTradeBillQuery(WxPayTradeBillQueryRequest input); diff --git a/LifePayment/LifePayment.Domain/WeChat/WxClient.cs b/LifePayment/LifePayment.Domain/WeChat/WxClient.cs index 61f6131..ea578a8 100644 --- a/LifePayment/LifePayment.Domain/WeChat/WxClient.cs +++ b/LifePayment/LifePayment.Domain/WeChat/WxClient.cs @@ -121,6 +121,8 @@ return result; } + + public async Task<CertificatesReponse> GetCertificates() { return await Certificates<CertificatesReponse>(LifePaymentConstant.WxPayCertificates); diff --git a/LifePayment/LifePayment.Domain/WeChat/WxPayApi.cs b/LifePayment/LifePayment.Domain/WeChat/WxPayApi.cs index 090020c..39a8ee8 100644 --- a/LifePayment/LifePayment.Domain/WeChat/WxPayApi.cs +++ b/LifePayment/LifePayment.Domain/WeChat/WxPayApi.cs @@ -1,5 +1,6 @@ 锘縰sing LifePayment.Domain.Shared; using System.Threading.Tasks; +using ZeroD.Util.Fadd; namespace LifePayment.Domain { @@ -35,6 +36,13 @@ return result; } + public async Task WxPayDomesticRefundsQuery(string outTradeNo) + { + var url = $"{string.Format(LifePaymentConstant.WxPayDomesticRefundsQuery, outTradeNo)}"; + var result = await Certificates<PayTransactionsReponse>(url); + //return result; + } + public async Task<WxPayTradeBillApplyReponse> WxPayTradeBillApply(WxPayTradeBillApplyRequest input) { var result = await NomalPostAsync<WxPayTradeBillApplyRequest, WxPayTradeBillApplyReponse>(input, LifePaymentConstant.WxPayTradeBillApply); diff --git a/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml b/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml index 95d56a5..5cd7958 100644 --- a/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml +++ b/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml @@ -260,9 +260,16 @@ <param name="input"></param> <returns></returns> </member> - <member name="M:LifePayment.HttpApi.LifePayController.QueryGetAlipayTrade(LifePayment.Domain.Shared.OrderInQuiryInput)"> + <member name="M:LifePayment.HttpApi.LifePayController.QueryAlipayTrade(LifePayment.Domain.Shared.OrderInQuiryInput)"> <summary> - 鏌ヨ鏀粯瀹濊鍗曚俊鎭� + 鏌ヨ鏀粯瀹濇敮浠樿鍗曚俊鎭� + </summary> + <param name="input"></param> + <returns></returns> + </member> + <member name="M:LifePayment.HttpApi.LifePayController.QueryAlipayTradeRefund(LifePayment.Domain.Shared.OrderInQuiryInput)"> + <summary> + 鏌ヨ鏀粯瀹濋��娆捐鍗曚俊鎭� </summary> <param name="input"></param> <returns></returns> diff --git a/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml b/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml index 1ea656f..8c914a4 100644 --- a/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml +++ b/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml @@ -232,13 +232,27 @@ <param name="id"></param> <returns></returns> </member> - <member name="M:LifePayment.Application.Contracts.ILifePayService.QueryGetAlipayTrade(LifePayment.Domain.Shared.OrderInQuiryInput)"> + <member name="M:LifePayment.Application.Contracts.ILifePayService.QueryAlipayTrade(LifePayment.Domain.Shared.OrderInQuiryInput)"> <summary> 鏌ヨ鏀粯瀹濇敮浠樿鍗曚俊鎭� </summary> <param name="input"></param> <returns></returns> </member> + <member name="M:LifePayment.Application.Contracts.ILifePayService.QueryAlipayTradeRefund(LifePayment.Domain.Shared.OrderInQuiryInput)"> + <summary> + 鏌ヨ鏀粯瀹濋��娆捐鍗曚俊鎭� + </summary> + <param name="input"></param> + <returns></returns> + </member> + <member name="M:LifePayment.Application.Contracts.ILifePayService.WxPayDomesticRefundsQuery(System.String)"> + <summary> + 鏌ヨ寰俊鏀粯璁㈠崟淇℃伅 + </summary> + <param name="outTradeNo"></param> + <returns></returns> + </member> <member name="M:LifePayment.Application.Contracts.ILifePayService.SetLifePayOrderPayType(LifePayment.Domain.Shared.SetLifePayOrderPayTypeInput,System.String)"> <summary> 璁剧疆鐢熸椿缂磋垂鏀粯绫诲瀷 diff --git a/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs b/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs index d3327f8..d0f5172 100644 --- a/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs +++ b/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs @@ -443,15 +443,35 @@ } /// <summary> - /// 鏌ヨ鏀粯瀹濊鍗曚俊鎭� + /// 鏌ヨ鏀粯瀹濇敮浠樿鍗曚俊鎭� /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [AllowAnonymous] - public async Task<Alipay.EasySDK.Payment.Common.Models.AlipayTradeQueryResponse> QueryGetAlipayTrade(OrderInQuiryInput input) + public async Task<Alipay.EasySDK.Payment.Common.Models.AlipayTradeQueryResponse> QueryAlipayTrade(OrderInQuiryInput input) { - return await _lifePayService.QueryGetAlipayTrade(input); + return await _lifePayService.QueryAlipayTrade(input); + } + + /// <summary> + /// 鏌ヨ鏀粯瀹濋��娆捐鍗曚俊鎭� + /// </summary> + /// <param name="input"></param> + /// <returns></returns> + [HttpPost] + [AllowAnonymous] + public async Task<Alipay.EasySDK.Payment.Common.Models.AlipayTradeFastpayRefundQueryResponse> QueryAlipayTradeRefund(OrderInQuiryInput input) + { + return await _lifePayService.QueryAlipayTradeRefund(input); + } + + + [HttpGet] + [AllowAnonymous] + public async Task WxPayDomesticRefundsQuery(string outTradeNo) + { + await _lifePayService.WxPayDomesticRefundsQuery(outTradeNo); } #endregion -- Gitblit v1.9.1