/** * @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()); }