diff --git a/src/Controller/CancelPayPalCheckoutPaymentAction.php b/src/Controller/CancelPayPalCheckoutPaymentAction.php index ad53d03d..87fa5301 100644 --- a/src/Controller/CancelPayPalCheckoutPaymentAction.php +++ b/src/Controller/CancelPayPalCheckoutPaymentAction.php @@ -26,10 +26,12 @@ public function __construct( public function __invoke(Request $request): Response { - $content = (array) json_decode((string) $request->getContent(false), true); - - $payment = $this->paymentProvider->getByPayPalOrderId((string) $content['payPalOrderId']); - + $id = $request->attributes->getInt('id'); + + /** @var OrderInterface $order */ + $order = $this->orderProvider->provideOrderById($id); + $payment = $order->getLastPayment(); + /** @var FlashBagInterface $flashBag */ $flashBag = $request->getSession()->getBag('flashes'); $flashBag->add('error', 'sylius.pay_pal.something_went_wrong'); diff --git a/src/Controller/PayPalButtonsController.php b/src/Controller/PayPalButtonsController.php index 6640282d..dd1c29ca 100644 --- a/src/Controller/PayPalButtonsController.php +++ b/src/Controller/PayPalButtonsController.php @@ -113,7 +113,7 @@ public function renderPaymentPageButtonsAction(Request $request): Response try { return new Response($this->twig->render('@SyliusPayPalPlugin/payFromPaymentPage.html.twig', [ 'available_countries' => $this->availableCountriesProvider->provide(), - 'cancelPayPalPaymentUrl' => $this->router->generate('sylius_paypal_plugin_cancel_payment'), + 'cancelPayPalPaymentUrl' => $this->router->generate('sylius_paypal_plugin_cancel_paypal_order_from_payment_page', ['id' => $orderId]), 'clientId' => $this->payPalConfigurationProvider->getClientId($channel), 'currency' => $order->getCurrencyCode(), 'completePayPalOrderFromPaymentPageUrl' => $this->router->generate('sylius_paypal_plugin_complete_paypal_order_from_payment_page', ['id' => $orderId]), diff --git a/src/Resources/config/shop_routing.yaml b/src/Resources/config/shop_routing.yaml index 678d9654..92c05443 100644 --- a/src/Resources/config/shop_routing.yaml +++ b/src/Resources/config/shop_routing.yaml @@ -133,3 +133,9 @@ sylius_paypal_plugin_payment_error: methods: [POST] defaults: _controller: Sylius\PayPalPlugin\Controller\PayPalPaymentOnErrorAction + +sylius_paypal_plugin_cancel_paypal_order_from_payment_page: + path: /pay-pal-order-payment-page/{id}/cancel + methods: [POST] + defaults: + _controller: Sylius\PayPalPlugin\Controller\CancelPayPalPaymentAction