diff --git a/modules/payment/src/Payment.Application/PaymentRequests/PaymentRequestAppService.cs b/modules/payment/src/Payment.Application/PaymentRequests/PaymentRequestAppService.cs index bd5de42..08d0cbf 100644 --- a/modules/payment/src/Payment.Application/PaymentRequests/PaymentRequestAppService.cs +++ b/modules/payment/src/Payment.Application/PaymentRequests/PaymentRequestAppService.cs @@ -120,8 +120,14 @@ namespace Payment.PaymentRequests var paymentRequest = await _paymentRequestRepository.GetAsync(paymentRequestId); - paymentRequest.State = order.Status == PayPalConsts.OrderStatus.Approved || order.Status == PayPalConsts.OrderStatus.Completed ? - PaymentRequestState.Completed : PaymentRequestState.Failed; + if (order.Status == PayPalConsts.OrderStatus.Approved || order.Status == PayPalConsts.OrderStatus.Completed) + { + paymentRequest.SetAsCompleted(); + } + else + { + paymentRequest.SetAsFailed(order.Status); + } paymentRequest.ExtraProperties.Add(PayPalConsts.OrderIdPropertyName, order.Id); diff --git a/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs b/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs index dbbcc81..e8038bf 100644 --- a/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs +++ b/modules/payment/src/Payment.Domain/PaymentRequests/PaymentRequest.cs @@ -8,22 +8,24 @@ namespace Payment.PaymentRequests public class PaymentRequest : CreationAuditedAggregateRoot, ISoftDelete { [CanBeNull] - public string CustomerId { get; private set; } + public string CustomerId { get; protected set; } [CanBeNull] - public string ProductId { get; private set; } + public string ProductId { get; protected set; } [NotNull] - public string ProductName { get; private set; } + public string ProductName { get; protected set; } - public decimal Price { get; private set; } + public decimal Price { get; protected set; } - public string Currency { get; private set; } + public string Currency { get; protected set; } - public PaymentRequestState State { get; set; } + public PaymentRequestState State { get; protected set; } public bool IsDeleted { get; set; } + public string FailReason { get; protected set; } + private PaymentRequest() { @@ -44,5 +46,17 @@ namespace Payment.PaymentRequests Price = price; Currency = currency; } + + public virtual void SetAsCompleted() + { + State = PaymentRequestState.Completed; + FailReason = null; + } + + public virtual void SetAsFailed(string failReason) + { + State = PaymentRequestState.Failed; + FailReason = failReason; + } } } \ No newline at end of file