diff --git a/src/Spryker/Zed/AppPayment/Business/MessageBroker/CancelPaymentMessageHandler.php b/src/Spryker/Zed/AppPayment/Business/MessageBroker/CancelPaymentMessageHandler.php index f061bc3..aefe2eb 100644 --- a/src/Spryker/Zed/AppPayment/Business/MessageBroker/CancelPaymentMessageHandler.php +++ b/src/Spryker/Zed/AppPayment/Business/MessageBroker/CancelPaymentMessageHandler.php @@ -11,14 +11,18 @@ use Generated\Shared\Transfer\CancelPaymentResponseTransfer; use Generated\Shared\Transfer\CancelPaymentTransfer; use Generated\Shared\Transfer\PaymentTransfer; +use Spryker\Shared\Log\LoggerTrait; use Spryker\Zed\AppPayment\Business\MessageBroker\TenantIdentifier\TenantIdentifierExtractor; use Spryker\Zed\AppPayment\Business\Payment\Cancel\CancelPayment; use Spryker\Zed\AppPayment\Business\Payment\Message\MessageSender; use Spryker\Zed\AppPayment\Business\Payment\Status\PaymentStatus; use Spryker\Zed\AppPayment\Persistence\AppPaymentRepositoryInterface; +use Spryker\Zed\AppPayment\Persistence\Exception\PaymentByTenantIdentifierAndOrderReferenceNotFoundException; class CancelPaymentMessageHandler implements CancelPaymentMessageHandlerInterface { + use LoggerTrait; + public function __construct( protected AppPaymentRepositoryInterface $appPaymentRepository, protected TenantIdentifierExtractor $tenantIdentifierExtractor, @@ -32,10 +36,16 @@ public function handleCancelPayment( ): void { $tenantIdentifier = $this->tenantIdentifierExtractor->getTenantIdentifierFromMessage($cancelPaymentTransfer); - $paymentTransfer = $this->appPaymentRepository->getPaymentByTenantIdentifierAndOrderReference( - $tenantIdentifier, - $cancelPaymentTransfer->getOrderReferenceOrFail(), - ); + try { + $paymentTransfer = $this->appPaymentRepository->getPaymentByTenantIdentifierAndOrderReference( + $tenantIdentifier, + $cancelPaymentTransfer->getOrderReferenceOrFail(), + ); + } catch (PaymentByTenantIdentifierAndOrderReferenceNotFoundException $paymentByTenantIdentifierAndOrderReferenceNotFoundException) { + $this->getLogger()->warning($paymentByTenantIdentifierAndOrderReferenceNotFoundException->getMessage()); + + return; + } $cancelPaymentRequestTransfer = (new CancelPaymentRequestTransfer()) ->setTransactionId($paymentTransfer->getTransactionIdOrFail()) diff --git a/src/Spryker/Zed/AppPayment/Business/MessageBroker/CapturePaymentMessageHandler.php b/src/Spryker/Zed/AppPayment/Business/MessageBroker/CapturePaymentMessageHandler.php index ccd52d4..a5017dd 100644 --- a/src/Spryker/Zed/AppPayment/Business/MessageBroker/CapturePaymentMessageHandler.php +++ b/src/Spryker/Zed/AppPayment/Business/MessageBroker/CapturePaymentMessageHandler.php @@ -12,14 +12,18 @@ use Generated\Shared\Transfer\CapturePaymentTransfer; use Generated\Shared\Transfer\MessageContextTransfer; use Generated\Shared\Transfer\PaymentTransfer; +use Spryker\Shared\Log\LoggerTrait; use Spryker\Zed\AppPayment\Business\MessageBroker\TenantIdentifier\TenantIdentifierExtractor; use Spryker\Zed\AppPayment\Business\Payment\Capture\PaymentCapturer; use Spryker\Zed\AppPayment\Business\Payment\Message\MessageSender; use Spryker\Zed\AppPayment\Business\Payment\Status\PaymentStatus; use Spryker\Zed\AppPayment\Persistence\AppPaymentRepositoryInterface; +use Spryker\Zed\AppPayment\Persistence\Exception\PaymentByTenantIdentifierAndOrderReferenceNotFoundException; class CapturePaymentMessageHandler implements CapturePaymentMessageHandlerInterface { + use LoggerTrait; + public function __construct( protected AppPaymentRepositoryInterface $appPaymentRepository, protected TenantIdentifierExtractor $tenantIdentifierExtractor, @@ -33,10 +37,16 @@ public function handleCapturePayment( ): void { $tenantIdentifier = $this->tenantIdentifierExtractor->getTenantIdentifierFromMessage($capturePaymentTransfer); - $paymentTransfer = $this->appPaymentRepository->getPaymentByTenantIdentifierAndOrderReference( - $tenantIdentifier, - $capturePaymentTransfer->getOrderReferenceOrFail(), - ); + try { + $paymentTransfer = $this->appPaymentRepository->getPaymentByTenantIdentifierAndOrderReference( + $tenantIdentifier, + $capturePaymentTransfer->getOrderReferenceOrFail(), + ); + } catch (PaymentByTenantIdentifierAndOrderReferenceNotFoundException $paymentByTenantIdentifierAndOrderReferenceNotFoundException) { + $this->getLogger()->warning($paymentByTenantIdentifierAndOrderReferenceNotFoundException->getMessage()); + + return; + } $capturePaymentRequestTransfer = (new CapturePaymentRequestTransfer()) ->setTransactionId($paymentTransfer->getTransactionIdOrFail()) diff --git a/src/Spryker/Zed/AppPayment/Business/MessageBroker/RefundPaymentMessageHandler.php b/src/Spryker/Zed/AppPayment/Business/MessageBroker/RefundPaymentMessageHandler.php index ea58cd8..f76caed 100644 --- a/src/Spryker/Zed/AppPayment/Business/MessageBroker/RefundPaymentMessageHandler.php +++ b/src/Spryker/Zed/AppPayment/Business/MessageBroker/RefundPaymentMessageHandler.php @@ -19,6 +19,7 @@ use Spryker\Zed\AppPayment\Business\Payment\Refund\PaymentRefunder; use Spryker\Zed\AppPayment\Business\Payment\Refund\PaymentRefundStatus; use Spryker\Zed\AppPayment\Persistence\AppPaymentRepositoryInterface; +use Spryker\Zed\AppPayment\Persistence\Exception\PaymentByTenantIdentifierAndOrderReferenceNotFoundException; class RefundPaymentMessageHandler implements RefundPaymentMessageHandlerInterface { @@ -36,10 +37,16 @@ public function handleRefundPayment(RefundPaymentTransfer $refundPaymentTransfer { $tenantIdentifier = $this->tenantIdentifierExtractor->getTenantIdentifierFromMessage($refundPaymentTransfer); - $paymentTransfer = $this->appPaymentRepository->getPaymentByTenantIdentifierAndOrderReference( - $tenantIdentifier, - $refundPaymentTransfer->getOrderReferenceOrFail(), - ); + try { + $paymentTransfer = $this->appPaymentRepository->getPaymentByTenantIdentifierAndOrderReference( + $tenantIdentifier, + $refundPaymentTransfer->getOrderReferenceOrFail(), + ); + } catch (PaymentByTenantIdentifierAndOrderReferenceNotFoundException $paymentByTenantIdentifierAndOrderReferenceNotFoundException) { + $this->getLogger()->warning($paymentByTenantIdentifierAndOrderReferenceNotFoundException->getMessage()); + + return; + } $refundPaymentRequestTransfer = (new RefundPaymentRequestTransfer()) ->setTransactionId($paymentTransfer->getTransactionIdOrFail()) diff --git a/tests/SprykerTest/AsyncApi/AppPayment/AppPaymentTests/PaymentCommands/CapturePaymentTest.php b/tests/SprykerTest/AsyncApi/AppPayment/AppPaymentTests/PaymentCommands/CapturePaymentTest.php index c431188..9cbedfd 100644 --- a/tests/SprykerTest/AsyncApi/AppPayment/AppPaymentTests/PaymentCommands/CapturePaymentTest.php +++ b/tests/SprykerTest/AsyncApi/AppPayment/AppPaymentTests/PaymentCommands/CapturePaymentTest.php @@ -18,7 +18,6 @@ use Spryker\Zed\AppPayment\AppPaymentDependencyProvider; use Spryker\Zed\AppPayment\Business\Payment\Status\PaymentStatus; use Spryker\Zed\AppPayment\Dependency\Plugin\AppPaymentPlatformPluginInterface; -use Spryker\Zed\AppPayment\Persistence\Exception\PaymentByTenantIdentifierAndOrderReferenceNotFoundException; use SprykerTest\AsyncApi\AppPayment\AppPaymentAsyncApiTester; use SprykerTest\Shared\Testify\Helper\DependencyHelperTrait; @@ -144,7 +143,7 @@ public function testHandleCapturePaymentMessageUpdatesPaymentToCapturedRequested $this->tester->assertPaymentHasStatus($paymentTransfer, PaymentStatus::STATUS_CAPTURE_REQUESTED); } - public function testHandleCapturePaymentThrowsExceptionWhenPaymentDoesNotExist(): void + public function testHandleCapturePaymentDoesNotThrowExceptionWhenPaymentDoesNotExist(): void { // Arrange $tenantIdentifier = Uuid::uuid4()->toString(); @@ -152,8 +151,6 @@ public function testHandleCapturePaymentThrowsExceptionWhenPaymentDoesNotExist() $capturePaymentTransfer = $this->tester->haveCapturePaymentTransfer(['tenantIdentifier' => $tenantIdentifier, 'orderReference' => Uuid::uuid4()->toString()]); - $this->expectException(PaymentByTenantIdentifierAndOrderReferenceNotFoundException::class); - // Act $this->tester->runMessageReceiveTest($capturePaymentTransfer, 'payment-commands'); }