zhengyuxuan
2025-03-24 31fb262e8aefcd3505f280be1559363e9f74ce72
fix:bug修复
5个文件已修改
110 ■■■■■ 已修改文件
LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.Application/LifePay/LifePayService.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.Domain/WeChat/WxRechargeInfo.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.HttpApi/LifePay/UserRoleController.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
@@ -49,6 +49,8 @@
    /// <returns></returns>
    Task LifePaySuccessHandler(string orderNo, string outOrderNo);
    Task WxPayDomesticRefundsHandler(string orderNo, LifePayRefundStatusEnum refundStatus);
    /// <summary>
    /// 供应商回调处理
    /// </summary>
LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -1264,6 +1264,23 @@
        await _lifePayOrderRepository.UpdateAsync(order);
    }
    public async Task WxPayDomesticRefundsHandler(string orderNo, LifePayRefundStatusEnum refundStatus)
    {
        var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync();
        CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "订单不存在");
        order.LifePayRefundStatus = refundStatus;
        switch (refundStatus)
        {
            case LifePayRefundStatusEnum.已退款:
                order.LifePayOrderStatus = LifePayOrderStatusEnum.已退款;
                break;
            case LifePayRefundStatusEnum.退款中:
                order.LifePayOrderStatus = LifePayOrderStatusEnum.退款中;
                break;
            default:break;
        }
    }
    /// <summary>
    /// ACOOLYO订单通知处理
    /// </summary>
LifePayment/LifePayment.Domain/WeChat/WxRechargeInfo.cs
@@ -204,6 +204,44 @@
        public PromotionDetail PromotionDetail { get; set; }
    }
    public class WxPayDomesticRefundsNotice
    {
        /// <summary>
        /// <summary>
        /// 商户号
        /// </summary>
        [JsonProperty("mchid")]
        public string Mchid { get; set; }
        /// <summary>
        /// 商户订单号
        /// </summary>
        [JsonProperty("out_trade_no")]
        public string OutTradeNo { get; set; }
        /// <summary>
        /// 微信支付订单号
        /// </summary>
        [JsonProperty("transaction_id")]
        public string TransactionId { get; set; }
        /// <summary>
        /// 商户退款单号
        /// </summary>
        [JsonProperty("out_refund_no")]
        public string OutRefundNo { get; set; }
        /// <summary>
        /// 退款状态
        /// SUCCESS—退款成功
        /// CLOSED—退款关闭。
        /// PROCESSING—退款处理中
        /// ABNORMAL—退款异常,退款到银行发现用户的卡作废或者冻结了,导致原路退款银行卡失败,可前往商户平台-交易中心,手动处理此笔退款,可参考: 退款异常的处理,或者通过发起异常退款接口进行处理。
        /// </summary>
        [JsonProperty("refund_status")]
        public string RefundStatus { get; set; }
    }
    public class WxRechargeNotifyResult
    {
        /// <summary>
LifePayment/LifePayment.HttpApi/LifePay/UserRoleController.cs
@@ -40,6 +40,8 @@
        [HttpPost]
        public async Task<Guid> CreateBackClientUser(CreateBackClientUserInput input)
        {
            return await _accountService.CreateAccount(ObjectMapper.Map<CreateBackClientUserInput, CreateAccountInput>(input), isAdminCreate: true);
        }
LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs
@@ -71,5 +71,56 @@
                Code = "SUCCESS",
            };
        }
        [HttpPost]
        [UnitOfWork]
        public async Task<WxRechargeNotifyResult> WxPayDomesticRefundsNotify(WxRechargeNotifyInput input)
        {
            try
            {
                _logger.LogError($"微信退款回调通知:进入微信回调");
                var data = _wxPayApi.AesGcmDecrypt(input.Resource.AssociatedData, input.Resource.Nonce, input.Resource.Ciphertext);
                var wxPayNotice = JsonConvert.DeserializeObject<WxPayDomesticRefundsNotice>(data);
                if (wxPayNotice.OutTradeNo.Contains("JF"))
                {
                    if (wxPayNotice.RefundStatus == LifePaymentConstant.WxPayRefundStatus.退款成功)
                    {
                    }
                    switch (wxPayNotice.RefundStatus)
                    {
                        case LifePaymentConstant.WxPayRefundStatus.退款成功:
                            await _lifePayService.WxPayDomesticRefundsHandler(wxPayNotice.OutTradeNo, LifePayRefundStatusEnum.已退款);
                            break;
                        case LifePaymentConstant.WxPayRefundStatus.退款关闭:
                            await _lifePayService.WxPayDomesticRefundsHandler(wxPayNotice.OutTradeNo, LifePayRefundStatusEnum.已退款);
                            break;
                        case LifePaymentConstant.WxPayRefundStatus.退款处理中:
                            await _lifePayService.WxPayDomesticRefundsHandler(wxPayNotice.OutTradeNo, LifePayRefundStatusEnum.退款中);
                            break;
                        case LifePaymentConstant.WxPayRefundStatus.退款异常:
                            await _lifePayService.WxPayDomesticRefundsHandler(wxPayNotice.OutTradeNo, LifePayRefundStatusEnum.退款中);
                            break;
                        default : await _lifePayService.WxPayDomesticRefundsHandler(wxPayNotice.OutTradeNo, LifePayRefundStatusEnum.退款中);break;
                    }
                }
            }
            catch (Exception ex)
            {
                return new WxRechargeNotifyResult
                {
                    Code = "FAIL",
                    Message = ex.Message,
                };
            }
            return new WxRechargeNotifyResult
            {
                Code = "SUCCESS",
            };
        }
    }
}