View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0007874 | module PayPal Checkout | module PayPal checkout - sub | public | 2025-12-18 08:38 | 2026-02-03 09:36 |
| Reporter | oxid0815 | Assigned To | |||
| Priority | normal | Severity | major | Reproducibility | N/A |
| Status | resolved | Resolution | fixed | ||
| Product Version | 2.6.4 / 3.5.2 | ||||
| Target Version | 2.6.5 / 3.5.3 | Fixed in Version | 2.6.5 / 3.5.3 | ||
| Summary | 0007874: OxidSolutionCatalysts\PayPal\Component::checkForAbortedPayPalOrderPlacement does not work probably | ||||
| Description | Hi, We are using the OSC PayPal module in a live environment. Unfortunately, we frequently encounter situations where customers place orders and successfully pay via PayPal, but these orders are not fully processed in the system. We notice this because no order confirmation is sent. Analyzing the logs, we found that the following message is listed in the context of these orders: "Found aborted order placement, redirecting to thankyou page." This message is generated in the method OxidSolutionCatalysts\PayPal\Component::checkForAbortedPayPalOrderPlacement when a paid PayPal order is supposedly present. However, for some unclear reason, the system only redirects to the thank-you page and does not send an order confirmation. Oddly, the comment when removing the session variable "isPayPalPaymentCheckout" indicates that this should prevent the order confirmation from being sent, but the order confirmation is not explicitly triggered. We have now implemented the following patch, which appears to have resolved the issues for us: $order = oxNew(Order::class); $order->load($orderId); if ( $order->isOrderSuccessfullyPaid() ) { // Delete the session variable that would prevent an order confirmation email from being sent. $session->deleteVariable('isPayPalPaymentCheckout'); /** @var LoggerInterface $logger */ $logger = $this->getServiceFromContainer('OxidSolutionCatalysts\PayPal\Logger'); // patch start $user = $session->getUser(); if ($user) { $logger->info('Send PayPal order email in checkForAbortedPayPalOrderPlacement.'); $order->sendPayPalOrderByEmail($user, $basket); } else { // Does the case even exists?!. $logger->info('Try to send PayPal order email in checkForAbortedPayPalOrderPlacement but no session user exists.'); } // patch stop $logger->info('Found aborted order placement, redirecting to thankyou page.'); Registry::getUtils()->redirect(Registry::getConfig()->getShopHomeUrl() . 'cl=thankyou'); } Basically, the aspects "$order->isOrderSuccessfullyPaid()", "that would prevent an order confirmation email from being sent", and "Found aborted order placement, redirecting to thankyou page." in the checkForAbortedPayPalOrderPlacement method are contradictory. Thank you for investigating and fixing this issue. | ||||
| Tags | No tags attached. | ||||
|
|
The "checkForAbortedPayPalOrderPlacement" method has been removed as it is no longer needed. This method was implemented to reduce abandoned checkouts due to a slow checkout process. Since the checkout speed is significantly faster in the new version, we have decided to remove the method completely. |