LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LifePayment/LifePayment.Application/LifePay/LifePayService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
@@ -202,6 +202,10 @@ /// <returns></returns> Task<LifePayOrderOutput> GetLifePayOrderDetail(string orderNo); Task<LifePayRefundOrderOutput> GetLifePayRefundOrderDetail(string orderNo); /// <summary> /// 根据订单号获取支付状态 /// </summary> LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs
@@ -600,10 +600,120 @@ /// 手续费 /// </summary> public decimal PremiumPrice { get; set; } /// <summary> /// 平台利润 /// </summary> public decimal? Profit { get; set; } } public class LifePayRefundOrderOutput { public Guid Id { get; set; } /// <summary> /// 用户账号 /// </summary> public string UserPhoneNumber { get; set; } public string UserName { get; set; } public string LifePayChannle { 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 OutOrderNo { 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; } } public class CreateLifePayOrderOutput { public string OrderNo { get; set; } LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -317,6 +317,47 @@ return result; } public async Task<LifePayRefundOrderOutput> GetLifePayRefundOrderDetail(string orderNo) { var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync(); var platformRate = await _lifePayRateRepository.FirstOrDefaultAsync(r => r.RateType == LifePayRateTypeEnum.供应商折扣价); var channle = await _lifePayChannlesRep.FirstOrDefaultAsync(r => r.ChannlesNum == order.ChannelId); var premium = await _lifePayPremiumRepository.Where(x => x.IsDeleted == false && x.PremiumType == order.LifePayType).FirstOrDefaultAsync(); CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "订单不存在"); var user = await _lifePayUserRepository.FirstOrDefaultAsync(x => x.Id == order.UserId); var channlesRakePrice = (order.PayAmount - (order.PlatformDeductionAmount == null ? 0 : order.PlatformDeductionAmount)) * channle.ChannlesRakeRate / 100; var result = new LifePayRefundOrderOutput() { UserName = user.Name, UserPhoneNumber = user.PhoneNumber, DiscountAmount = order.DiscountAmount, FinishTime = order.FinishTime, Id = order.Id, OutOrderNo = order.OutOrderNo, LifePayChannle = channle.ChannlesName, LifePayOrderStatus = order.LifePayOrderStatus, LifePayOrderType = order.LifePayOrderType, LifePayType = order.LifePayType, OrderNo = order.OrderNo, PayAmount = order.PayAmount, RechargeAmount = order.RechargeAmount, PayStatus = order.PayStatus, PayTime = order.PayTime, RefundCredentialsImgUrl = order.RefundCredentialsImgUrl.GetOssPath(), CreationTime = order.CreationTime, RefundCheckRemark = order.RefundCheckRemark, RefundApplyRemark = order.RefundApplyRemark, RefundTime = order.RefundTime, ACOOLYOrderNo = order.ACOOLYOrderNo, LifePayRefundStatus = order.LifePayRefundStatus, ActualRechargeAmount = order.ActualRechargeAmount, RefundPrice = order.RefundPrice, }; return result; } /// <summary> /// 获取我的订单分页数据 /// </summary> @@ -1052,6 +1093,7 @@ order.PayStatus = LifePayStatusEnum.待退款; } await _lifePayOrderRepository.UpdateAsync(order); } @@ -1076,10 +1118,12 @@ throw new UserFriendlyException("当前订单状态无法退款"); } var outRefundNo = order.ChannelId + CreateRefundOrderNo(); order.RefundOrderNo = outRefundNo; switch (order.LifePayType) { case LifePayTypeEnum.WxPay: var wxRefundResult = await WxPayDomesticRefunds(order.OrderNo, order.RefundApplyRemark, Convert.ToInt32(order.PayAmount * 100), Convert.ToInt32(order.PayAmount * 100)); var wxRefundResult = await WxPayDomesticRefunds(order.OrderNo, outRefundNo,order.RefundApplyRemark, Convert.ToInt32(order.PayAmount * 100), Convert.ToInt32(order.PayAmount * 100)); if (wxRefundResult.Status == "SUCCESS") { order.PayStatus = LifePayStatusEnum.已退款; @@ -1167,12 +1211,12 @@ /// <param name="total"></param> /// <param name="currency"></param> /// <returns></returns> public async Task<WxPayDomesticRefundsReponse> WxPayDomesticRefunds(string outTradeNo, string reason, int refund, int total, string currency = "CNY") public async Task<WxPayDomesticRefundsReponse> WxPayDomesticRefunds(string outTradeNo,string outRefundNo, string reason, int refund, int total, string currency = "CNY") { WxPayDomesticRefundsRequest req = new WxPayDomesticRefundsRequest { OutTradeNo = outTradeNo, OutRefundNo = CreateRefundOrderNo(), OutRefundNo = outRefundNo, Reason = reason, Amount = new Model_WxPayDomesticRefunds_Amount { LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs
@@ -71,6 +71,11 @@ public string OutOrderNo { get; set; } /// <summary> /// 退款订单号 /// </summary> public string? RefundOrderNo { get; set; } /// <summary> /// 渠道流水号 /// </summary> public string ACOOLYOrderNo { get; set; } LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs
@@ -202,6 +202,16 @@ return await _lifePayService.GetLifePayOrderDetail(orderNo); } /// <summary> /// 获取退款订单详情 /// </summary> /// <param name="orderNo"></param> /// <returns></returns> [HttpGet] public async Task<LifePayRefundOrderOutput> GetLifePayRefundOrderDetail(string orderNo) { return await _lifePayService.GetLifePayRefundOrderDetail(orderNo); } /// <summary> /// 获取我的订单分页数据