using LifePayment.Application.Contracts; using LifePayment.Domain.Shared; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using System; using System.IO; using System.Text; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.Uow; namespace LifePayment.HttpApi { [Route("api/[controller]/[action]")] [ApiController] [IgnoreAntiforgeryToken] public class ACOOLYNotifyController : AbpController { private readonly ILifePayService _lifePayService; private readonly ILogger<ACOOLYNotifyController> _logger; public ACOOLYNotifyController( ILogger<ACOOLYNotifyController> logger, ILifePayService lifePayService) { _logger = logger; _lifePayService = lifePayService; } /// <summary> /// ACOOLY回调通知 /// </summary> /// <returns></returns> [HttpPost] [UnitOfWork] [AllowAnonymous] public async Task ACOOLYNotify() { _logger.LogError("ACOOLY回调通知开始进入"); var body = string.Empty; using (var reader = new StreamReader(Request.Body, Encoding.UTF8)) { body = await reader.ReadToEndAsync(); } if (body.IsNullOrEmpty()) { _logger.LogError("ACOOLY回调通知Input为null"); throw new UserFriendlyException("ACOOLY回调通知Input为null"); } var baseInfo = JsonConvert.DeserializeObject<ACOOLYRequestBaseResponse>(body); var orderNo = string.Empty; LifePayOrderStatusEnum status = LifePayOrderStatusEnum.待退款; ACOOLYStatusEnum acoolyStatus = ACOOLYStatusEnum.充值失败; var acoolyOrderNo = string.Empty; decimal payAmount = 0; _logger.LogError("ACOOLY回调通处ç†ç±»åž‹ï¼š" + baseInfo.Service); _logger.LogError("ACOOLY回调内容:" + body); switch (baseInfo.Service) { case ACOOLYConstant.Sevice.ConfirmElectricOrder: var confirmElectricOrderResponse = JsonConvert.DeserializeObject<ConfirmElectricOrderResponse>(body); orderNo = confirmElectricOrderResponse.ElectricChargeOrder.OutOrderNo; acoolyOrderNo = confirmElectricOrderResponse.ElectricChargeOrder.BusiOrderNo; payAmount = confirmElectricOrderResponse.ElectricChargeOrder.PayAmount; _logger.LogError("ACOOLY回调通处ç†ç»“果状æ€ï¼š" + confirmElectricOrderResponse.ElectricChargeOrder.Status); if (!confirmElectricOrderResponse.Success || (confirmElectricOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmElectricOrderResponse.Code != ACOOLYConstant.Code.PROCESSING)) { status = LifePayOrderStatusEnum.待退款; acoolyStatus = ACOOLYStatusEnum.充值失败; } else if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.充值æˆåŠŸ) { status = LifePayOrderStatusEnum.已完æˆ; acoolyStatus = ACOOLYStatusEnum.充值æˆåŠŸ; } else if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.充值ä¸) { status = LifePayOrderStatusEnum.充值ä¸; acoolyStatus = ACOOLYStatusEnum.充值ä¸; } else if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.充值失败) { status = LifePayOrderStatusEnum.待退款; acoolyStatus = ACOOLYStatusEnum.充值失败; } else if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.退款ä¸) { status = LifePayOrderStatusEnum.已完æˆ; acoolyStatus = ACOOLYStatusEnum.已退款; } else if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.退款完æˆ) { status = LifePayOrderStatusEnum.已完æˆ; acoolyStatus = ACOOLYStatusEnum.已退款; } else if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.失败关é—) { status = LifePayOrderStatusEnum.待退款; acoolyStatus = ACOOLYStatusEnum.充值失败; } break; case ACOOLYConstant.Sevice.ConfirmPhoneOrder: var confirmPhoneOrderResponse = JsonConvert.DeserializeObject<ConfirmPhoneOrderResponse>(body); orderNo = confirmPhoneOrderResponse.PhoneChargeOrder.OutOrderNo; acoolyOrderNo = confirmPhoneOrderResponse.PhoneChargeOrder.BusiOrderNo; payAmount = confirmPhoneOrderResponse.PhoneChargeOrder.PayAmount; _logger.LogError("ACOOLY回调通处ç†ç»“果状æ€ï¼š" + confirmPhoneOrderResponse.PhoneChargeOrder.Status); if (!confirmPhoneOrderResponse.Success || (confirmPhoneOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmPhoneOrderResponse.Code != ACOOLYConstant.Code.PROCESSING)) { status = LifePayOrderStatusEnum.待退款; acoolyStatus = ACOOLYStatusEnum.充值失败; } else if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.充值æˆåŠŸ) { status = LifePayOrderStatusEnum.已完æˆ; acoolyStatus = ACOOLYStatusEnum.充值æˆåŠŸ; } else if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.充值ä¸) { status = LifePayOrderStatusEnum.充值ä¸; acoolyStatus = ACOOLYStatusEnum.充值ä¸; } else if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.充值失败) { status = LifePayOrderStatusEnum.待退款; acoolyStatus = ACOOLYStatusEnum.充值失败; } else if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.退款ä¸) { status = LifePayOrderStatusEnum.已完æˆ; acoolyStatus = ACOOLYStatusEnum.已退款; } else if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.退款完æˆ) { status = LifePayOrderStatusEnum.已完æˆ; acoolyStatus = ACOOLYStatusEnum.已退款; } else if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.失败关é—) { status = LifePayOrderStatusEnum.待退款; acoolyStatus = ACOOLYStatusEnum.充值失败; } break; case ACOOLYConstant.Sevice.ConfirmGasOrder: var confirmGasOrderResponse = JsonConvert.DeserializeObject<ConfirmGasOrderResponse>(body); orderNo = confirmGasOrderResponse.GasChargeOrder.OutOrderNo; acoolyOrderNo = confirmGasOrderResponse.GasChargeOrder.BusiOrderNo; payAmount = confirmGasOrderResponse.GasChargeOrder.PayAmount; _logger.LogError("ACOOLY回调通处ç†ç»“果状æ€ï¼š" + confirmGasOrderResponse.GasChargeOrder.Status); if (!confirmGasOrderResponse.Success || (confirmGasOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmGasOrderResponse.Code != ACOOLYConstant.Code.PROCESSING)) { status = LifePayOrderStatusEnum.待退款; acoolyStatus = ACOOLYStatusEnum.充值失败; } else if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.充值æˆåŠŸ) { status = LifePayOrderStatusEnum.已完æˆ; acoolyStatus = ACOOLYStatusEnum.充值æˆåŠŸ; } else if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.充值ä¸) { status = LifePayOrderStatusEnum.待退款; acoolyStatus = ACOOLYStatusEnum.充值ä¸; } else if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.充值失败) { status = LifePayOrderStatusEnum.待退款; acoolyStatus = ACOOLYStatusEnum.充值失败; } else if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.退款ä¸) { status = LifePayOrderStatusEnum.已完æˆ; acoolyStatus = ACOOLYStatusEnum.已退款; } else if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.退款完æˆ) { status = LifePayOrderStatusEnum.已完æˆ; acoolyStatus = ACOOLYStatusEnum.已退款; } else if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.失败关é—) { status = LifePayOrderStatusEnum.待退款; acoolyStatus = ACOOLYStatusEnum.充值失败; } break; default: throw new UserFriendlyException("ACOOLY回调通处ç†ç±»åž‹ä¸å˜åœ¨"); } await _lifePayService.ACOOLYOrderNotifyHandler(orderNo, acoolyOrderNo, status, acoolyStatus, payAmount); } } }