using LifePayment.Application.Contracts; using LifePayment.Domain; using LifePayment.Domain.Shared; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using System; using System.Text.RegularExpressions; using System.Threading.Tasks; using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Uow; namespace LifePayment.HttpApi { [Route("api/[controller]/[action]")] [ApiController] [IgnoreAntiforgeryToken] // [Authorize(AuthenticationSchemes = WxPaySignAuthenticationDefaults.AuthenticationScheme)] public class WxPayNotifyController : AbpController { private readonly IWxPayApi _wxPayApi; private readonly ILifePayService _lifePayService; private readonly ILogger<WxPayNotifyController> _logger; public WxPayNotifyController( IWxPayApi wxPayApi, ILogger<WxPayNotifyController> logger, ILifePayService lifePayService) { _wxPayApi = wxPayApi; _logger = logger; _lifePayService = lifePayService; } /// <summary> /// 微信支付回调通知 /// </summary> /// <param name="input"></param> /// <returns></returns> [HttpPost] [UnitOfWork] public async Task<WxRechargeNotifyResult> WxRechargeNotify(WxRechargeNotifyInput input) { try { _logger.LogError($"生活管家微信充值回调通知:进入微信回调"); var data = _wxPayApi.AesGcmDecrypt(input.Resource.AssociatedData, input.Resource.Nonce, input.Resource.Ciphertext); var wxPayNotice = JsonConvert.DeserializeObject<WxPayNotice>(data); if (wxPayNotice.OutTradeNo.Contains("JF") ) { if (wxPayNotice.TradeState == LifePaymentConstant.WxPayStatus.支付æˆåŠŸ) { await _lifePayService.LifePaySuccessHandler(wxPayNotice.OutTradeNo, wxPayNotice.TransactionId); } } } catch (Exception ex) { await CurrentUnitOfWork.RollbackAsync(); return new WxRechargeNotifyResult { Code = "FAIL", Message = ex.Message, }; } return new WxRechargeNotifyResult { 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", }; } } }