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;
|
decimal parValue = 0;
|
decimal actualParValue = 0;
|
string refundApplyRemark = string.Empty;
|
_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;
|
actualParValue = confirmElectricOrderResponse.ElectricChargeOrder.ActualParValue;
|
parValue = confirmElectricOrderResponse.ElectricChargeOrder.ParValue;
|
_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.充值失败;
|
refundApplyRemark = "供应商充值失败";
|
}
|
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.部分充值成功;
|
refundApplyRemark = confirmElectricOrderResponse.ElectricChargeOrder.ResponseMessage;
|
}
|
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.充值失败;
|
}
|
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.充值失败;
|
}
|
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, refundApplyRemark, parValue, actualParValue);
|
}
|
}
|
}
|