Browse Source

Close #48: Throw the error in payment event handlers if the order or the payment is wrong

pull/49/head
gdlcf88 6 years ago
parent
commit
251197c753
  1. 13
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/OrderPaymentCompletedEventHandler.cs
  2. 10
      modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/OrderPaymentCreatedEventHandler.cs

13
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/OrderPaymentCompletedEventHandler.cs

@ -49,12 +49,17 @@ namespace EasyAbp.EShop.Orders.Orders
foreach (var item in eventData.Entity.PaymentItems.Where(item => item.ItemType == PaymentsConsts.PaymentItemType))
{
var order = await _orderRepository.FindAsync(item.ItemKey);
var order = await _orderRepository.GetAsync(item.ItemKey);
if (order == null || order.PaidTime.HasValue ||
!await _orderPaymentChecker.IsValidPaymentAsync(order, eventData.Entity, item))
if (order.PaymentId != eventData.Entity.Id || order.PaidTime.HasValue ||
order.OrderStatus != OrderStatus.Pending)
{
continue;
throw new OrderIsInWrongStageException(order.Id);
}
if (!await _orderPaymentChecker.IsValidPaymentAsync(order, eventData.Entity, item))
{
throw new OrderPaymentInvalidException(eventData.Entity.Id, item.ItemKey);
}
order.SetPaidTime(_clock.Now);

10
modules/EasyAbp.EShop.Orders/src/EasyAbp.EShop.Orders.Domain/EasyAbp/EShop/Orders/Orders/OrderPaymentCreatedEventHandler.cs

@ -32,10 +32,14 @@ namespace EasyAbp.EShop.Orders.Orders
foreach (var item in eventData.Entity.PaymentItems.Where(item => item.ItemType == PaymentsConsts.PaymentItemType))
{
var order = await _orderRepository.FindAsync(item.ItemKey);
var order = await _orderRepository.GetAsync(item.ItemKey);
if (order == null || order.PaymentId.HasValue ||
!await _orderPaymentChecker.IsValidPaymentAsync(order, eventData.Entity, item))
if (order.PaymentId.HasValue || order.OrderStatus != OrderStatus.Pending)
{
throw new OrderIsInWrongStageException(order.Id);
}
if (!await _orderPaymentChecker.IsValidPaymentAsync(order, eventData.Entity, item))
{
throw new OrderPaymentInvalidException(eventData.Entity.Id, item.ItemKey);
}

Loading…
Cancel
Save