diff --git a/src/Builder/Payload/CapturePayloadBuilder.php b/src/Builder/Payload/CapturePayloadBuilder.php deleted file mode 100644 index 31e05c5d3..000000000 --- a/src/Builder/Payload/CapturePayloadBuilder.php +++ /dev/null @@ -1,31 +0,0 @@ -payPalOrderRepository = $payPalOrderRepository; - } - - public function buildPayload($mode, $orderId, $merchantId) - { - $order = $this->payPalOrderRepository->getPayPalOrderById($orderId); - - return CaptureOrderPayloadDTO::create( - $mode, - $orderId, - ['merchantId' => $merchantId], - $order->checkCustomerIntent(PayPalOrder::CUSTOMER_INTENT_USES_VAULTING) - ); - } -} diff --git a/src/PayPal/Order/CommandHandler/CapturePayPalOrderCommandHandler.php b/src/PayPal/Order/CommandHandler/CapturePayPalOrderCommandHandler.php index f0cf01f51..2401e25e7 100644 --- a/src/PayPal/Order/CommandHandler/CapturePayPalOrderCommandHandler.php +++ b/src/PayPal/Order/CommandHandler/CapturePayPalOrderCommandHandler.php @@ -21,15 +21,14 @@ namespace PrestaShop\Module\PrestashopCheckout\PayPal\Order\CommandHandler; -use PrestaShop\Module\PrestashopCheckout\Builder\Payload\CapturePayloadBuilder; use PrestaShop\Module\PrestashopCheckout\Context\PrestaShopContext; +use PrestaShop\Module\PrestashopCheckout\Customer\Exception\CustomerException; use PrestaShop\Module\PrestashopCheckout\Customer\ValueObject\CustomerId; use PrestaShop\Module\PrestashopCheckout\Event\EventDispatcherInterface; use PrestaShop\Module\PrestashopCheckout\Exception\PsCheckoutException; use PrestaShop\Module\PrestashopCheckout\Http\MaaslandHttpClient; use PrestaShop\Module\PrestashopCheckout\PayPal\Customer\ValueObject\PayPalCustomerId; use PrestaShop\Module\PrestashopCheckout\PayPal\Order\Command\CapturePayPalOrderCommand; -use PrestaShop\Module\PrestashopCheckout\PayPal\Order\DTO\Write\CaptureOrderPayloadDTO; use PrestaShop\Module\PrestashopCheckout\PayPal\Order\Entity\PayPalOrder; use PrestaShop\Module\PrestashopCheckout\PayPal\Order\Event\PayPalOrderCompletedEvent; use PrestaShop\Module\PrestashopCheckout\PayPal\Order\PayPalOrderStatus; @@ -70,34 +69,34 @@ class CapturePayPalOrderCommandHandler */ private $payPalCustomerRepository; - /** @var CapturePayloadBuilder */ - private $capturePayloadBuilder; - /** @var PayPalConfiguration */ private $payPalConfiguration; /** @var PayPalOrderRepository */ private $payPalOrderRepository; + /** + * @var LoggerInterface + */ + private $logger; public function __construct( - MaaslandHttpClient $maaslandHttpClient, + MaaslandHttpClient $maaslandHttpClient, EventDispatcherInterface $eventDispatcher, - CacheInterface $orderPayPalCache, - PrestaShopContext $prestaShopContext, + CacheInterface $orderPayPalCache, + PrestaShopContext $prestaShopContext, PayPalCustomerRepository $payPalCustomerRepository, - LoggerInterface $logger, - CapturePayloadBuilder $capturePayloadBuilder, - PayPalConfiguration $payPalConfiguration, - PayPalOrderRepository $payPalOrderRepository + LoggerInterface $logger, + PayPalConfiguration $payPalConfiguration, + PayPalOrderRepository $payPalOrderRepository ) { $this->maaslandHttpClient = $maaslandHttpClient; $this->eventDispatcher = $eventDispatcher; $this->orderPayPalCache = $orderPayPalCache; $this->prestaShopContext = $prestaShopContext; $this->payPalCustomerRepository = $payPalCustomerRepository; - $this->capturePayloadBuilder = $capturePayloadBuilder; $this->payPalConfiguration = $payPalConfiguration; $this->payPalOrderRepository = $payPalOrderRepository; + $this->logger = $logger; } public function handle(CapturePayPalOrderCommand $capturePayPalOrderCommand) @@ -106,13 +105,7 @@ public function handle(CapturePayPalOrderCommand $capturePayPalOrderCommand) $capturePayload = $this->buildCapturePayload($capturePayPalOrderCommand); - $capturePayloadDTO = $this->capturePayloadBuilder->buildPayload( - $capturePayPalOrderCommand->getFundingSource(), - $capturePayPalOrderCommand->getOrderId()->getValue(), - $merchantId - ); - - $orderPayPal = $this->captureOrder($capturePayloadDTO); + $orderPayPal = $this->captureOrder($capturePayload); if (isset($orderPayPal['payment_source'][$capturePayPalOrderCommand->getFundingSource()]['attributes']['vault'])) { $vault = $orderPayPal['payment_source'][$capturePayPalOrderCommand->getFundingSource()]['attributes']['vault']; @@ -126,16 +119,17 @@ public function handle(CapturePayPalOrderCommand $capturePayPalOrderCommand) return $this->processTheCapture($orderPayPal); } - private function captureOrder(CaptureOrderPayloadDTO $captureOrderPayloadDTO) + private function captureOrder($captureOrderPayload) { try { - $response = $this->maaslandHttpClient->captureOrder($captureOrderPayloadDTO->toArray()); + $response = $this->maaslandHttpClient->captureOrder($captureOrderPayload); $orderPayPal = json_decode($response->getBody(), true); $payPalOrderFromCache = $this->orderPayPalCache->get($orderPayPal['id']); return array_replace_recursive($payPalOrderFromCache, $orderPayPal); } catch (\Exception $exception) { + $this->logger->error($exception->getMessage()); return []; } } @@ -165,13 +159,18 @@ private function savePrestaShopPayPalCustomerRelationship($vault) $this->payPalCustomerRepository->save($customerId, $payPalCustomerId); return $vault; + } catch (CustomerException $exception) { + $this->logger->error($exception->getMessage()); + return []; + } catch (\InvalidArgumentException $exception) { + return []; } catch (\Exception $exception) { - + $this->logger->error(sprintf('An error occurs during process : %s', $exception->getMessage())); return []; } } - private function createPaymentTokenEvent($capturePayPalOrderCommand,$orderPayPal, $vault, $merchantId) + private function createPaymentTokenEvent($capturePayPalOrderCommand, $orderPayPal, $vault, $merchantId) { $paymentToken = $vault; $paymentToken['metadata'] = [ @@ -197,6 +196,7 @@ private function processTheCapture($orderPayPal) $capturePayPal = $orderPayPal['purchase_units'][0]['payments']['captures'][0]; if ($orderPayPal['status'] === PayPalOrderStatus::COMPLETED) { + $this->logger->info('Bonjour'); $this->eventDispatcher->dispatch(new PayPalOrderCompletedEvent($orderPayPal['id'], $orderPayPal)); } diff --git a/src/PayPal/Order/DTO/CaptureOrderDTO.php b/src/PayPal/Order/DTO/CaptureOrderDTO.php deleted file mode 100644 index 29a37907d..000000000 --- a/src/PayPal/Order/DTO/CaptureOrderDTO.php +++ /dev/null @@ -1,10 +0,0 @@ -mode = $mode; - $this->orderId = $orderId; - $this->payee = $payee; - $this->vault = $vault; - } - - public static function create($mode, $orderId, $merchantId, $vault) - { - return new self($mode, $orderId, $merchantId, $vault); - } - - public function toArray(): array - { - return [ - 'mode' => $this->mode, - 'orderId' => $this->orderId, - 'payee' => $this->payee, - 'vault' => $this->vault, - ]; - } -}