From 83b72e32a89988dd721ef7bc8ea673751092fb4a Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期三, 10 十二月 2025 16:11:13 +0800
Subject: [PATCH] fix: bug
---
LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs | 78 ++++++++++++++++++++++++++++++++++++---
1 files changed, 72 insertions(+), 6 deletions(-)
diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
index b93f77b..da0c289 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayOrderService.cs
@@ -1,7 +1,10 @@
锘縰sing LifePayment.Application.Contracts;
+using LifePayment.Domain;
using LifePayment.Domain.LifePay;
using LifePayment.Domain.Models;
using LifePayment.Domain.Shared;
+using Microsoft.EntityFrameworkCore;
+using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -9,11 +12,9 @@
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
-using Microsoft.EntityFrameworkCore;
using ZeroD.Util;
-using LifePayment.Domain;
+using ZeroD.Util.Fadd;
using static LifePayment.Domain.Shared.LifePaymentConstant;
-using Newtonsoft.Json;
namespace LifePayment.Application.LifePay
{
@@ -297,7 +298,7 @@
var query = await _aliPayApi.QueryAlipayTradeRefund(new OrderInQuiryInput() { OutTradeNo = input.OrderNo, OutRefundNo = input.OutRefundNo });
if (query.Code == AlipayResultCode.Success && query.RefundStatus == AlipayRefundStatus.Success)
{
- data.OrderNo = input.OutRefundNo;
+ data.OrderNo = input.OrderNo;
data.ExtraProperties = JsonConvert.SerializeObject(query);
data.FinishTime = Convert.ToDateTime(query.GmtRefundPay);
data.Amount = Convert.ToDecimal(query.RefundAmount);
@@ -323,7 +324,7 @@
var query = await _wxPayApi.WxPayDomesticRefundsQuery(input.OutRefundNo);
if (query.Status == WxPayRefundStatus.閫�娆炬垚鍔�)
{
- data.OrderNo = input.OutRefundNo;
+ data.OrderNo = input.OrderNo;
data.ExtraProperties = JsonConvert.SerializeObject(query);
data.FinishTime = Convert.ToDateTime(query.SuccessTime);
data.Amount = Convert.ToDecimal(query.Amount.Total) / 100;
@@ -336,8 +337,74 @@
}
}
+ /// <summary>
+ /// 鑾峰彇閫�娆惧钩鍙版祦姘磋鎯�
+ /// </summary>
+ /// <returns></returns>
+ public async Task<GetRefundPlatformTradeDetailOutput> GetRefundPlatformTradeDetail(string orderNo)
+ {
+ var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync();
+ CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�");
+ CheckExtensions.IfTrueThrowUserFriendlyException(order.LifePayRefundStatus != LifePayRefundStatusEnum.寰呴��娆� && order.LifePayRefundStatus != LifePayRefundStatusEnum.閫�娆句腑, "褰撳墠璁㈠崟鐘舵�佹棤娉曟煡鐪嬮��娆炬祦姘�");
+ CheckExtensions.IfTrueThrowUserFriendlyException(order.RefundOrderNo.IsNullOrEmpty(), "涓嶅瓨鍦ㄩ��娆炬祦姘磋鍗�");
+ var result = new GetRefundPlatformTradeDetailOutput();
+ if (order.LifePayType == LifePayTypeEnum.AliPay)
+ {
+ var query = await _aliPayApi.QueryAlipayTradeRefund(new OrderInQuiryInput() { OutTradeNo = order.OrderNo, OutRefundNo = order.RefundOrderNo });
+ result.OrderNo = order.OrderNo;
+ result.RefundOrderNo = order.RefundOrderNo;
+ result.OutOrderNo = query.TradeNo;
+ result.LifePayType = LifePayTypeEnum.AliPay;
+ result.RefundTime = order.RefundTime;
+ result.RefundSuccessTime = query.GmtRefundPay.IsNullOrEmpty() ? null : Convert.ToDateTime(query.GmtRefundPay);
+ result.RefundPlatformStatus = MapAlipayRefundStatusToPlatformEnum(query.RefundStatus);
+ }
+ else if (order.LifePayType == LifePayTypeEnum.WxPay)
+ {
+ var query = await _wxPayApi.WxPayDomesticRefundsQuery(order.RefundOrderNo);
+ result.OrderNo = order.OrderNo;
+ result.RefundOrderNo = order.RefundOrderNo;
+ result.OutOrderNo = query.TransactionId;
+ result.LifePayType = LifePayTypeEnum.WxPay;
+ result.RefundTime = query.CreateTime.IsNullOrEmpty() ? null : Convert.ToDateTime(query.CreateTime);
+ result.RefundSuccessTime = query.SuccessTime.IsNullOrEmpty() ? null : Convert.ToDateTime(query.SuccessTime);
+ result.RefundPlatformStatus = MapWxpayRefundStatusToPlatformEnum(query.Status);
+ }
+
+ return result;
+ }
+
+ /// <summary>
+ /// 鏀粯瀹濋��娆剧姸鎬佹槧灏勫埌閫氱敤閫�娆惧钩鍙扮姸鎬侊紙Switch 鐗堟湰锛�
+ /// </summary>
+ /// <param name="alipayStatus">鏀粯瀹濋��娆剧姸鎬�</param>
+ /// <returns>閫氱敤閫�娆惧钩鍙扮姸鎬�</returns>
+ public static RefundPlatformStatusEnum MapAlipayRefundStatusToPlatformEnum(string alipayRefundStatus)
+ {
+ return alipayRefundStatus switch
+ {
+ AlipayRefundStatus.Success => RefundPlatformStatusEnum.SUCCESS,
+ _ => RefundPlatformStatusEnum.PROCESSING
+ };
+ }
+
+ /// <summary>
+ /// 寰俊閫�娆剧姸鎬佹槧灏勫埌閫氱敤閫�娆惧钩鍙扮姸鎬侊紙Switch 鐗堟湰锛�
+ /// </summary>
+ /// <param name="wxPayRefundStatus">寰俊閫�娆剧姸鎬�</param>
+ /// <returns>閫氱敤閫�娆惧钩鍙扮姸鎬�</returns>
+ public static RefundPlatformStatusEnum MapWxpayRefundStatusToPlatformEnum(string wxPayRefundStatus)
+ {
+ return wxPayRefundStatus switch
+ {
+ WxPayRefundStatus.閫�娆炬垚鍔� => RefundPlatformStatusEnum.SUCCESS,
+ WxPayRefundStatus.閫�娆惧叧闂� => RefundPlatformStatusEnum.CLOSED,
+ WxPayRefundStatus.閫�娆惧鐞嗕腑 => RefundPlatformStatusEnum.PROCESSING,
+ _ => RefundPlatformStatusEnum.ABNORMAL
+ };
+ }
/// <summary>
/// 缁熻鎵�鏈夋秷璐规祦姘�
@@ -587,6 +654,5 @@
}
#endregion
-
}
}
--
Gitblit v1.9.1