lingling
2025-04-16 10496309bfe3a0d65ed012c5598732f5bfac2efd
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>
@@ -44,15 +47,26 @@
        {
            try
            {
                _logger.LogError($"生活管家微信充值回调通知:进入微信回调");
                _logger.LogError($"生活管家微信充值回调通知:进入微信回调:");
                var data = _wxPayApi.AesGcmDecrypt(input.Resource.AssociatedData, input.Resource.Nonce, input.Resource.Ciphertext);
                _logger.LogError($"生活管家微信充值回调通知data:" + data);
                var wxPayNotice = JsonConvert.DeserializeObject<WxPayNotice>(data);
                if (wxPayNotice.OutTradeNo.StartsWith("JF") && Regex.IsMatch(wxPayNotice.OutTradeNo, @"^JF\d+$"))
                if (wxPayNotice.OutTradeNo.Contains("JF") )
                {
                    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
                        });
                    }
                }
            }
@@ -71,5 +85,64 @@
                Code = "SUCCESS",
            };
        }
        /// <summary>
        /// 微信退款通知回调
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost]
        [UnitOfWork]
        public async Task<WxRechargeNotifyResult> WxPayDomesticRefundsNotify(WxRechargeNotifyInput input)
        {
            try
            {
                _logger.LogError($"微信退款回调通知:进入微信回调");
                var data = _wxPayApi.AesGcmDecrypt(input.Resource.AssociatedData, input.Resource.Nonce, input.Resource.Ciphertext);
                _logger.LogError($"微信退款回调通知data:"+ data);
                var wxPayNotice = JsonConvert.DeserializeObject<WxPayDomesticRefundsNotice>(data);
                if (wxPayNotice.OutTradeNo.Contains("JF"))
                {
                    switch (wxPayNotice.RefundStatus)
                    {
                        case LifePaymentConstant.WxPayRefundStatus.退款成功:
                            await _lifePayService.LifePayRefundsHandler(wxPayNotice.OutTradeNo, LifePayRefundStatusEnum.已退款);
                            // 插入收支流水
                            await _lifePayOrderService.AddLifePayExpensesReceipts(new AddLifePayExpensesReceiptsInput()
                            {
                                OrderNo = wxPayNotice.OutTradeNo,
                                OutRefundNo = wxPayNotice.OutRefundNo,
                                OutOrderNo = wxPayNotice.TransactionId,
                                LifePayType = LifePayTypeEnum.WxPay,
                                ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Receipts,
                                Amount = wxPayNotice.Amount.Total
                            });
                            break;
                        case LifePaymentConstant.WxPayRefundStatus.退款关闭:
                        case LifePaymentConstant.WxPayRefundStatus.退款处理中:
                        case LifePaymentConstant.WxPayRefundStatus.退款异常:
                            await _lifePayService.LifePayRefundsHandler(wxPayNotice.OutTradeNo, LifePayRefundStatusEnum.退款中);
                            break;
                        default : await _lifePayService.LifePayRefundsHandler(wxPayNotice.OutTradeNo, LifePayRefundStatusEnum.退款中);break;
                    }
                }
            }
            catch (Exception ex)
            {
                return new WxRechargeNotifyResult
                {
                    Code = "FAIL",
                    Message = ex.Message,
                };
            }
            return new WxRechargeNotifyResult
            {
                Code = "SUCCESS",
            };
        }
    }
}