/**
  * @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 $checkoutResponse
  *
  * @return void
  */
 public function execute(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponse)
 {
     $resultCheck = new ZeroPaymentResultCheckTransfer();
     $resultCheck->setFkSalesOrder($checkoutResponse->getSaveOrder()->getIdSalesOrder());
     $resultCheckResponse = $this->getFacade()->checkPaymentResult($resultCheck);
     if ($resultCheckResponse->getIsSuccess() === false) {
         $checkoutResponse->addError($this->createCheckoutErrorTransfer($resultCheckResponse));
     }
 }
 /**
  * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
  * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponse
  *
  * @return void
  */
 public function checkCondition(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponse)
 {
     $groupedItemQuantities = $this->groupItemsBySku($quoteTransfer->getItems());
     foreach ($groupedItemQuantities as $sku => $quantity) {
         if (!$this->isProductSellable($sku, $quantity)) {
             $checkoutErrorTransfer = $this->createCheckoutErrorTransfer();
             $checkoutErrorTransfer->setErrorCode(CheckoutConstants::ERROR_CODE_PRODUCT_UNAVAILABLE)->setMessage('product.unavailable');
             $checkoutResponse->addError($checkoutErrorTransfer)->setIsSuccess(false);
         }
     }
 }
 /**
  * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
  * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer
  *
  * @return void
  */
 public function validateCheckoutGrandTotal(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponseTransfer)
 {
     $totalsBefore = $quoteTransfer->getTotals()->getGrandTotal();
     $this->stackExecutor->recalculate($quoteTransfer);
     $totalsAfter = $quoteTransfer->getTotals()->getGrandTotal();
     if ($totalsBefore !== $totalsAfter) {
         $error = $this->createCheckoutErrorTransfer();
         $error->setErrorCode(CheckoutConstants::ERROR_CODE_CART_AMOUNT_DIFFERENT)->setMessage('Checkout grand total changed.');
         $checkoutResponseTransfer->addError($error);
     }
 }
 /**
  * @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());
 }