lingling
2025-03-18 874a98a34bd35b565dc9a33338bdfe407c9e8725
LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -993,6 +993,9 @@
            throw new UserFriendlyException("当前订单状态无法退款");
        }
        /// TODO 退款请求完成后如何操作
        /// var refundResult = await WxPayDomesticRefunds(order.OrderNo, order.RefundApplyRemark, Convert.ToInt32(order.PayAmount * 100), Convert.ToInt32(order.PayAmount * 100));
        order.PayStatus = LifePayStatusEnum.已退款;
        order.LifePayOrderStatus = LifePayOrderStatusEnum.已退款;
        order.RefundCredentialsImgUrl = input.RefundCredentialsImgUrl;
@@ -1043,6 +1046,26 @@
        await _lifePayOrderRepository.UpdateAsync(order);
    }
    public async Task<WxPayDomesticRefundsReponse> WxPayDomesticRefunds(string outTradeNo, string reason, int refund, int total, string currency = "CNY")
    {
        WxPayDomesticRefundsRequest req = new WxPayDomesticRefundsRequest
        {
            OutTradeNo = outTradeNo,
            OutRefundNo = CreateRefundOrderNo(),
            Reason = reason,
            Amount = new Model_WxPayDomesticRefunds_Amount
            {
                Refund = refund,
                Total = total,
                Currency = "CNY"
            },
            NotifyUrl = $"{_wxPayOptions.NotifyUrl}{LifePaymentConstant.WxPayDomesticRefundsNotifySectionUrl}",
        };
        var res = await _wxPayApi.WxPayDomesticRefunds(req);
        return res;
    }
    public async Task<int> AddUpdateUserAccount(AddUpdateUserAccountInput input)
    {
        if (input.Id.HasValue)
@@ -1064,7 +1087,6 @@
        }
        else
        {
            var repeatAccountContent = await _lifePayAccount.Where(x => x.UserId == input.UserId && x.LifePayType == input.LifePayType && x.Content == input.Content)
                                            .FirstOrDefaultAsync();
            CheckExtensions.IfTrueThrowUserFriendlyException(repeatAccountContent != null, "户号已存在");
@@ -1240,6 +1262,11 @@
        return "JF" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + GlobalRandom.GetRandomNum(4);
    }
    private string CreateRefundOrderNo()
    {
        return "JFTK" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + GlobalRandom.GetRandomNum(4);
    }
    private (decimal PayAmont, decimal DiscountAmount, decimal RechargeAmount) CalculateAmount(decimal amount, decimal rate)
    {
        /// 正常支付