LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LifePayment/LifePayment.Application/LifePay/LifePayService.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LifePayment/LifePayment.Domain/WeChat/WxRechargeInfo.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LifePayment/LifePayment.HttpApi/LifePay/UserRoleController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs | ●●●●● 补丁 | 查看 | 原始文档 | 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", }; } } }