From fa48f8996e9e829bc9352863596011d1e0e95490 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期二, 10 六月 2025 16:32:25 +0800 Subject: [PATCH] fix:运营端——渠道管理——渠道管理(渠道折扣接口请求进行编辑可低于供应商折扣) --- LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs | 73 +++++++++++++++++++++++++----------- 1 files changed, 51 insertions(+), 22 deletions(-) diff --git a/LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs b/LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs index bfec02f..de9e04b 100644 --- a/LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs +++ b/LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs @@ -2,13 +2,16 @@ using LifePayment.Domain; using LifePayment.Domain.Shared; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using System; using System.Text.RegularExpressions; using System.Threading.Tasks; using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.Caching; using Volo.Abp.Uow; +using ZeroD.Util; namespace LifePayment.HttpApi { @@ -22,18 +25,21 @@ private readonly IWxPayApi _wxPayApi; private readonly ILifePayService _lifePayService; private readonly ILifePayOrderService _lifePayOrderService; + private readonly IDistributedCache<string> distributedCache; private readonly ILogger<WxPayNotifyController> _logger; public WxPayNotifyController( IWxPayApi wxPayApi, ILogger<WxPayNotifyController> logger, ILifePayService lifePayService, - ILifePayOrderService lifePayOrderService) + ILifePayOrderService lifePayOrderService, + IDistributedCache<string> distributedCache) { _wxPayApi = wxPayApi; _logger = logger; _lifePayService = lifePayService; _lifePayOrderService = lifePayOrderService; + this.distributedCache = distributedCache; } /// <summary> @@ -47,26 +53,52 @@ { try { - _logger.LogError($"鐢熸椿绠″寰俊鍏呭�煎洖璋冮�氱煡锛氳繘鍏ュ井淇″洖璋�"); + var req = input.ToJson(); + _logger.LogInformation($"鐢熸椿绠″寰俊鍏呭�煎洖璋冮�氱煡锛氳繘鍏ュ井淇″洖璋�:" + req); var data = _wxPayApi.AesGcmDecrypt(input.Resource.AssociatedData, input.Resource.Nonce, input.Resource.Ciphertext); + _logger.LogInformation($"鐢熸椿绠″寰俊鍏呭�煎洖璋冮�氱煡data锛�" + data); var wxPayNotice = JsonConvert.DeserializeObject<WxPayNotice>(data); - if (wxPayNotice.OutTradeNo.Contains("JF") ) + if (wxPayNotice.OutTradeNo.Contains("JF")) { if (wxPayNotice.TradeState == LifePaymentConstant.WxPayStatus.鏀粯鎴愬姛) { - await _lifePayService.LifePaySuccessHandler(wxPayNotice.OutTradeNo, wxPayNotice.TransactionId); - - // 鎻掑叆鏀舵敮娴佹按 - await _lifePayOrderService.AddLifePayExpensesReceipts(new AddLifePayExpensesReceiptsInput() + var key = $"WxRechargeNotify_{wxPayNotice.OutTradeNo}"; + if (string.IsNullOrWhiteSpace(distributedCache.Get(key))) { - OrderNo = wxPayNotice.OutTradeNo, - OutOrderNo = wxPayNotice.TransactionId, - LifePayType = LifePayTypeEnum.WxPay, - ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Expenses, - Amount = wxPayNotice.Amount.Total - }); + _logger.LogInformation("姝e湪澶勭悊鍥炶皟"); + await _lifePayService.LifePaySuccessHandler(wxPayNotice.OutTradeNo, wxPayNotice.TransactionId); + _logger.LogInformation("宸插鐞嗗洖璋�"); + + // 鎻掑叆鏀舵敮娴佹按 + await _lifePayOrderService.AddLifePayExpensesReceipts(new AddLifePayExpensesReceiptsInput() + { + OrderNo = wxPayNotice.OutTradeNo, + OutOrderNo = wxPayNotice.TransactionId, + LifePayType = LifePayTypeEnum.WxPay, + ExpensesReceiptsType = ExpensesReceiptsTypeEnum.Expenses, + Amount = wxPayNotice.Amount.Total + }); + _logger.LogInformation("宸叉彃鍏ユ敹鏀祦姘�"); + + distributedCache.Set(key, data, new DistributedCacheEntryOptions + { + AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10) + }); + } + else + { + _logger.LogInformation("宸茶繃婊ら噸澶嶈姹�"); + } } + else + { + _logger.LogInformation("浜ゆ槗鐘舵�佷笉绗﹀悎瑙勫垯"); + } + } + else + { + _logger.LogInformation("璁㈠崟鍙蜂笉绗﹀悎瑙勫垯"); } } catch (Exception ex) @@ -98,42 +130,39 @@ { _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")) { - if (wxPayNotice.RefundStatus == LifePaymentConstant.WxPayRefundStatus.閫�娆炬垚鍔�) - { - - } + switch (wxPayNotice.RefundStatus) { case LifePaymentConstant.WxPayRefundStatus.閫�娆炬垚鍔�: - 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.閫�娆惧鐞嗕腑: - await _lifePayService.LifePayRefundsHandler(wxPayNotice.OutTradeNo, LifePayRefundStatusEnum.閫�娆句腑); - break; case LifePaymentConstant.WxPayRefundStatus.閫�娆惧紓甯�: await _lifePayService.LifePayRefundsHandler(wxPayNotice.OutTradeNo, LifePayRefundStatusEnum.閫�娆句腑); break; - default : await _lifePayService.LifePayRefundsHandler(wxPayNotice.OutTradeNo, LifePayRefundStatusEnum.閫�娆句腑);break; + default: await _lifePayService.LifePayRefundsHandler(wxPayNotice.OutTradeNo, LifePayRefundStatusEnum.閫�娆句腑); break; } } } catch (Exception ex) { - + return new WxRechargeNotifyResult { Code = "FAIL", -- Gitblit v1.9.1