/** * @param \Generated\Shared\Transfer\PayolutionTransactionResponseTransfer $payolutionTransactionResponseTransfer * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer * * @return void */ protected function checkForErrors(PayolutionTransactionResponseTransfer $payolutionTransactionResponseTransfer, CheckoutResponseTransfer $checkoutResponseTransfer) { if (PayolutionConstants::REASON_CODE_SUCCESS !== $payolutionTransactionResponseTransfer->getProcessingReasonCode() || PayolutionConstants::STATUS_CODE_SUCCESS !== $payolutionTransactionResponseTransfer->getProcessingStatusCode() || PayolutionConstants::PAYMENT_CODE_PRE_CHECK !== $payolutionTransactionResponseTransfer->getPaymentCode()) { $errorCode = (int) preg_replace('/[^\\d]+/', '', $payolutionTransactionResponseTransfer->getProcessingCode()); $error = new CheckoutErrorTransfer(); $error->setErrorCode($errorCode)->setMessage($payolutionTransactionResponseTransfer->getProcessingReturn()); $checkoutResponseTransfer->addError($error); } }
/** * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer * * @return \Generated\Shared\Transfer\CheckoutResponseTransfer */ public function execute(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponseTransfer) { $transactionStatusLogEntity = $this->getTransactionStatusLog($checkoutResponseTransfer); if (!$this->isPreAuthorizationApproved($transactionStatusLogEntity)) { $checkoutErrorTransfer = new CheckoutErrorTransfer(); $checkoutErrorTransfer->setErrorCode(self::ERROR_CODE_PAYMENT_FAILED)->setMessage($transactionStatusLogEntity->getProcessingReason()); $checkoutResponseTransfer->addError($checkoutErrorTransfer); $checkoutResponseTransfer->setIsSuccess(false); } return $checkoutResponseTransfer; }
/** * @return void */ public function testPostConditionChangeErrorRouteIfResponseFalseAndErrorCodeMatches() { $checkoutResponseTransfer = new CheckoutResponseTransfer(); $checkoutResponseTransfer->setIsSuccess(false); $checkoutErrorTransfer = new CheckoutErrorTransfer(); $checkoutErrorTransfer->setErrorCode(static::ERROR_CODE_123); $checkoutResponseTransfer->addError($checkoutErrorTransfer); $checkoutClientMock = $this->getCheckoutClientMock(); $checkoutClientMock->method('placeOrder')->willReturn($checkoutResponseTransfer); $abstractPlaceOrderStepMock = $this->getAbstractPlaceOrderStep($checkoutClientMock); $quoteTransfer = new QuoteTransfer(); $quoteTransfer->setOrderReference(self::ORDER_REFERENCE); $abstractPlaceOrderStepMock->execute($this->getRequest(), $quoteTransfer); $this->assertFalse($abstractPlaceOrderStepMock->postCondition($quoteTransfer)); $this->assertSame(self::ESCAPE_ROUTE_123, $abstractPlaceOrderStepMock->getPostConditionErrorRoute()); }