将微信支付关闭状态(CLOSED)写入到支付记录中
This commit is contained in:
parent
1d0a22572d
commit
fdf165b053
@ -91,6 +91,8 @@ public class SysCommonService : IDynamicApiController, ITransient
|
||||
|
||||
// 接口分组/控制器信息
|
||||
var controllerActionDescriptor = action.ActionDescriptor as ControllerActionDescriptor;
|
||||
if (controllerActionDescriptor == null)
|
||||
continue;
|
||||
var apiDescription = controllerActionDescriptor.ControllerTypeInfo.GetCustomAttribute<ApiDescriptionSettingsAttribute>(true);
|
||||
var controllerName = controllerActionDescriptor.ControllerName;
|
||||
if (!apiOuput.Children.Exists(u => u.Name == controllerName))
|
||||
|
||||
@ -38,7 +38,10 @@ public class SysWechatPayService : IDynamicApiController, ITransient
|
||||
/// <returns></returns>
|
||||
private WechatTenpayClient CreateTenpayClient()
|
||||
{
|
||||
var cerFilePath = App.WebHostEnvironment.ContentRootPath + _wechatPayOptions.MerchantCertificatePrivateKey;
|
||||
var cerFilePath = _wechatPayOptions.MerchantCertificatePrivateKey;
|
||||
|
||||
if (!File.Exists(cerFilePath))
|
||||
throw Oops.Oh<Exception>("商户证书文件不存在:" + cerFilePath);
|
||||
|
||||
var tenpayClientOptions = new WechatTenpayClientOptions()
|
||||
{
|
||||
@ -353,6 +356,12 @@ public class SysWechatPayService : IDynamicApiController, ITransient
|
||||
[DisplayName("微信支付订单号查询(校正)")]
|
||||
public async Task<WechatPayOutput> GetPayTransactionByIdAsync(string transactionId)
|
||||
{
|
||||
if (string.IsNullOrEmpty(transactionId))
|
||||
throw Oops.Oh("TransactionId 不能为空");
|
||||
|
||||
if (string.IsNullOrEmpty(_wechatPayOptions.MerchantId) || string.IsNullOrEmpty(_wechatPayOptions.MerchantCertificateSerialNumber))
|
||||
throw Oops.Oh("商户号或证书序列号不能为空,请检查支付配置");
|
||||
|
||||
var request = new GetPayTransactionByIdRequest()
|
||||
{
|
||||
MerchantId = _wechatPayOptions.MerchantId,
|
||||
@ -360,21 +369,18 @@ public class SysWechatPayService : IDynamicApiController, ITransient
|
||||
WechatpayCertificateSerialNumber = _wechatPayOptions.MerchantCertificateSerialNumber
|
||||
};
|
||||
var response = await _wechatTenpayClient.ExecuteGetPayTransactionByIdAsync(request);
|
||||
if (response.TradeState == "SUCCESS")
|
||||
if (response.TradeState == "SUCCESS" || response.TradeState == "CLOSED")
|
||||
{
|
||||
// 修正订单支付状态
|
||||
var wechatPay = await _sysWechatPayRep.GetFirstAsync(u => u.TransactionId == transactionId && u.MerchantId == request.MerchantId);
|
||||
var wechatPay = await _sysWechatPayRep.GetFirstAsync(u => u.TransactionId == request.TransactionId && u.MerchantId == request.MerchantId);
|
||||
if (wechatPay != null && string.IsNullOrEmpty(wechatPay.TradeState))
|
||||
{
|
||||
wechatPay.TransactionId = response.TransactionId; // 支付订单号
|
||||
wechatPay.TradeType = response.TradeType; // 交易类型
|
||||
wechatPay.TradeState = response.TradeState; // 交易状态
|
||||
wechatPay.TradeStateDescription = response.TradeStateDescription; // 交易状态描述
|
||||
wechatPay.BankType = response.BankType; // 付款银行类型
|
||||
wechatPay.Total = response.Amount.Total; // 订单总金额
|
||||
wechatPay.PayerTotal = response.Amount.PayerTotal; // 用户支付金额
|
||||
wechatPay.BankType = response.BankType; // 付款银行类型
|
||||
wechatPay.PayerTotal = response.Amount?.PayerTotal; // 用户支付金额
|
||||
wechatPay.SuccessTime = response.SuccessTime; // 支付完成时间
|
||||
|
||||
await _sysWechatPayRep.AsUpdateable(wechatPay).IgnoreColumns(true).ExecuteCommandAsync();
|
||||
return wechatPay.Adapt<WechatPayOutput>();
|
||||
}
|
||||
@ -391,6 +397,12 @@ public class SysWechatPayService : IDynamicApiController, ITransient
|
||||
[DisplayName("微信商户订单号查询(校正)")]
|
||||
public async Task<WechatPayOutput> GetPayTransactionByOutTradeNumberAsync(string outTradeNumber)
|
||||
{
|
||||
if (string.IsNullOrEmpty(outTradeNumber))
|
||||
throw Oops.Oh("商户订单号(OutTradeNumber)不能为空");
|
||||
|
||||
if (string.IsNullOrEmpty(_wechatPayOptions.MerchantId) || string.IsNullOrEmpty(_wechatPayOptions.MerchantCertificateSerialNumber))
|
||||
throw Oops.Oh("商户号或证书序列号不能为空,请检查支付配置");
|
||||
|
||||
var request = new GetPayTransactionByOutTradeNumberRequest()
|
||||
{
|
||||
MerchantId = _wechatPayOptions.MerchantId,
|
||||
@ -398,7 +410,7 @@ public class SysWechatPayService : IDynamicApiController, ITransient
|
||||
WechatpayCertificateSerialNumber = _wechatPayOptions.MerchantCertificateSerialNumber
|
||||
};
|
||||
var response = await _wechatTenpayClient.ExecuteGetPayTransactionByOutTradeNumberAsync(request);
|
||||
if (response.TradeState == "SUCCESS")
|
||||
if (response.TradeState == "SUCCESS" || response.TradeState == "CLOSED")
|
||||
{
|
||||
// 修正订单支付状态
|
||||
var wechatPay = await _sysWechatPayRep.GetFirstAsync(u => u.OutTradeNumber == outTradeNumber && u.MerchantId == request.MerchantId);
|
||||
@ -408,9 +420,8 @@ public class SysWechatPayService : IDynamicApiController, ITransient
|
||||
wechatPay.TradeType = response.TradeType; // 交易类型
|
||||
wechatPay.TradeState = response.TradeState; // 交易状态
|
||||
wechatPay.TradeStateDescription = response.TradeStateDescription; // 交易状态描述
|
||||
wechatPay.BankType = response.BankType; // 付款银行类型
|
||||
wechatPay.Total = response.Amount.Total; // 订单总金额
|
||||
wechatPay.PayerTotal = response.Amount.PayerTotal; // 用户支付金额
|
||||
wechatPay.BankType = response.BankType; // 付款银行类型
|
||||
wechatPay.PayerTotal = response.Amount?.PayerTotal; // 用户支付金额
|
||||
wechatPay.SuccessTime = response.SuccessTime; // 支付完成时间
|
||||
await _sysWechatPayRep.AsUpdateable(wechatPay).IgnoreColumns(true).ExecuteCommandAsync();
|
||||
return wechatPay.Adapt<WechatPayOutput>();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user