From fbd573b5d2d05cac61d2184064bb5dd18d0fe61f Mon Sep 17 00:00:00 2001
From: zhengyuxuan <zhengyuxuan1995>
Date: 星期四, 20 三月 2025 16:48:48 +0800
Subject: [PATCH] fix:退款订单号bug修复
---
LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs | 112 +++++++++++++++++++++++++++
LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs | 10 ++
LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs | 4 +
LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs | 5 +
LifePayment/LifePayment.Application/LifePay/LifePayService.cs | 50 +++++++++++
5 files changed, 177 insertions(+), 4 deletions(-)
diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
index 5fd06b6..929f209 100644
--- a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
+++ b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
@@ -202,6 +202,10 @@
/// <returns></returns>
Task<LifePayOrderOutput> GetLifePayOrderDetail(string orderNo);
+
+ Task<LifePayRefundOrderOutput> GetLifePayRefundOrderDetail(string orderNo);
+
+
/// <summary>
/// 鏍规嵁璁㈠崟鍙疯幏鍙栨敮浠樼姸鎬�
/// </summary>
diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs
index 6bbd71c..ed35d68 100644
--- a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs
+++ b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs
@@ -600,10 +600,120 @@
/// 鎵嬬画璐�
/// </summary>
public decimal PremiumPrice { get; set; }
-
+ /// <summary>
+ /// 骞冲彴鍒╂鼎
+ /// </summary>
public decimal? Profit { get; set; }
}
+public class LifePayRefundOrderOutput
+{
+ public Guid Id { get; set; }
+ /// <summary>
+ /// 鐢ㄦ埛璐﹀彿
+ /// </summary>
+ public string UserPhoneNumber { get; set; }
+
+ public string UserName { get; set; }
+
+ public string LifePayChannle { get; set; }
+ /// <summary>
+ /// 鐢熸椿缂磋垂鏀粯绫诲瀷
+ /// </summary>
+ public LifePayTypeEnum? LifePayType { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟绫诲瀷
+ /// </summary>
+ public LifePayOrderTypeEnum LifePayOrderType { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鍙�
+ /// </summary>
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鍏呭�奸噾棰�
+ /// </summary>
+ public decimal RechargeAmount { get; set; }
+
+ /// <summary>
+ /// 浼樻儬閲戦
+ /// </summary>
+ public decimal DiscountAmount { get; set; }
+
+ /// <summary>
+ /// 瀹炰粯閲戦
+ /// </summary>
+ public decimal PayAmount { get; set; }
+
+ /// <summary>
+ /// 鏀粯鏃堕棿
+ /// </summary>
+ public DateTime? PayTime { get; set; }
+
+ /// <summary>
+ /// 鏀粯鐘舵��
+ /// </summary>
+ public LifePayStatusEnum PayStatus { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鐘舵��
+ /// </summary>
+ public LifePayOrderStatusEnum LifePayOrderStatus { get; set; }
+
+ /// <summary>
+ /// 瀹屾垚鏃堕棿
+ /// </summary>
+ public DateTime? FinishTime { get; set; }
+
+ /// <summary>
+ /// 澶栭儴璁㈠崟鍙�
+ /// </summary>
+ public string OutOrderNo { get; set; }
+
+
+ /// <summary>
+ /// 涓嬪崟鏃堕棿
+ /// </summary>
+ public DateTime? CreationTime { get; set; }
+
+ /// <summary>
+ /// 閫�娆炬椂闂�
+ /// </summary>
+ public DateTime? RefundTime { get; set; }
+
+ /// <summary>
+ /// 閫�娆惧嚟璇�
+ /// </summary>
+ public string RefundCredentialsImgUrl { get; set; }
+
+
+ public string RefundApplyRemark { get; set; }
+
+ public string RefundCheckRemark { get; set; }
+
+ /// <summary>
+ /// 娓犻亾娴佹按鍙�
+ /// </summary>
+ public string ACOOLYOrderNo { get; set; }
+
+ /// <summary>
+ /// 骞冲彴閫�娆剧姸鎬�
+ /// </summary>
+ public LifePayRefundStatusEnum? LifePayRefundStatus { get; set; }
+
+
+ /// <summary>
+ /// 瀹為檯鍏呭�奸噾棰�
+ /// </summary>
+ public decimal? ActualRechargeAmount { get; set; }
+
+ /// <summary>
+ /// 閫�娆鹃噾棰�
+ /// </summary>
+ public decimal? RefundPrice { get; set; }
+}
public class CreateLifePayOrderOutput
{
public string OrderNo { get; set; }
diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
index 6531979..4491695 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -317,6 +317,47 @@
return result;
}
+ public async Task<LifePayRefundOrderOutput> GetLifePayRefundOrderDetail(string orderNo)
+ {
+ var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync();
+ var platformRate = await _lifePayRateRepository.FirstOrDefaultAsync(r => r.RateType == LifePayRateTypeEnum.渚涘簲鍟嗘姌鎵d环);
+ var channle = await _lifePayChannlesRep.FirstOrDefaultAsync(r => r.ChannlesNum == order.ChannelId);
+ var premium = await _lifePayPremiumRepository.Where(x => x.IsDeleted == false && x.PremiumType == order.LifePayType).FirstOrDefaultAsync();
+ CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�");
+ var user = await _lifePayUserRepository.FirstOrDefaultAsync(x => x.Id == order.UserId);
+
+ var channlesRakePrice = (order.PayAmount - (order.PlatformDeductionAmount == null ? 0 : order.PlatformDeductionAmount)) * channle.ChannlesRakeRate / 100;
+ var result = new LifePayRefundOrderOutput()
+ {
+ UserName = user.Name,
+ UserPhoneNumber = user.PhoneNumber,
+ DiscountAmount = order.DiscountAmount,
+ FinishTime = order.FinishTime,
+ Id = order.Id,
+ OutOrderNo = order.OutOrderNo,
+ LifePayChannle = channle.ChannlesName,
+ LifePayOrderStatus = order.LifePayOrderStatus,
+ LifePayOrderType = order.LifePayOrderType,
+ LifePayType = order.LifePayType,
+ OrderNo = order.OrderNo,
+ PayAmount = order.PayAmount,
+ RechargeAmount = order.RechargeAmount,
+ PayStatus = order.PayStatus,
+ PayTime = order.PayTime,
+ RefundCredentialsImgUrl = order.RefundCredentialsImgUrl.GetOssPath(),
+ CreationTime = order.CreationTime,
+ RefundCheckRemark = order.RefundCheckRemark,
+ RefundApplyRemark = order.RefundApplyRemark,
+ RefundTime = order.RefundTime,
+ ACOOLYOrderNo = order.ACOOLYOrderNo,
+ LifePayRefundStatus = order.LifePayRefundStatus,
+ ActualRechargeAmount = order.ActualRechargeAmount,
+ RefundPrice = order.RefundPrice,
+ };
+
+ return result;
+ }
+
/// <summary>
/// 鑾峰彇鎴戠殑璁㈠崟鍒嗛〉鏁版嵁
/// </summary>
@@ -1052,6 +1093,7 @@
order.PayStatus = LifePayStatusEnum.寰呴��娆�;
}
+
await _lifePayOrderRepository.UpdateAsync(order);
}
@@ -1076,10 +1118,12 @@
throw new UserFriendlyException("褰撳墠璁㈠崟鐘舵�佹棤娉曢��娆�");
}
+ var outRefundNo = order.ChannelId + CreateRefundOrderNo();
+ order.RefundOrderNo = outRefundNo;
switch (order.LifePayType)
{
case LifePayTypeEnum.WxPay:
- var wxRefundResult = await WxPayDomesticRefunds(order.OrderNo, order.RefundApplyRemark, Convert.ToInt32(order.PayAmount * 100), Convert.ToInt32(order.PayAmount * 100));
+ var wxRefundResult = await WxPayDomesticRefunds(order.OrderNo, outRefundNo,order.RefundApplyRemark, Convert.ToInt32(order.PayAmount * 100), Convert.ToInt32(order.PayAmount * 100));
if (wxRefundResult.Status == "SUCCESS")
{
order.PayStatus = LifePayStatusEnum.宸查��娆�;
@@ -1167,12 +1211,12 @@
/// <param name="total"></param>
/// <param name="currency"></param>
/// <returns></returns>
- public async Task<WxPayDomesticRefundsReponse> WxPayDomesticRefunds(string outTradeNo, string reason, int refund, int total, string currency = "CNY")
+ public async Task<WxPayDomesticRefundsReponse> WxPayDomesticRefunds(string outTradeNo,string outRefundNo, string reason, int refund, int total, string currency = "CNY")
{
WxPayDomesticRefundsRequest req = new WxPayDomesticRefundsRequest
{
OutTradeNo = outTradeNo,
- OutRefundNo = CreateRefundOrderNo(),
+ OutRefundNo = outRefundNo,
Reason = reason,
Amount = new Model_WxPayDomesticRefunds_Amount
{
diff --git a/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs b/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs
index 11f6a11..fd522ed 100644
--- a/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs
+++ b/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs
@@ -71,6 +71,11 @@
public string OutOrderNo { get; set; }
/// <summary>
+ /// 閫�娆捐鍗曞彿
+ /// </summary>
+ public string? RefundOrderNo { get; set; }
+
+ /// <summary>
/// 娓犻亾娴佹按鍙�
/// </summary>
public string ACOOLYOrderNo { get; set; }
diff --git a/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs b/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs
index 0f24eca..e3c7a06 100644
--- a/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs
+++ b/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs
@@ -202,6 +202,16 @@
return await _lifePayService.GetLifePayOrderDetail(orderNo);
}
+ /// <summary>
+ /// 鑾峰彇閫�娆捐鍗曡鎯�
+ /// </summary>
+ /// <param name="orderNo"></param>
+ /// <returns></returns>
+ [HttpGet]
+ public async Task<LifePayRefundOrderOutput> GetLifePayRefundOrderDetail(string orderNo)
+ {
+ return await _lifePayService.GetLifePayRefundOrderDetail(orderNo);
+ }
/// <summary>
/// 鑾峰彇鎴戠殑璁㈠崟鍒嗛〉鏁版嵁
--
Gitblit v1.9.1