feat: 支付完成后自动为用户充值VIP并支持按商品类型计算有效期
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using Alipay.EasySDK.Factory;
|
||||
using Alipay.EasySDK.Kernel.Util;
|
||||
using Alipay.EasySDK.Payment.Page.Models;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Volo.Abp.Domain.Services;
|
||||
|
||||
@@ -9,10 +10,12 @@ namespace Yi.Framework.AiHub.Domain.Alipay;
|
||||
public class AlipayManager : DomainService
|
||||
{
|
||||
private readonly ILogger<AlipayManager> _logger;
|
||||
private readonly IConfiguration _configuration;
|
||||
|
||||
public AlipayManager(ILogger<AlipayManager> logger)
|
||||
public AlipayManager(ILogger<AlipayManager> logger, IConfiguration configuration)
|
||||
{
|
||||
_logger = logger;
|
||||
_configuration = configuration;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -27,7 +30,7 @@ public class AlipayManager : DomainService
|
||||
{
|
||||
// 2. 发起API调用(以创建当面付收款二维码为例)
|
||||
var response = Factory.Payment.Page()
|
||||
.Pay(productName, orderNumber, totalAmount.ToString(), "https://ccnetcore.com/pay/sucess");
|
||||
.Pay(productName, orderNumber, totalAmount.ToString(), _configuration["Alipay:ReturnUrl"]);
|
||||
// 3. 处理响应或异常
|
||||
if (ResponseChecker.Success(response))
|
||||
{
|
||||
|
||||
@@ -69,7 +69,7 @@ public class PayManager : DomainService
|
||||
/// <param name="tradeStatus">交易状态</param>
|
||||
/// <param name="tradeNo">支付宝交易号</param>
|
||||
/// <returns></returns>
|
||||
public async Task UpdateOrderStatusAsync(string outTradeNo, TradeStatusEnum tradeStatus, string? tradeNo = null)
|
||||
public async Task<PayOrderAggregateRoot> UpdateOrderStatusAsync(string outTradeNo, TradeStatusEnum tradeStatus, string? tradeNo = null)
|
||||
{
|
||||
var order = await _payOrderRepository.GetFirstAsync(x => x.OutTradeNo == outTradeNo);
|
||||
if (order == null)
|
||||
@@ -84,6 +84,7 @@ public class PayManager : DomainService
|
||||
}
|
||||
|
||||
await _payOrderRepository.UpdateAsync(order);
|
||||
return order;
|
||||
}
|
||||
|
||||
|
||||
@@ -128,13 +129,10 @@ public class PayManager : DomainService
|
||||
/// <returns></returns>
|
||||
private TradeStatusEnum ParseTradeStatus(string tradeStatus)
|
||||
{
|
||||
return tradeStatus switch
|
||||
if (Enum.TryParse<TradeStatusEnum>(tradeStatus, out var result))
|
||||
{
|
||||
"WAIT_BUYER_PAY" => TradeStatusEnum.WAIT_BUYER_PAY,
|
||||
"TRADE_SUCCESS" => TradeStatusEnum.TRADE_SUCCESS,
|
||||
"TRADE_FINISHED" => TradeStatusEnum.TRADE_FINISHED,
|
||||
"TRADE_CLOSED" => TradeStatusEnum.TRADE_CLOSED,
|
||||
_ => TradeStatusEnum.WAIT_TRADE
|
||||
};
|
||||
return result;
|
||||
}
|
||||
return TradeStatusEnum.WAIT_TRADE;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user