zhengyuxuan
2025-03-20 bf83f6be388f97302c88f21cb340811abf3a596b
fix:1分钱支付
5个文件已修改
194 ■■■■■ 已修改文件
LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.Application/LifePay/LifePayService.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
@@ -194,6 +194,14 @@
    /// <returns></returns>
    Task<PageOutput<LifePayOrderListOutput>> GetLifePayOrderPage(QueryLifePayOrderListInput input);
    /// <summary>
    /// 获取订单详情
    /// </summary>
    /// <param name="orderNo"></param>
    /// <returns></returns>
    Task<LifePayOrderOutput> GetLifePayOrderDetail(string orderNo);
    /// <summary>
    /// 根据订单号获取支付状态
    /// </summary>
LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs
@@ -452,6 +452,138 @@
    public string ACOOLYOrderNo { get; set; }
}
public class LifePayOrderOutput
{
    public Guid Id { 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 OrderParamDetailJsonStr { 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; }
    /// <summary>
    /// 平台折扣比例
    /// </summary>
    public decimal? PlatformRate { get; set; }
    /// <summary>
    /// 平台扣款金额
    /// </summary>
    public decimal? PlatformPrice { get; set; }
    /// <summary>
    /// 渠道折扣
    /// </summary>
    public decimal? ChannleRate { get; set; }
    /// <summary>
    /// 渠道佣金比例
    /// </summary>
    public decimal? ChannlesRakeRate { get; set; }
    /// <summary>
    /// 渠道佣金
    /// </summary>
    public decimal? ChannlesRakePrice { get; set; }
    /// <summary>
    /// 手续费比例
    /// </summary>
    public decimal PremiumRate { get; set; }
}
public class CreateLifePayOrderOutput
{
    public string OrderNo { get; set; }
LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -264,6 +264,37 @@
        return result;
    }
    public async Task<LifePayOrderOutput> GetLifePayOrderDetail(string orderNo)
    {
        var result = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo)
                                            .Select(x =>
                                                    new LifePayOrderOutput
                                                    {
                                                        DiscountAmount = x.DiscountAmount,
                                                        FinishTime = x.FinishTime,
                                                        Id = x.Id,
                                                        LifePayOrderStatus = x.LifePayOrderStatus,
                                                        LifePayOrderType = x.LifePayOrderType,
                                                        LifePayType = x.LifePayType,
                                                        OrderNo = x.OrderNo,
                                                        PayAmount = x.PayAmount,
                                                        RechargeAmount = x.RechargeAmount,
                                                        PayStatus = x.PayStatus,
                                                        PayTime = x.PayTime,
                                                        OrderParamDetailJsonStr = x.OrderParamDetailJsonStr,
                                                        RefundCredentialsImgUrl = x.RefundCredentialsImgUrl.GetOssPath(),
                                                        CreationTime = x.CreationTime,
                                                        RefundCheckRemark = x.RefundCheckRemark,
                                                        RefundApplyRemark = x.RefundApplyRemark,
                                                        RefundTime = x.RefundTime,
                                                        ACOOLYOrderNo = x.ACOOLYOrderNo,
                                                    })
                                            .FirstOrDefaultAsync();
        CheckExtensions.IfTrueThrowUserFriendlyException(result == null, "订单不存在");
        return result;
    }
    /// <summary>
    /// 获取我的订单分页数据
    /// </summary>
@@ -340,6 +371,8 @@
        return result;
    }
    /// <summary>
    /// 根据订单号获取支付状态
@@ -1058,6 +1091,7 @@
        order.RefundCheckRemark = input.RefundCheckRemark;
        order.RefundTime = DateTime.Now;
        order.RefundCheckUserId = CurrentUser.Id;
        order.RefundPrice = order.PayAmount;
        await _lifePayOrderRepository.UpdateAsync(order);
@@ -1406,10 +1440,10 @@
    private (decimal PayAmont, decimal DiscountAmount, decimal RechargeAmount) CalculateAmount(decimal amount, decimal rate)
    {
        /// 正常支付
        var payAmount = decimal.Round(amount * rate / 100, 2, MidpointRounding.AwayFromZero);
        //var payAmount = decimal.Round(amount * rate / 100, 2, MidpointRounding.AwayFromZero);
        /// 1分钱支付
        //decimal payAmount = 0.01m;
        decimal payAmount = 0.01m;
        CheckExtensions.IfTrueThrowUserFriendlyException(payAmount < 0.01m, "支付金额错误");
LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs
@@ -132,6 +132,12 @@
        public string? ChannelId { get; set; }
        /// <summary>
        /// 退款金额
        /// </summary>
        public decimal? RefundPrice { get; set; }
        /// <summary>
        /// 实际充值金额
        /// </summary>
        public decimal? ActualRechargeAmount { get; set; }
LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs
@@ -196,11 +196,11 @@
        /// </summary>
        /// <param name="orderNo"></param>
        /// <returns></returns>
        //[HttpGet]
        //public async Task<UserLifePayOrderOutput> GetLifePayOrderDetail(string orderNo)
        //{
        //    return await _lifePayService.GetLifePayOrderDetail(orderNo);
        //}
        [HttpGet]
        public async Task<LifePayOrderOutput> GetLifePayOrderDetail(string orderNo)
        {
            return await _lifePayService.GetLifePayOrderDetail(orderNo);
        }
        /// <summary>