diff --git a/CoreCms.Net.IServices/Pay/IAliPayServices.cs b/CoreCms.Net.IServices/Pay/IAliPayServices.cs
index f79500ee..03939f9a 100644
--- a/CoreCms.Net.IServices/Pay/IAliPayServices.cs
+++ b/CoreCms.Net.IServices/Pay/IAliPayServices.cs
@@ -25,5 +25,16 @@ namespace CoreCms.Net.IServices
/// 实体数据
///
Task PubPay(CoreCmsBillPayments entity);
+
+
+ ///
+ /// 用户退款
+ ///
+ /// 退款单数据
+ /// 支付单数据
+ ///
+ Task Refund(CoreCmsBillRefund refundInfo, CoreCmsBillPayments paymentInfo);
+
+
}
}
\ No newline at end of file
diff --git a/CoreCms.Net.Services/Bill/CoreCmsBillRefundServices.cs b/CoreCms.Net.Services/Bill/CoreCmsBillRefundServices.cs
index 46e294b7..39e1834a 100644
--- a/CoreCms.Net.Services/Bill/CoreCmsBillRefundServices.cs
+++ b/CoreCms.Net.Services/Bill/CoreCmsBillRefundServices.cs
@@ -229,8 +229,7 @@ namespace CoreCms.Net.Services
//支付宝退款
else if (panyMentsInfo.paymentCode == GlobalEnumVars.PaymentsTypes.alipay.ToString())
{
- jm.status = false;
- jm.msg = "支付宝退款未开通";
+ jm = await _aliPayServices.Refund(info, panyMentsInfo);
}
//余额退款
else if (panyMentsInfo.paymentCode == GlobalEnumVars.PaymentsTypes.balancepay.ToString())
diff --git a/CoreCms.Net.Services/Pay/AliPayServices.cs b/CoreCms.Net.Services/Pay/AliPayServices.cs
index 262fb6cd..3baf771b 100644
--- a/CoreCms.Net.Services/Pay/AliPayServices.cs
+++ b/CoreCms.Net.Services/Pay/AliPayServices.cs
@@ -28,6 +28,8 @@ using Essensoft.Paylink.WeChatPay;
using Microsoft.Extensions.Options;
using Newtonsoft.Json.Linq;
using static Aliyun.OSS.Model.LiveChannelStat;
+using Essensoft.Paylink.WeChatPay.V2.Request;
+using Essensoft.Paylink.WeChatPay.V2;
namespace CoreCms.Net.Services
{
@@ -72,8 +74,7 @@ namespace CoreCms.Net.Services
- var config = await _alipayConfigServices.QueryByClauseAsync(p =>
- p.isDefault == true && p.isEnable == true && p.appType == tradeType);
+ var config = await _alipayConfigServices.QueryByClauseAsync(p => p.isDefault == true && p.isEnable == true && p.appType == tradeType);
if (config == null)
{
jm.msg = "支付配置信息获取失败";
@@ -219,5 +220,75 @@ namespace CoreCms.Net.Services
+ ///
+ /// 用户退款
+ ///
+ /// 退款单数据
+ /// 支付单数据
+ ///
+ public async Task Refund(CoreCmsBillRefund refundInfo, CoreCmsBillPayments paymentInfo)
+ {
+ var jm = new WebApiCallBack();
+
+ var tradeType = GlobalEnumVars.WeiChatPayTradeType.JSAPI.ToString();
+ if (!string.IsNullOrEmpty(paymentInfo.parameters))
+ {
+ var jObj = (JObject)JsonConvert.DeserializeObject(paymentInfo.parameters);
+ if (jObj != null && jObj.TryGetValue("trade_type", out var value))
+ tradeType = PayHelper.GetWeiChatPayTradeType(value.ObjectToString());
+ }
+
+ var config = await _alipayConfigServices.QueryByClauseAsync(p => p.isDefault == true && p.isEnable == true && p.appType == tradeType);
+ if (config == null)
+ {
+ jm.msg = "支付配置信息获取失败";
+ return jm;
+ }
+
+ if (string.IsNullOrEmpty(config.refundUrl))
+ {
+ jm.msg = "未获取到配置的退款通知地址";
+ return jm;
+ }
+
+ //构建linkPay请求配置实体
+ var payOptions = new AlipayOptions
+ {
+ AppId = config.appId,
+ AlipayPublicKey = config.publicKey,
+ AppPrivateKey = config.privateKey,
+ ServerUrl = config.serverUrl,
+ SignType = config.signType,
+ AppPublicCert = config.appPublicCert,
+ AlipayPublicCert = config.alipayPublicCert,
+ AlipayRootCert = config.alipayRootCert
+ };
+
+
+ var model = new AlipayTradeRefundModel
+ {
+ OutTradeNo = paymentInfo.paymentId,
+ TradeNo = paymentInfo.tradeNo,
+ RefundAmount = refundInfo.money.ToString(CultureInfo.InvariantCulture),
+ OutRequestNo = refundInfo.refundId,
+ RefundReason = "用户申请退款",
+ };
+
+
+ var req = new AlipayTradeRefundRequest();
+ req.SetBizModel(model);
+
+ var response = await _client.ExecuteAsync(req, payOptions);
+
+ jm.msg = !response.IsError ? "退款成功" : "退款失败";
+ jm.status = !response.IsError;
+ jm.data = response;
+
+
+ return jm;
+ }
+
+
+
}
}
\ No newline at end of file
diff --git a/CoreCms.Net.Web.Admin/wwwroot/views/financial/billrefund/audit.html b/CoreCms.Net.Web.Admin/wwwroot/views/financial/billrefund/audit.html
index c204d319..d25d4bf6 100644
--- a/CoreCms.Net.Web.Admin/wwwroot/views/financial/billrefund/audit.html
+++ b/CoreCms.Net.Web.Admin/wwwroot/views/financial/billrefund/audit.html
@@ -1,5 +1,12 @@