From 83971e864fbee9e1a12d25239fbf005760ee983f Mon Sep 17 00:00:00 2001
From: zhengyuxuan <zhengyuxuan1995>
Date: 星期五, 28 三月 2025 14:22:59 +0800
Subject: [PATCH] fix:支付查询

---
 LifePayment/LifePayment.Domain.Shared/Ali/GetPayQrCodeInput.cs                |    8 +
 LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs              |   21 ++
 LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml    |   25 +++
 LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs            |   67 ++++++++
 LifePayment/LifePayment.Domain/LifePay/LifePayRechargeReceipts.cs             |    3 
 LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayOrderService.cs |    3 
 LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs   |    2 
 LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs         |   27 +++
 LifePayment/LifePayment.Domain/Ali/AlipayApiConstant.cs                       |   32 ++++
 LifePayment/LifePayment.Domain/LifePay/LifePayExpensesReceipts.cs             |   56 ++++++++
 LifePayment/LifePayment.Domain/Ali/AliPayApi.cs                               |  141 +++++++++++++++++++
 LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs             |   14 +
 LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml                   |    7 +
 LifePayment/LifePayment.Application/LifePay/LifePayService.cs                 |    2 
 LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs             |    8 +
 15 files changed, 400 insertions(+), 16 deletions(-)

diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayOrderService.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayOrderService.cs
index e465c85..788c88e 100644
--- a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayOrderService.cs
+++ b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayOrderService.cs
@@ -12,6 +12,7 @@
 {
     Task<LifePayRechargeReceiptsPageOutput<LifePayRechargeReceiptsListOutput>> GetLifePayRechargeReceiptsPage(LifePayRechargeReceiptsPageInput input);
 
-
     Task AddUpdatePayRechargeReceipts(AddUpdatePayRechargeReceiptsInput input);
+
+    Task AddLifePayExpensesReceipts(AddLifePayExpensesReceiptsInput input);
 }
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs
index cf63147..0d32b8a 100644
--- a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs
+++ b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs
@@ -643,4 +643,31 @@
     public decimal PayAmount { get; set; }
 
     public LifePayTypeEnum LifePayType { get; set; }
+}
+public class AddLifePayExpensesReceiptsInput
+{
+    /// <summary>
+    /// 骞冲彴璁㈠崟鍙�
+    /// </summary>
+    public string OrderNo { get; set; }
+
+    /// <summary>
+    /// 娓犻亾娴佹按鍙�
+    /// </summary>
+    public string OutOrderNo { get; set; }
+
+    /// <summary>
+    /// 鏀粯娓犻亾
+    /// </summary>
+    public LifePayTypeEnum LifePayType { get; set; }
+
+    /// <summary>
+    /// 鏀舵敮绫诲瀷
+    /// </summary>
+    public ExpensesReceiptsTypeEnum ExpensesReceiptsType { get; set; }
+
+    /// <summary>
+    /// 浜ゆ槗閲戦
+    /// </summary>
+    public decimal Amount { get; set; }
 }
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
index 3f02652..6eb97db 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
@@ -11,17 +11,27 @@
 using Volo.Abp.Domain.Repositories;
 using Microsoft.EntityFrameworkCore;
 using ZeroD.Util;
+using LifePayment.Domain;
 
 namespace LifePayment.Application.LifePay
 {
     public class LifePayOrderService : ApplicationService, ILifePayOrderService
     {
         private readonly IRepository<LifePayRechargeReceipts, Guid> _lifePayRechargeReceiptsRepository;
+        private readonly IRepository<LifePayExpensesReceipts, Guid> _lifePayExpensesReceiptsRepository;
+        private readonly IAliPayApi _aliPayApi;
+        private readonly IWxPayApi _wxPayApi;
 
         public LifePayOrderService(
-                              IRepository<LifePayRechargeReceipts, Guid> lifePayRechargeReceiptsRepository)
+                              IRepository<LifePayRechargeReceipts, Guid> lifePayRechargeReceiptsRepository,
+                              IRepository<LifePayExpensesReceipts, Guid> lifePayExpensesReceiptsRepository,
+                              IAliPayApi aliPayApi,
+                              IWxPayApi wxPayApi)
         {
             _lifePayRechargeReceiptsRepository = lifePayRechargeReceiptsRepository;
+            _lifePayExpensesReceiptsRepository = lifePayExpensesReceiptsRepository;
+            _aliPayApi = aliPayApi;
+            _wxPayApi = wxPayApi;
         }
 
         /// <summary>
@@ -53,11 +63,7 @@
             return result;
         }
 
-        //public async Task<decimal> GetTotalLifePayRechargeReceipts()
-        //{
-        //    var result = await _lifePayRechargeReceiptsRepository.Where(x => x.IsDeleted == false).SumAsync(x => x.RechargeAmount);
-        //    return result;
-        //}
+
 
         /// <summary>
         /// 缂栬緫鍏呭�兼祦姘�
@@ -92,5 +98,54 @@
                 await _lifePayRechargeReceiptsRepository.InsertAsync(payRechargeReceipts);
             }
         }
+
+        /// <summary>
+        /// 鎻掑叆鏀舵敮娴佹按
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public async Task AddLifePayExpensesReceipts(AddLifePayExpensesReceiptsInput input)
+        {
+            var repeat = await _lifePayExpensesReceiptsRepository.Where(x => x.ExpensesReceiptsType == input.ExpensesReceiptsType
+            && x.OrderNo == input.OrderNo).FirstOrDefaultAsync();
+            if (repeat == null)
+            {
+                var data = new LifePayExpensesReceipts()
+                {
+                    Id = Guid.NewGuid(),
+                    OrderNo = input.OrderNo,
+                    OutOrderNo = input.OutOrderNo,
+                    LifePayType = input.LifePayType,
+                    ExpensesReceiptsType = input.ExpensesReceiptsType,
+                    Amount = input.Amount
+                };
+
+                switch (input.LifePayType)
+                {
+                    case LifePayTypeEnum.AliPay:
+                        if (input.ExpensesReceiptsType == ExpensesReceiptsTypeEnum.Expenses)
+                        {
+                            var query = await _aliPayApi.OrderInQuiry(new OrderInQuiryInput() { OutTradeNo = input.OrderNo });
+                            if (query.Code == AlipayResultCode.Success && query.TradeStatus == AlipayStatus.TRADESUCCESS)
+                            {
+                                await _lifePayExpensesReceiptsRepository.InsertAsync(data);
+                            }
+                        }
+                        else
+                        {
+                            var query = await _aliPayApi.QueryAlipayTradeRefund(new OrderInQuiryInput() { OutTradeNo = input.OrderNo });
+                            if (query.Code == AlipayResultCode.Success && query.RefundStatus == AlipayRefundStatus.Success)
+                            {
+                                await _lifePayExpensesReceiptsRepository.InsertAsync(data);
+                            }
+                        }
+                        break;
+                    case LifePayTypeEnum.WxPay: break;
+                    default: break;
+                }
+                
+                
+            }
+        }
     }
 }
diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
index 9144d0f..e847711 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -1418,7 +1418,7 @@
 
                 break;
             case LifePayTypeEnum.AliPay:
-                var aliRefundResult = await AliTradeRefund(new AlipayTradeRefundRequest() { OutTradeNo = order.OrderNo, RefundAmount = input.RefundPrice.ToString() });
+                var aliRefundResult = await AliTradeRefund(new AlipayTradeRefundRequest() { OutTradeNo = order.OrderNo, OutRefundNo = outRefundNo, RefundAmount = input.RefundPrice.ToString() });
                 if (aliRefundResult.Code != AlipayResultCode.Success)
                 {
                     throw new UserFriendlyException("閫�娆惧け璐�:" + aliRefundResult.SubMsg);
diff --git a/LifePayment/LifePayment.Domain.Shared/Ali/GetPayQrCodeInput.cs b/LifePayment/LifePayment.Domain.Shared/Ali/GetPayQrCodeInput.cs
index d8f195a..b98c786 100644
--- a/LifePayment/LifePayment.Domain.Shared/Ali/GetPayQrCodeInput.cs
+++ b/LifePayment/LifePayment.Domain.Shared/Ali/GetPayQrCodeInput.cs
@@ -33,6 +33,14 @@
         /// </summary>
         public string OutTradeNo { get; set; }
 
+        /// <summary>
+        /// 閫�娆鹃噾棰�
+        /// </summary>
         public string RefundAmount { get; set; }
+
+        /// <summary>
+        /// 閫�娆捐鍗曞彿
+        /// </summary>
+        public string OutRefundNo { get; set; }
     }
 }
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs b/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs
index fa91acf..a7c1146 100644
--- a/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs
+++ b/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs
@@ -11,6 +11,8 @@
     AliPay = 20
 }
 
+
+
 public enum LifePayOrderTypeEnum
 {
     [Description("璇濊垂璁㈠崟")]
@@ -185,4 +187,14 @@
 
     [Description("閮ㄥ垎閫�娆�")]
     閮ㄥ垎閫�娆� = 20
-}
\ No newline at end of file
+}
+
+public enum ExpensesReceiptsTypeEnum
+{
+    [Description("鏀跺叆")]
+    Expenses = 10,
+
+    [Description("鏀嚭")]
+    Receipts = 20,
+
+}
diff --git a/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs b/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs
index cdeb515..1a5ec58 100644
--- a/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs
+++ b/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs
@@ -5,7 +5,11 @@
 using LifePayment.Domain.Shared;
 using Microsoft.Extensions.Options;
 using Nest;
+using System;
+using System.Collections;
+using System.Collections.Generic;
 using System.Threading.Tasks;
+using Tea;
 
 namespace LifePayment.Domain
 {
@@ -13,10 +17,12 @@
     {
         private readonly Config _options;
 
+        protected Alipay.EasySDK.Kernel.Client _kernel;
         public AliPayApi(
-               IOptionsMonitor<Config> optionsMonitor)
+               IOptionsMonitor<Config> optionsMonitor, Client kernel)
         {
             _options = optionsMonitor.CurrentValue;
+            _kernel = kernel;
         }
 
         public async Task<AlipayTradePrecreateResponse> GetAliPayQRCode(GetPayQrCodeInput input)
@@ -40,6 +46,7 @@
             return response;
         }
 
+
         /// <summary>
         /// 鏌ヨ鏀粯瀹濋��娆捐鍗曚俊鎭�
         /// </summary>
@@ -53,9 +60,139 @@
 
         public async Task<AlipayTradeRefundResponse> TradeRefund(AlipayTradeRefundRequest input)
         {
-            AlipayTradeRefundResponse response = await Factory.Payment.Common().RefundAsync(input.OutTradeNo,input.RefundAmount);
+            AlipayTradeRefundResponse response = await TradeRefund(input.OutTradeNo,input.OutRefundNo, input.RefundAmount);
             return response;
         }
 
+        private async Task<AlipayTradeRefundResponse> TradeRefund(string outTradeNo, string outRefundNo, string refundAmount)
+        {
+            Dictionary<string, object> runtime_ = new Dictionary<string, object>
+        {
+            {
+                "ignoreSSL",
+                _kernel.GetConfig("ignoreSSL")
+            },
+            {
+                "httpProxy",
+                _kernel.GetConfig("httpProxy")
+            },
+            { "connectTimeout", 15000 },
+            { "readTimeout", 15000 },
+            {
+                "retry",
+                new Dictionary<string, int?> { { "maxAttempts", 0 } }
+            }
+        };
+            TeaRequest _lastRequest = null;
+            Exception innerException = null;
+            long _now = DateTime.Now.Millisecond;
+            int _retryTimes = 0;
+            while (TeaCore.AllowRetry((IDictionary)runtime_["retry"], _retryTimes, _now))
+            {
+                if (_retryTimes > 0)
+                {
+                    int backoffTime = TeaCore.GetBackoffTime((IDictionary)runtime_["backoff"], _retryTimes);
+                    if (backoffTime > 0)
+                    {
+                        TeaCore.Sleep(backoffTime);
+                    }
+                }
+
+                _retryTimes++;
+                try
+                {
+                    TeaRequest teaRequest = new TeaRequest();
+                    Dictionary<string, string> dictionary = new Dictionary<string, string>
+                {
+                    { "method", "alipay.trade.refund" },
+                    {
+                        "app_id",
+                        _kernel.GetConfig("appId")
+                    },
+                    {
+                        "timestamp",
+                        _kernel.GetTimestamp()
+                    },
+                    { "format", "json" },
+                    { "version", "1.0" },
+                    {
+                        "alipay_sdk",
+                        _kernel.GetSdkVersion()
+                    },
+                    { "charset", "UTF-8" },
+                    {
+                        "sign_type",
+                        _kernel.GetConfig("signType")
+                    },
+                    {
+                        "app_cert_sn",
+                        _kernel.GetMerchantCertSN()
+                    },
+                    {
+                        "alipay_root_cert_sn",
+                        _kernel.GetAlipayRootCertSN()
+                    }
+                };
+                    Dictionary<string, object> bizParams = new Dictionary<string, object>
+                {
+                    { "out_trade_no", outTradeNo },
+                    { "out_request_no", outRefundNo },
+                    { "refund_amount", refundAmount }
+                };
+                    Dictionary<string, string> dictionary2 = new Dictionary<string, string>();
+                    teaRequest.Protocol = _kernel.GetConfig("protocol");
+                    teaRequest.Method = "POST";
+                    teaRequest.Pathname = "/gateway.do";
+                    teaRequest.Headers = new Dictionary<string, string>
+                {
+                    {
+                        "host",
+                        _kernel.GetConfig("gatewayHost")
+                    },
+                    { "content-type", "application/x-www-form-urlencoded;charset=utf-8" }
+                };
+                    teaRequest.Query = _kernel.SortMap(TeaConverter.merge<string>(new object[3]
+                    {
+                    new Dictionary<string, string> {
+                    {
+                        "sign",
+                        _kernel.Sign(dictionary, bizParams, dictionary2, _kernel.GetConfig("merchantPrivateKey"))
+                    } },
+                    dictionary,
+                    dictionary2
+                    }));
+                    teaRequest.Body = TeaCore.BytesReadable(_kernel.ToUrlEncodedRequestBody(bizParams));
+                    _lastRequest = teaRequest;
+                    TeaResponse response = await TeaCore.DoActionAsync(teaRequest, runtime_);
+                    Dictionary<string, object> respMap = await _kernel.ReadAsJsonAsync(response, "alipay.trade.refund");
+                    if (_kernel.IsCertMode())
+                    {
+                        if (_kernel.Verify(respMap, _kernel.ExtractAlipayPublicKey(_kernel.GetAlipayCertSN(respMap))))
+                        {
+                            return TeaModel.ToObject<AlipayTradeRefundResponse>(_kernel.ToRespModel(respMap));
+                        }
+                    }
+                    else if (_kernel.Verify(respMap, _kernel.GetConfig("alipayPublicKey")))
+                    {
+                        return TeaModel.ToObject<AlipayTradeRefundResponse>(_kernel.ToRespModel(respMap));
+                    }
+
+                    throw new TeaException(new Dictionary<string, string> { { "message", "楠岀澶辫触锛岃妫�鏌ユ敮浠樺疂鍏挜璁剧疆鏄惁姝g‘銆�" } });
+                }
+                catch (Exception ex)
+                {
+                    if (TeaCore.IsRetryable(ex))
+                    {
+                        innerException = ex;
+                        continue;
+                    }
+
+                    throw ex;
+                }
+            }
+
+            throw new TeaUnretryableException(_lastRequest, innerException);
+        }
+
     }
 }
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Domain/Ali/AlipayApiConstant.cs b/LifePayment/LifePayment.Domain/Ali/AlipayApiConstant.cs
index d4a5d6d..aa1a442 100644
--- a/LifePayment/LifePayment.Domain/Ali/AlipayApiConstant.cs
+++ b/LifePayment/LifePayment.Domain/Ali/AlipayApiConstant.cs
@@ -29,7 +29,39 @@
 
 
     }
+    public class AlipayStatus
+    {
+        /// <summary>
+        /// 浜ゆ槗鍒涘缓锛岀瓑寰呬拱瀹朵粯娆�
+        /// </summary>
+        public const string WAITBUYERPAY = "WAIT_BUYER_PAY";
 
+        /// <summary>
+        /// 鏈粯娆句氦鏄撹秴鏃跺叧闂紝鎴栨敮浠樺畬鎴愬悗鍏ㄩ閫�娆�
+        /// </summary>
+        public const string TRADECLOSED = "TRADE_CLOSED";
+
+        /// <summary>
+        /// 浜ゆ槗鏀粯鎴愬姛
+        /// </summary>
+        public const string TRADESUCCESS = "TRADE_SUCCESS";
+
+        /// <summary>
+        /// 浜ゆ槗缁撴潫锛屼笉鍙��娆�
+        /// </summary>
+        public const string TRADEFINISHED = "TRADE_FINISHED";
+    }
+
+    /// <summary>
+    /// 浜ゆ槗鐘舵��
+    /// </summary>
+    public class AlipayRefundStatus
+    {
+        /// <summary>
+        /// 閫�娆惧鐞嗘垚鍔�:REFUND_SUCCESS    鏈繑鍥炶瀛楁琛ㄧず閫�娆捐姹傛湭鏀跺埌鎴栬�呴��娆惧け璐�
+        /// </summary>
+        public const string Success = "REFUND_SUCCESS";
+    }
     public class AlipayResultCode
     {
         public const string Success = "10000";
diff --git a/LifePayment/LifePayment.Domain/LifePay/LifePayExpensesReceipts.cs b/LifePayment/LifePayment.Domain/LifePay/LifePayExpensesReceipts.cs
new file mode 100644
index 0000000..b96167f
--- /dev/null
+++ b/LifePayment/LifePayment.Domain/LifePay/LifePayExpensesReceipts.cs
@@ -0,0 +1,56 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Entities.Auditing;
+using Volo.Abp;
+using LifePayment.Domain.Shared;
+
+namespace LifePayment.Domain.LifePay
+{
+    /// <summary>
+    /// 鏀舵敮娴佹按
+    /// </summary>
+    public class LifePayExpensesReceipts : FullAuditedEntity<Guid>, IDataUserFilter
+    {
+        public LifePayExpensesReceipts()
+        {
+        }
+
+        /// <summary>
+        /// 骞冲彴璁㈠崟鍙�
+        /// </summary>
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 娓犻亾娴佹按鍙�
+        /// </summary>
+        public string OutOrderNo { get; set; }
+
+        /// <summary>
+        /// 鏀粯娓犻亾
+        /// </summary>
+        public LifePayTypeEnum LifePayType { get; set; }
+
+        /// <summary>
+        /// 鏀舵敮绫诲瀷
+        /// </summary>
+        public ExpensesReceiptsTypeEnum ExpensesReceiptsType { get; set; }
+
+        /// <summary>
+        /// 浜ゆ槗閲戦
+        /// </summary>
+        public decimal Amount { get; set; }
+
+        /// <summary>
+        /// 浜ゆ槗鏃堕棿
+        /// </summary>
+        public DateTime FinishTime { get; set; }
+
+        /// <summary>
+        /// 鎷撳睍鐔熸倝
+        /// </summary>
+        public string ExtraProperties { get; set; }
+    }
+}
diff --git a/LifePayment/LifePayment.Domain/LifePay/LifePayRechargeReceipts.cs b/LifePayment/LifePayment.Domain/LifePay/LifePayRechargeReceipts.cs
index 5953b75..3a33843 100644
--- a/LifePayment/LifePayment.Domain/LifePay/LifePayRechargeReceipts.cs
+++ b/LifePayment/LifePayment.Domain/LifePay/LifePayRechargeReceipts.cs
@@ -8,6 +8,9 @@
 
 namespace LifePayment.Domain.LifePay
 {
+    /// <summary>
+    /// 鍏呭�兼祦姘�
+    /// </summary>
     public class LifePayRechargeReceipts : FullAuditedEntity<Guid>, IDataUserFilter
     {
         public LifePayRechargeReceipts()
diff --git a/LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs b/LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs
index 7ca62cf..af9e688 100644
--- a/LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs
+++ b/LifePayment/LifePayment.EntityFrameworkCore/LifePaymentServicesDbContext.cs
@@ -27,6 +27,8 @@
 
         public virtual DbSet<LifePayRechargeReceipts> LifePayRechargeReceipts { get; set; }
 
+        public virtual DbSet<LifePayExpensesReceipts> LifePayExpensesReceipts { get; set; }
+
         public virtual DbSet<Area> Area { get; set; }
 
         public virtual DbSet<User> Users { get; set; }
diff --git a/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml b/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml
index b06badd..348afee 100644
--- a/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml
+++ b/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml
@@ -508,5 +508,12 @@
             <param name="input"></param>
             <returns></returns>
         </member>
+        <member name="M:LifePayment.HttpApi.WxPayNotifyController.WxPayDomesticRefundsNotify(LifePayment.Application.Contracts.WxRechargeNotifyInput)">
+            <summary>
+            寰俊閫�娆鹃�氱煡鍥炶皟
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
     </members>
 </doc>
diff --git a/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml b/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
index 95c97c8..730e795 100644
--- a/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
+++ b/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
@@ -751,6 +751,31 @@
             鍏呭�煎嚟璇�
             </summary>
         </member>
+        <member name="P:LifePayment.Application.Contracts.AddLifePayExpensesReceiptsInput.OrderNo">
+            <summary>
+            骞冲彴璁㈠崟鍙�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AddLifePayExpensesReceiptsInput.OutOrderNo">
+            <summary>
+            娓犻亾娴佹按鍙�
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AddLifePayExpensesReceiptsInput.LifePayType">
+            <summary>
+            鏀粯娓犻亾
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AddLifePayExpensesReceiptsInput.ExpensesReceiptsType">
+            <summary>
+            鏀舵敮绫诲瀷
+            </summary>
+        </member>
+        <member name="P:LifePayment.Application.Contracts.AddLifePayExpensesReceiptsInput.Amount">
+            <summary>
+            浜ゆ槗閲戦
+            </summary>
+        </member>
         <member name="P:LifePayment.Application.Contracts.LifePayIntroInfoInput.LifePayType">
             <summary>
             鐢熸椿缂磋垂绫诲瀷
diff --git a/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs b/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs
index 300150a..37a922e 100644
--- a/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs
+++ b/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs
@@ -22,6 +22,7 @@
     {
 
         private readonly ILifePayService _lifePayService;
+        private readonly ILifePayOrderService _lifePayOrderService;
 
         private readonly ILogger<AliPayNotifyController> _logger;
 
@@ -29,10 +30,12 @@
 
                ILogger<AliPayNotifyController> logger,
 
-               ILifePayService lifePayService)
+               ILifePayService lifePayService,
+               ILifePayOrderService lifePayOrderService)
         {
             _logger = logger;
             _lifePayService = lifePayService;
+            _lifePayOrderService = lifePayOrderService;
         }
 
         /// <summary>
@@ -57,6 +60,9 @@
                 if (input.TradeStatus == LifePaymentConstant.AliPayStatus.鏀粯鎴愬姛)
                 {
                     await _lifePayService.LifePaySuccessHandler(input.OutTradeNo, input.TradeNo);
+                    await _lifePayOrderService.AddLifePayExpensesReceipts(new AddLifePayExpensesReceiptsInput() { OrderNo = input.OutTradeNo, 
+                        OutOrderNo = input.TradeNo ,LifePayType = LifePayTypeEnum.AliPay,ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Expenses,
+                        Amount = input.ReceiptAmount.Value });
                 }
             }
             else
diff --git a/LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs b/LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs
index 454dc62..5411b49 100644
--- a/LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs
+++ b/LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs
@@ -21,16 +21,19 @@
 
         private readonly IWxPayApi _wxPayApi;
         private readonly ILifePayService _lifePayService;
+        private readonly ILifePayOrderService _lifePayOrderService;
         private readonly ILogger<WxPayNotifyController> _logger;
 
         public WxPayNotifyController(
                IWxPayApi wxPayApi,
                ILogger<WxPayNotifyController> logger,
-               ILifePayService lifePayService)
+               ILifePayService lifePayService,
+               ILifePayOrderService lifePayOrderService)
         {
             _wxPayApi = wxPayApi;
             _logger = logger;
             _lifePayService = lifePayService;
+            _lifePayOrderService = lifePayOrderService;
         }
 
         /// <summary>
@@ -53,6 +56,14 @@
                     if (wxPayNotice.TradeState == LifePaymentConstant.WxPayStatus.鏀粯鎴愬姛)
                     {
                         await _lifePayService.LifePaySuccessHandler(wxPayNotice.OutTradeNo, wxPayNotice.TransactionId);
+                        await _lifePayOrderService.AddLifePayExpensesReceipts(new AddLifePayExpensesReceiptsInput()
+                        {
+                            OrderNo = wxPayNotice.OutTradeNo,
+                            OutOrderNo = wxPayNotice.TransactionId,
+                            LifePayType = LifePayTypeEnum.WxPay,
+                            ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Expenses,
+                            Amount = wxPayNotice.Amount.Total
+                        });
                     }
                 }
             }
@@ -72,7 +83,11 @@
             };
         }
 
-
+        /// <summary>
+        /// 寰俊閫�娆鹃�氱煡鍥炶皟
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
         [HttpPost]
         [UnitOfWork]
         public async Task<WxRechargeNotifyResult> WxPayDomesticRefundsNotify(WxRechargeNotifyInput input)
@@ -92,8 +107,6 @@
                     switch (wxPayNotice.RefundStatus)
                     {
                         case LifePaymentConstant.WxPayRefundStatus.閫�娆炬垚鍔�:
-                            await _lifePayService.WxPayDomesticRefundsHandler(wxPayNotice.OutTradeNo, LifePayRefundStatusEnum.宸查��娆�);
-                            break;
                         case LifePaymentConstant.WxPayRefundStatus.閫�娆惧叧闂�:
                             await _lifePayService.WxPayDomesticRefundsHandler(wxPayNotice.OutTradeNo, LifePayRefundStatusEnum.宸查��娆�);
                             break;

--
Gitblit v1.9.1