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 _logger; public WxPayNotifyController( IWxPayApi wxPayApi, ILogger logger, ILifePayService lifePayService) { _wxPayApi = wxPayApi; _logger = logger; _lifePayService = lifePayService; } /// /// 微信支付回调通知 /// /// /// [HttpPost] [UnitOfWork] public async Task WxRechargeNotify(WxRechargeNotifyInput input) { try { _logger.LogError($"生活管家微信充值回调通知:进入微信回调"); var data = _wxPayApi.AesGcmDecrypt(input.Resource.AssociatedData, input.Resource.Nonce, input.Resource.Ciphertext); var wxPayNotice = JsonConvert.DeserializeObject(data); if (wxPayNotice.OutTradeNo.StartsWith("JF") && Regex.IsMatch(wxPayNotice.OutTradeNo, @"^JF\d+$")) { 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", }; } } }