From 70232f4e132c9d2de1449da9acb4090e1bd0c3e2 Mon Sep 17 00:00:00 2001 From: L3RAZ Date: Mon, 14 Oct 2024 15:06:09 +0300 Subject: [PATCH] added order creation --- controllers/front/payment.php | 23 +++++-------------- controllers/front/validate.php | 2 +- .../CheckoutEventSubscriber.php | 5 ++-- 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/controllers/front/payment.php b/controllers/front/payment.php index 9afaeb357..1f7404b43 100644 --- a/controllers/front/payment.php +++ b/controllers/front/payment.php @@ -22,13 +22,12 @@ use PrestaShop\Module\PrestashopCheckout\Controller\AbstractFrontController; use PrestaShop\Module\PrestashopCheckout\Exception\PsCheckoutException; use PrestaShop\Module\PrestashopCheckout\Order\Command\CreateOrderCommand; -use PrestaShop\Module\PrestashopCheckout\Order\Command\UpdateOrderStatusCommand; -use PrestaShop\Module\PrestashopCheckout\Order\State\OrderStateConfigurationKeys; -use PrestaShop\Module\PrestashopCheckout\Order\State\Service\OrderStateMapper; use PrestaShop\Module\PrestashopCheckout\PayPal\Card3DSecure; use PrestaShop\Module\PrestashopCheckout\PayPal\Order\Command\CapturePayPalOrderCommand; use PrestaShop\Module\PrestashopCheckout\PayPal\Order\Entity\PayPalOrder; use PrestaShop\Module\PrestashopCheckout\PayPal\Order\Exception\PayPalOrderException; +use PrestaShop\Module\PrestashopCheckout\PayPal\Order\Query\GetPayPalOrderForOrderConfirmationQuery; +use PrestaShop\Module\PrestashopCheckout\PayPal\Order\Query\GetPayPalOrderForOrderConfirmationQueryResult; use PrestaShop\Module\PrestashopCheckout\PayPal\Order\ValueObject\PayPalOrderId; use PrestaShop\Module\PrestashopCheckout\PayPal\PayPalOrderProvider; use PrestaShop\Module\PrestashopCheckout\Repository\PaymentTokenRepository; @@ -90,8 +89,6 @@ public function postProcess() $commandBus = $this->module->getService('ps_checkout.bus.command'); /** @var Psr\SimpleCache\CacheInterface $payPalOrderCache */ $payPalOrderCache = $this->module->getService('ps_checkout.cache.paypal.order'); - /** @var OrderStateMapper $orderStateMapper */ - $orderStateMapper = $this->module->getService(OrderStateMapper::class); $payPalOrder = $payPalOrderRepository->getPayPalOrderById($this->paypalOrderId); @@ -99,26 +96,18 @@ public function postProcess() throw new Exception('PayPal order does not belong to this customer'); } - $payPalOrderCache->delete($this->paypalOrderId->getValue()); - - $payPalOrderFromCache = $payPalOrderProvider->getById($payPalOrder->getId()->getValue()); + /** @var GetPayPalOrderForOrderConfirmationQueryResult $payPalOrderQueryResult */ + $payPalOrderQueryResult = $commandBus->handle(new GetPayPalOrderForOrderConfirmationQuery($this->paypalOrderId->getValue())); + $payPalOrderFromCache = $payPalOrderQueryResult->getOrderPayPal(); if ($payPalOrderFromCache['status'] === 'COMPLETED') { $orders = new PrestaShopCollection(Order::class); - $orders->where('id_cart', '=', pSQL($payPalOrder->getIdCart())); + $orders->where('id_cart', '=', $payPalOrder->getIdCart()); if (!$orders->count()) { $this->createOrder($payPalOrderFromCache, $payPalOrder); } - /** @var Order $order */ - $order = $orders->getFirst(); - $paidOrderStateId = (int) $orderStateMapper->getIdByKey(OrderStateConfigurationKeys::PS_CHECKOUT_STATE_COMPLETED); - - if ($order->getCurrentOrderState()->id !== $paidOrderStateId) { - $commandBus->handle(new UpdateOrderStatusCommand($order->id, $paidOrderStateId)); - } - $this->redirectToOrderConfirmationPage($payPalOrder->getIdCart(), $payPalOrderFromCache['purchase_units'][0]['payments']['captures'][0]['id'], $payPalOrderFromCache['status']); } diff --git a/controllers/front/validate.php b/controllers/front/validate.php index 4b6fef593..22789575f 100644 --- a/controllers/front/validate.php +++ b/controllers/front/validate.php @@ -112,7 +112,7 @@ public function postProcess() } catch (HttpTimeoutException $exception) { $this->exitWithResponse([ 'status' => false, - 'httpCode' => 408, + 'httpCode' => 504, 'body' => [ 'error' => [ 'message' => $exception->getMessage(), diff --git a/src/Checkout/EventSubscriber/CheckoutEventSubscriber.php b/src/Checkout/EventSubscriber/CheckoutEventSubscriber.php index cdc9176be..671a20787 100644 --- a/src/Checkout/EventSubscriber/CheckoutEventSubscriber.php +++ b/src/Checkout/EventSubscriber/CheckoutEventSubscriber.php @@ -131,8 +131,8 @@ public function proceedToPayment(CheckoutCompletedEvent $event) $this->checkoutChecker->continueWithAuthorization($event->getCartId()->getValue(), $getPayPalOrderForCheckoutCompletedQueryResult->getPayPalOrder()); } catch (PsCheckoutException $exception) { if ($exception->getCode() === PsCheckoutException::PAYPAL_ORDER_ALREADY_CAPTURED) { -// $this->commandBus->handle(new CreateOrderCommand($event->getPayPalOrderId()->getValue())); -// return; + $this->commandBus->handle(new CreateOrderCommand($event->getPayPalOrderId()->getValue())); + return; } else { throw $exception; } @@ -160,6 +160,7 @@ public function proceedToPayment(CheckoutCompletedEvent $event) throw $exception; } elseif ($exception->getCode() === PayPalException::ORDER_ALREADY_CAPTURED) { + $this->commandBus->handle(new CreateOrderCommand($event->getPayPalOrderId()->getValue())); return; } else { throw $exception;