zhengyuxuan
2025-03-31 95798bbe8e398d3dd75926e18dfef2e14d1bc7cc
LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -28,6 +28,7 @@
using NPOI.SS.Formula.Functions;
using StackExchange.Redis;
using static Volo.Abp.Identity.Settings.IdentitySettingNames;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace LifePayment.Application;
@@ -829,6 +830,7 @@
    public async Task<AlipayTradeQueryResponse> QueryAlipayTrade(OrderInQuiryInput input)
    {
        var result = await _aliPayApi.OrderInQuiry(input);
        return result;
    }
@@ -840,13 +842,37 @@
    public async Task<AlipayTradeFastpayRefundQueryResponse> QueryAlipayTradeRefund(OrderInQuiryInput input)
    {
        var result = await _aliPayApi.QueryAlipayTradeRefund(input);
        var order = await _lifePayOrderRepository.Where(x => x.OrderNo == input.OutTradeNo).FirstOrDefaultAsync();
        if (result.Code == AlipayResultCode.Success && result.RefundStatus == AlipayRefundStatus.Success)
        {
            order.LifePayOrderStatus = LifePayOrderStatusEnum.已退款;
            order.LifePayRefundStatus = LifePayRefundStatusEnum.已退款;
        }
        return result;
    }
    public async Task WxPayDomesticRefundsQuery(string outTradeNo)
    /// <summary>
    /// 查询微信退款订单信息
    /// </summary>
    /// <param name="outTradeNo"></param>
    /// <returns></returns>
    public async Task<WxPayDomesticRefundsQueryReponse> WxPayDomesticRefundsQuery(string outTradeNo)
    {
        await _wxPayApi.WxPayDomesticRefundsQuery(outTradeNo);
        return await _wxPayApi.WxPayDomesticRefundsQuery(outTradeNo);
    }
    /// <summary>
    /// 查询微信订单信息
    /// </summary>
    /// <param name="outTradeNo"></param>
    /// <returns></returns>
    public async Task<WxPayTradeQueryReponse> WxPayTradeQuery(string outTradeNo)
    {
        return await _wxPayApi.WxPayTradeQuery(outTradeNo);
    }
    #endregion
@@ -868,7 +894,7 @@
        var channle = await GetLifePayChannlesDtoByNum(input.ChannelId);
        CheckExtensions.IfTrueThrowUserFriendlyException(channle == null, "渠道不存在");
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.话费订单 && x.PayStatus == LifePayStatusEnum.已支付
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.PhoneOrder && x.PayStatus == LifePayStatusEnum.已支付
        && x.LifePayOrderStatus == LifePayOrderStatusEnum.充值中
        && x.OrderParamDetailJsonStr.Contains(input.ProductData.Phone)).ToListAsync();
         CheckExtensions.IfTrueThrowUserFriendlyException(repeatOrder.Count() > 0, "您有同户号订单正在充值中,请勿重复充值");
@@ -929,7 +955,7 @@
        //var rate = await GetRate();
        //CheckExtensions.IfTrueThrowUserFriendlyException(rate.IsNullOrEmpty(), "未配置折扣");
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.电费订单 && x.PayStatus == LifePayStatusEnum.已支付
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.ElectricOrder && x.PayStatus == LifePayStatusEnum.已支付
         && x.LifePayOrderStatus == LifePayOrderStatusEnum.充值中 && x.OrderParamDetailJsonStr.Contains(input.ProductData.ElectricType)
         && x.OrderParamDetailJsonStr.Contains(input.ProductData.ElectricAccount)).ToListAsync();
        CheckExtensions.IfTrueThrowUserFriendlyException(repeatOrder.Count() > 0, "您有同户号订单正在充值中,请勿重复充值");
@@ -983,7 +1009,7 @@
        //var rate = await GetRate();
        //CheckExtensions.IfTrueThrowUserFriendlyException(rate.IsNullOrEmpty(), "未配置折扣");
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.燃气订单 && x.PayStatus == LifePayStatusEnum.已支付
        var repeatOrder = await _lifePayOrderRepository.Where(x => x.LifePayOrderType == LifePayOrderTypeEnum.GasOrder && x.PayStatus == LifePayStatusEnum.已支付
        && x.LifePayOrderStatus == LifePayOrderStatusEnum.充值中 && x.OrderParamDetailJsonStr.Contains(input.ProductData.GasOrgType)
        && x.OrderParamDetailJsonStr.Contains(input.ProductData.GasAccount)).ToListAsync();
        CheckExtensions.IfTrueThrowUserFriendlyException(repeatOrder.Count() > 0, "您有同户号订单正在充值中,请勿重复充值");
@@ -1037,8 +1063,8 @@
        //var payUrl = await GetPayQRCode(order.LifePayType.Value, order.OrderNo, desc, 0.01m, ip, input.H5Type);
        var payUrl = await GetPayQRCode(res.LifePayType, res.OrderNo, res.Desc, res.PayAmount, ip, input.H5Type);
#else
      //var payUrl = await GetPayQRCode(order.LifePayType.Value, order.OrderNo, desc, 0.01m, ip, input.H5Type);
        var payUrl = await GetPayQRCode(order.LifePayType.Value, order.OrderNo, desc, order.PayAmount??0, ip, input.H5Type);
      //var payUrl = await GetPayQRCode(res.LifePayType, res.OrderNo, res.Desc, 0.01m, ip, input.H5Type);
        var payUrl = await GetPayQRCode(res.LifePayType, res.OrderNo, res.Desc, res.PayAmount, ip, input.H5Type);
#endif
        return payUrl;
@@ -1403,7 +1429,7 @@
                break;
            case LifePayTypeEnum.AliPay:
                var aliRefundResult = await AliTradeRefund(new AlipayTradeRefundRequest() { OutTradeNo = order.OrderNo, RefundAmount = input.RefundPrice.ToString() });
                var aliRefundResult = await AliTradeRefund(new AlipayTradeRefundRequest() { OutTradeNo = order.OrderNo, OutRefundNo = outRefundNo, RefundAmount = input.RefundPrice.ToString() });
                if (aliRefundResult.Code != AlipayResultCode.Success)
                {
                    throw new UserFriendlyException("退款失败:" + aliRefundResult.SubMsg);
@@ -1548,7 +1574,7 @@
            await _lifePayAccount.InsertAsync(userAccount);
        }
        if (input.LifePayType == LifePayOrderTypeEnum.话费订单)
        if (input.LifePayType == LifePayOrderTypeEnum.PhoneOrder)
        {
            var extraProperties = JsonConvert.DeserializeObject<Model_UserAccountExtraProperties>(input.ExtraProperties);
            if (!string.IsNullOrEmpty(extraProperties.Name) && extraProperties.Phone == user.PhoneNumber)
@@ -2151,6 +2177,7 @@
            return channel.ChannlesRate;
        }
    }
    public async Task<SetPayTypeReturn> SetPayType(string orderNo, LifePayTypeEnum lifePayType, string ip)
    {
        var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync();