View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0007884 | module PayPal Checkout | module PayPal checkout - sub | public | 2026-01-14 14:35 | 2026-02-03 10:05 |
| Reporter | Spritje | Assigned To | |||
| Priority | normal | Severity | minor | Reproducibility | have not tried |
| 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 | 0007884: When canceling and paying again with PayPal, the module does not use the shipping method but the shipping costs | ||||
| Description | There are two shipping methods in the shop, and it sometimes happens that the shipping method selected by the user changes in the background during payment (not even when canceling) via PayPal. Unfortunately, only the shipping method changed, not the different costs. If the user then cancels their payment (which also happens quite often because the PayPal overlay takes forever to load and the user thinks it is broken and closes it) and tries again, we end up with the wrong shipping method or costs. We have located the cause of this in two code locations in the PayPal module: 1) PayPalOrderCreatedSubscriber->onOrderCreated() resets the shipping method during payment via PayPalSession::unsetPayPalSession(); (https://github.com/OXID-eSales/paypal-module/blob/b-6.3.x/src/EventSubscriber/PayPalOrderCreatedSubscriber.php#L49). Here, we execute PayPalSession::unsetPayPalSession(false); instead, so that the shipping method is retained. 2) The same applies when calling ProxyController->getActiveShippingSetId() in https://github.com/OXID-eSales/paypal-module/blob/b-6.3.x/src/Controller/ProxyController.php#L413 The method internally calls DeliverySetList->getDeliverySetData(), which simply returns the first shipping method that matches the user and shopping cart. However, if the user has not selected the first shipping method, the rest of the code ensures that the wrong shipping method is stored in the session. Here, we simply commented out the linked call to getActiveShippingSetId() in setPayPalPaymentMethod() so that the information in the session is retained instead of being overwritten. | ||||
| Steps To Reproduce | 1. Create 2 shipping methods (Standard 0 EUR, Express 12,90 EUR) 2. Add article to basket, login and select shipping method Express (PPC_1.jpg) 3. Continue to the PayPal pop-up and cancel (PPC_2.jpg) 4. If you now continue with PayPal you end up in an order with Shipping Method STANDARD with Shipping Costs for EXPRESS (PPC_3.jpg) | ||||
| Additional Information | QA - ES redroduced in EE 6.5.5 with PPC v2.6.4 installed | ||||
| Tags | No tags attached. | ||||