<?xml version="1.0" encoding="utf-8"?>
<!--RSS generated by Flaimo.com RSS Builder [2026-08-24 08:50:46]-->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"><channel><docs>https://bugs.oxid-esales.com/</docs><link>https://bugs.oxid-esales.com/</link><description><![CDATA[OXID eShop bugtrack - Issues]]></description><title>OXID eShop bugtrack - Issues</title><image><title>OXID eShop bugtrack - Issues</title><url>https://bugs.oxid-esales.com/images/mantis_logo.png</url><link>https://bugs.oxid-esales.com/</link><description><![CDATA[OXID eShop bugtrack - Issues]]></description></image><language>en</language><category>All Projects</category><ttl>10</ttl><dc:language>en</dc:language><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><item><title>0007073: Left entries from the popup "Assign article" in the category management do not disappear after assignment</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7073</link><description><![CDATA[If you move articles in the popup from the left column &quot;All articles&quot; to the right column &quot;Articles in this category&quot; under Categories-&gt;Master-&gt;&quot;Assign articles&quot;, this article will not disappear from the left column.]]></description><category>2.4. Administer products</category><pubDate>Fri, 21 Aug 2026 13:27:59 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7073</guid><comments>https://bugs.oxid-esales.com/view.php?id=7073#bugnotes</comments></item><item><title>0007979: smarty-to-twig-converter</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7979</link><description><![CDATA[Der Smarty-to-Twig-Converter konvertiert die folgende Zeile falsch:&lt;br /&gt;
[{assign var=&quot;webconnectFileMTime&quot; value=$oViewConf-&gt;getModulePath('oxps/webconnect', 'out/src/js/webconnecterp_productlists.js')|filemtime}]&lt;br /&gt;
&lt;br /&gt;
Diese Zeile wird übersetzt zu:&lt;br /&gt;
{% set webconnectFileMTime = oViewConf.getModulePath('oxps/webconnect', %}&lt;br /&gt;
&lt;br /&gt;
Erwartete Ausgabe:&lt;br /&gt;
{% set webconnectFileMTime = oViewConf.getModulePath('oxps/webconnect', 'out/src/js/webconnecterp_productlists.js')|filetime %}]]></description><category>8. --- Twig engine ---</category><pubDate>Thu, 20 Aug 2026 12:20:32 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7979</guid><comments>https://bugs.oxid-esales.com/view.php?id=7979#bugnotes</comments></item><item><title>0007113: Module information is not deleted completely</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7113</link><description><![CDATA[If a registered module is not present in modules directory, a question is displayed: &lt;br /&gt;
Invalid modules were detected. Do you want to delete all registered module information and saved configurations?&lt;br /&gt;
Answering &quot;yes&quot; does not update configuration file, so the message appears again and again.]]></description><category>2.3. Extensions (modules, themes)</category><pubDate>Thu, 20 Aug 2026 12:19:18 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7113</guid><comments>https://bugs.oxid-esales.com/view.php?id=7113#bugnotes</comments></item><item><title>0007978: login token for admin and frontend user</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7978</link><description><![CDATA[- In our project we have an impersonation feature that lets an admin user load a frontend user and place orders on their behalf. This worked fine up to OXID 7.0.&lt;br /&gt;
- OXID 7.4 introduced a login-token mechanism (in UserComponent and in User::loadActiveUser()): on login a hash derived from the user's password hash is stored in the session under a single key login-token, and on every loadActiveUser() call it is re-verified against the current password hash — if it doesn't match, the user is logged out.&lt;br /&gt;
- This breaks impersonation, because the core uses one shared login-token key for both the admin (backend) and the frontend user, distinguished only at runtime via isAdmin(). With admin and frontend logged in in parallel within the same session, whichever context writes the token last overwrites the other, so the other context fails the check and gets logged out.&lt;br /&gt;
- I've worked out a workaround that splits the token into two context-specific session slots (login-token-admin / login-token-frontend) and translates between them and the generic login-token key the core expects, leaving the actual verifyHash check untouched.&lt;br /&gt;
- My concern: this relies on the internal login-token key name and the way the core reads/writes it. If a future OXID version renames the key, changes where it's set, or alters the verification flow, the workaround will silently break.&lt;br /&gt;
- Question: is the login-token handling considered stable/public API, or is it an internal implementation detail that may change? And is there an officially supported extension point for impersonation-style parallel sessions that I should use instead?&lt;br /&gt;
&lt;br /&gt;
Thanks]]></description><category>1.05. Users</category><pubDate>Thu, 20 Aug 2026 11:20:48 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7978</guid><comments>https://bugs.oxid-esales.com/view.php?id=7978#bugnotes</comments></item><item><title>0007998: Hidden dependency in the b2b-scheduled-orders-module for the b2b-offers-module</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7998</link><description><![CDATA[The `b2b-scheduled-orders-module` calls the `hasOffer` basket method twice:&lt;br /&gt;
&lt;br /&gt;
b2b-scheduled-orders-module/Service/Service.php:163:        if ($basket-&gt;hasOffer()) {&lt;br /&gt;
b2b-scheduled-orders-module/Controller/ApprovalDetailsController.php:87:        if ($basket-&gt;hasOffer()) {&lt;br /&gt;
&lt;br /&gt;
But this method is defined in `b2b-offers-module` which is not a dependency of `b2b-scheduled-orders-module`.&lt;br /&gt;
&lt;br /&gt;
So either:&lt;br /&gt;
1. add `b2b-offers-module` as dependency of `b2b-scheduled-orders-module`&lt;br /&gt;
2. or check that the method `hasOffer` exists before calling it]]></description><category>B2B edition - sub</category><pubDate>Thu, 20 Aug 2026 09:18:18 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7998</guid><comments>https://bugs.oxid-esales.com/view.php?id=7998#bugnotes</comments></item><item><title>0007985: Refund - send Mail</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7985</link><description><![CDATA[There is no email notification indicating when a refund is processed in the admin panel.&lt;br /&gt;
&lt;br /&gt;
Add a function to send an email t the customer.  &lt;br /&gt;
Add an additional checkbox next to &quot;Refund all.&quot;&lt;br /&gt;
&lt;br /&gt;
Content:&lt;br /&gt;
&quot;A refund has been initiated. &lt;br /&gt;
You can find further information in your PayPal account or the PayPal app.&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
D3/MG]]></description><category>General</category><pubDate>Thu, 20 Aug 2026 08:08:19 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7985</guid><comments>https://bugs.oxid-esales.com/view.php?id=7985#bugnotes</comments></item><item><title>0007311: User remains logged in when switching between subshobs, although "Allow users from other stores" is disabled</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7311</link><description><![CDATA[If the user is logged in to one shops and switches to another subshop, he is always logged in there as well, even though the &quot;Master Settings &gt; Core Settings &gt; Shop 1 &gt; Mall &gt; Allow users from other shops&quot; setting is not set, which is the default.]]></description><category>4.02. Session handling</category><pubDate>Wed, 19 Aug 2026 15:05:34 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7311</guid><comments>https://bugs.oxid-esales.com/view.php?id=7311#bugnotes</comments></item><item><title>0005930: System health check should also check if folder for default cache backend on filesystem has sufficient permissions</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=5930</link><description><![CDATA[Should be added to Files/folders access rights, otherwise Default Cache Backend can be activated, but will just provide nonsense.&lt;br /&gt;
&lt;br /&gt;
Or, additionally, when activating Default Cache Backend, or changing Filesystem foldername, a check should verify if folder exists and if permissions are sufficient.]]></description><category>4.08. Cache</category><pubDate>Wed, 19 Aug 2026 14:42:37 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=5930</guid><comments>https://bugs.oxid-esales.com/view.php?id=5930#bugnotes</comments></item><item><title>0007604: The manufacturer name in the article page doesn't change due to cache reasons</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7604</link><description><![CDATA[If you change the manufacturer of a product while default backend cache is configured, the manufacturer name on the product details page doesn't change]]></description><category>4.08. Cache</category><pubDate>Wed, 19 Aug 2026 14:22:07 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7604</guid><comments>https://bugs.oxid-esales.com/view.php?id=7604#bugnotes</comments></item><item><title>0007630: After submitting the contact form, input values remain, so some people may submit the form twice</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7630</link><description><![CDATA[After submitting the contact form, input values remain, so some people may submit the form twice. There is a little information on top: &quot;Thank you. OXID eShop appreciates your comments.&quot;&lt;br /&gt;
But this can easily be overlooked and the form is not empty, which is unusual behavior.]]></description><category>1.04. Content, static (register, contact etc.) pages</category><pubDate>Tue, 18 Aug 2026 13:09:07 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7630</guid><comments>https://bugs.oxid-esales.com/view.php?id=7630#bugnotes</comments></item><item><title>0004420: Discount title didn't change in basket</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=4420</link><description><![CDATA[Discount title didn't change in basket when changing languages.]]></description><category>1.02. Price calculations (discounts, coupons, additional costs etc.)</category><pubDate>Fri, 14 Aug 2026 11:12:48 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=4420</guid><comments>https://bugs.oxid-esales.com/view.php?id=4420#bugnotes</comments></item><item><title>0006352: Validation Registration E-Mail is inconsistent</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=6352</link><description><![CDATA[oxMailValidator::isValidEmail is using a preg_match with an inconsistence regex &quot;eMailRule&quot;.&lt;br /&gt;
&lt;br /&gt;
Better use php standard email validation:&lt;br /&gt;
filter_var($email_a, FILTER_VALIDATE_EMAIL)&lt;br /&gt;
&lt;a href=&quot;http://php.net/manual/de/filter.examples.validation.php&quot; rel=&quot;noopener,nofollow&quot;&gt;http://php.net/manual/de/filter.examples.validation.php&lt;/a&gt;]]></description><category>1.05. Users</category><pubDate>Thu, 13 Aug 2026 17:54:32 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=6352</guid><comments>https://bugs.oxid-esales.com/view.php?id=6352#bugnotes</comments></item><item><title>0007992: Add a Twig Variable Library to the Visual CMS that provides an overview of all available Twig variables and functions for easier</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7992</link><description><![CDATA[The Visual CMS should include a built-in Twig Variable Library that serves as a reference for content editors and developers.&lt;br /&gt;
&lt;br /&gt;
The library should:&lt;br /&gt;
&lt;br /&gt;
Display all available Twig variables and functions.&lt;br /&gt;
Provide a short description of each variable/function.&lt;br /&gt;
Include usage examples.&lt;br /&gt;
Optionally allow users to insert variables directly into the editor.&lt;br /&gt;
Improve productivity and reduce errors caused by incorrect or unknown Twig variables.]]></description><category>module Visual CMS - sub</category><pubDate>Wed, 12 Aug 2026 15:17:48 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7992</guid><comments>https://bugs.oxid-esales.com/view.php?id=7992#bugnotes</comments></item><item><title>0007969: text widget doesn't support twig codes/variables.</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7969</link><description><![CDATA[In the text widget you cannot have information like {{ oxcmp_shop.oxshops__oxname.value }}&lt;br /&gt;
the old oxcontent in plaintextmode (oxcontents__ddplaintext) still support those, but if used in text widget they get discarded.]]></description><category>module Visual CMS - sub</category><pubDate>Wed, 12 Aug 2026 12:07:51 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7969</guid><comments>https://bugs.oxid-esales.com/view.php?id=7969#bugnotes</comments></item><item><title>0007990: Metapackage requests insecure composer version during installation</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7990</link><description><![CDATA[During&lt;br /&gt;
composer create-project --no-dev oxid-esales/oxideshop-project htdocs dev-b-7.4-ee&lt;br /&gt;
OR&lt;br /&gt;
composer create-project --no-dev oxid-esales/oxideshop-project htdocs dev-b-7.4-pe&lt;br /&gt;
OR&lt;br /&gt;
composer create-project --no-dev oxid-esales/oxideshop-project htdocs dev-b-7.4-ce&lt;br /&gt;
&lt;br /&gt;
this error occurs &lt;br /&gt;
&lt;br /&gt;
oxid-esales/oxideshop-metapackage-ce v7.4.1 requires composer/composer 2.9.8 -&gt; found composer/composer[2.9.8] but these were not loaded, because they are affected by security advisories (&quot;PKSA-q3ht-3g42-rg8f&quot;, &quot;PKSA-4pm6-g63v-5rkr&quot;, &quot;PKSA-zcdk-qnhk-hq2g&quot;). Go to &lt;a href=&quot;https://packagist.org/security-advisories/&quot; rel=&quot;noopener,nofollow&quot;&gt;https://packagist.org/security-advisories/&lt;/a&gt; to find advisory details. To ignore the advisories, add them to the audit &quot;ignore&quot; config. To turn the feature off entirely, you can set &quot;block-insecure&quot; to false in your &quot;audit&quot; config.]]></description><category>6. ------ Setup -------</category><pubDate>Wed, 12 Aug 2026 08:04:18 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7990</guid><comments>https://bugs.oxid-esales.com/view.php?id=7990#bugnotes</comments></item><item><title>0007770: Cant use admin with cloudflare domain because of endless redirects</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7770</link><description><![CDATA[As an oxid developer I want to be able to use the cloudflare domains like rene.oxiddev.de and the admin interface during development.&lt;br /&gt;
&lt;br /&gt;
When i enter the url &lt;a href=&quot;https://rene.oxiddev.de/admin&quot; rel=&quot;noopener,nofollow&quot;&gt;https://rene.oxiddev.de/admin&lt;/a&gt; the browser gets redirected endlessly. During debug I found this function:&lt;br /&gt;
&lt;br /&gt;
OxidEsales\EshopCommunity\Core\Config::checkSsl&lt;br /&gt;
&lt;br /&gt;
(oxideshop/vendor/oxid-esales/oxideshop-ce/source/Core/Config.php:781)&lt;br /&gt;
&lt;br /&gt;
I think the last statement &lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
        if (&lt;br /&gt;
            isset($serverVars['HTTP_X_FORWARDED_SERVER']) &amp;&amp;&lt;br /&gt;
            (strpos($serverVars['HTTP_X_FORWARDED_SERVER'], 'ssl') !== false ||&lt;br /&gt;
             strpos($serverVars['HTTP_X_FORWARDED_SERVER'], 'secure-online-shopping.de') !== false)&lt;br /&gt;
        ) {&lt;br /&gt;
            $this-&gt;setIsSsl(true);&lt;br /&gt;
        }&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
could be extended with &lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
|| isset($serverVars['HTTP_X_FORWARDED_PROTO']) &amp;&amp; $serverVars['HTTP_X_FORWARDED_PROTO'] == 'https'&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
When i use cloudflare this header is always set to https when using https. So my propsal would be to include this check to be able to use cloud flare domains.]]></description><category>2. ----- eShop backend (admin) -----</category><pubDate>Tue, 11 Aug 2026 16:44:21 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7770</guid><comments>https://bugs.oxid-esales.com/view.php?id=7770#bugnotes</comments></item><item><title>0007993: Ascending and descending sort order for every admin list</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7993</link><description><![CDATA[As already mentioned in &lt;a href=&quot;https://bugs.oxid-esales.com/view.php?id=1405,&quot; rel=&quot;noopener&quot;&gt;https://bugs.oxid-esales.com/view.php?id=1405,&lt;/a&gt; but unfortunately not implemented,&lt;br /&gt;
the sorting function in all admin lists is extremely user-unfriendly because it only works in one direction ( ascending  ).&lt;br /&gt;
&lt;br /&gt;
With a small adjustment of the getSorting() function, switching the sort direction should be easy to implement&lt;br /&gt;
and would significantly improve handling in the backend!]]></description><category>2. ----- eShop backend (admin) -----</category><pubDate>Tue, 11 Aug 2026 11:04:39 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7993</guid><comments>https://bugs.oxid-esales.com/view.php?id=7993#bugnotes</comments></item><item><title>0007991: SQL Injection via getRequestEscapedParameter() via Admin</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7991</link><description><![CDATA[getRequestEscapedParameter() doesnt escape parameters if its used in admin focus so some functions allow sql injections especially if used in combination with&lt;br /&gt;
$database = \OxidEsales\Eshop\Core\DatabaseProvider::getDb();&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
htdocs/vendor/oxid-esales/oxideshop-ee/Application/Controller/Admin/ArticleRightsBuyableAjax.php &lt;br /&gt;
htdocs/vendor/oxid-esales/oxideshop-ee/Application/Controller/Admin/AttributeCategoryAjax.php&lt;br /&gt;
&lt;br /&gt;
and more]]></description><category>2. ----- eShop backend (admin) -----</category><pubDate>Mon, 10 Aug 2026 19:43:40 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7991</guid><comments>https://bugs.oxid-esales.com/view.php?id=7991#bugnotes</comments></item><item><title>0007963: PayPal smart button: terms-and-conditions check runs inside createOrder instead of onClick</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7963</link><description><![CDATA[On the order step (&quot;Jetzt kaufen&quot; / step 4), clicking the PayPal button without confirming the terms-and-conditions checkbox makes the PayPal popup open briefly and close again.&lt;br /&gt;
The browser console shows:&lt;br /&gt;
Uncaught Error: Expected an order id to be passed (thrown by PayPal JS SDK v5.0.556, paypal.com/smart/buttons).&lt;br /&gt;
&lt;br /&gt;
Root cause&lt;br /&gt;
The standard PayPal button (&lt;div id=&quot;oscpaypal&quot;&gt; from checkout_order_btn_submit_bottom.tpl) is rendered by standard-payment-controller.js. The terms check (checkTermsAndConditions()) exists, but it runs inside createOrder and, on failure, does a bare return; — i.e. createOrder resolves to undefined. Since the PayPal SDK opens the popup synchronously on click and only then calls createOrder, an undefined return triggers the SDK's strict order-id check, which surfaces as the visible error and a popup that closes immediately. getPayButtonSettings() defines no onClick handler, so there is no pre-flight rejection.&lt;br /&gt;
&lt;br /&gt;
Correct behaviour (existing reference)&lt;br /&gt;
Apple Pay (applepay.tpl) and Google Pay (googlepay-payment-controller.js) already perform the check before the payment flow starts — in the click handler / onClick, returning early / actions.reject() so the popup never opens.&lt;br /&gt;
&lt;br /&gt;
Affected&lt;br /&gt;
  - standard-payment-controller.js — check in createOrder instead of onClick (primary, matches the report).&lt;br /&gt;
  - acdc-payment-controller.js — same pattern (check inside order creation rather than onClick).&lt;br /&gt;
  - paymentbuttons.tpl (Express / SEPA / CC funding buttons) — no terms check at all; separate but same failure class.&lt;br /&gt;
&lt;br /&gt;
Fix direction&lt;br /&gt;
Add an onClick(data, actions) pre-check to the PayPal/ACDC button settings that calls checkTermsAndConditions(), shows READ_AND_CONFIRM_TERMS and rejects (actions.reject()) before the popup opens; keep createOrder as a safety net. Mirror the same pre-check into the funding buttons in paymentbuttons.tpl. To be fixed in the OXID 6 and OXID 7 module lines.]]></description><category>module PayPal checkout - sub</category><pubDate>Fri, 31 Jul 2026 12:17:10 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7963</guid><comments>https://bugs.oxid-esales.com/view.php?id=7963#bugnotes</comments></item><item><title>0007959: The PayPal Express button disappears from the shopping cart when changes are made to the item quantity</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7959</link><description><![CDATA[If you change the quantity of an item directly in the shopping cart using the minus/plus icon, the PayPal Express button will disappear from the shopping cart.&lt;br /&gt;
&lt;br /&gt;
This issue only affects the OXID 7 version.&lt;br /&gt;
It cannot be reproduced in OXID 6.5 with v2.9.1.]]></description><category>module PayPal checkout - sub</category><pubDate>Fri, 31 Jul 2026 12:16:26 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7959</guid><comments>https://bugs.oxid-esales.com/view.php?id=7959#bugnotes</comments></item><item><title>0007962: PayPal Checkout ignores paymentId when basket already contains another payment method</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7962</link><description><![CDATA[When using PayPal Checkout, the PayPal module passes the correct payment ID oscpaypal to the shop order creation process. However, if the basket already contains another payment method, for example oxidamazon, the PayPal payment ID is ignored and the order is created with the previously stored basket payment method.&lt;br /&gt;
&lt;br /&gt;
Relevant code path:&lt;br /&gt;
```&lt;br /&gt;
// vendor/oxid-solution-catalysts/paypal-module/src/Controller/AjaxPaymentController.php:109&lt;br /&gt;
&lt;br /&gt;
$paymentId = $data['paymentId'] ?? null;&lt;br /&gt;
&lt;br /&gt;
$this-&gt;orderManager-&gt;createShopOrder($paymentId);&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Inside createShopOrder(), the PayPal payment method is only set if the basket currently has no payment method assigned:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
// vendor/oxid-solution-catalysts/paypal-module/src/Service/OrderManager.php:75&lt;br /&gt;
&lt;br /&gt;
if (empty($this-&gt;basket-&gt;getPaymentId()) &amp;&amp; !empty($paymentId)) {&lt;br /&gt;
    $this-&gt;basket-&gt;setPayment($paymentId);&lt;br /&gt;
}&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
If the basket already contains oxidamazon, the provided PayPal payment ID is ignored.&lt;br /&gt;
&lt;br /&gt;
The OXID order then uses the payment method directly from the basket:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
// vendor/oxid-esales/oxideshop-ce/source/Application/Model/Order.php:515&lt;br /&gt;
&lt;br /&gt;
$oUserPayment = $this-&gt;_setPayment($oBasket-&gt;getPaymentId());&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
As a result, the created order contains:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
OXPAYMENTTYPE = oxidamazon&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
although the customer actually completed the checkout using PayPal.&lt;br /&gt;
&lt;br /&gt;
At the same time, the PayPal Checkout flow sets a special session flag:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
// vendor/oxid-solution-catalysts/paypal-module/src/Service/OrderManager.php:82&lt;br /&gt;
&lt;br /&gt;
$session-&gt;setVariable('isPayPalPaymentCheckout', true);&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
This flag causes the regular payment execution to be skipped:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
// vendor/oxid-solution-catalysts/paypal-module/src/Model/Order.php:413&lt;br /&gt;
&lt;br /&gt;
if (Registry::getSession()-&gt;getVariable('isPayPalPaymentCheckout')) {&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
OXID interprets this true return value as a successful payment and sets the order status to OK:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
// vendor/oxid-esales/oxideshop-ce/source/Application/Model/Order.php:552&lt;br /&gt;
&lt;br /&gt;
$this-&gt;_setOrderStatus('OK');&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
Only after the OXID order has already been created, the PayPal module changes the basket payment method to PayPal:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
// vendor/oxid-solution-catalysts/paypal-module/src/Controller/AjaxPaymentController.php:130&lt;br /&gt;
&lt;br /&gt;
$this-&gt;setPayPalPaymentMethod(&lt;br /&gt;
    PayPalDefinitions::STANDARD_PAYPAL_PAYMENT_ID&lt;br /&gt;
);&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
This happens too late for the already created OXID order.&lt;br /&gt;
&lt;br /&gt;
Expected behavior:&lt;br /&gt;
&lt;br /&gt;
When PayPal Checkout is used, the order should be created with the PayPal payment method, for example:&lt;br /&gt;
&lt;br /&gt;
`OXPAYMENTTYPE = oscpaypal`&lt;br /&gt;
&lt;br /&gt;
The PayPal payment ID passed to createShopOrder($paymentId) should overwrite any previously stored basket payment method for this checkout flow.&lt;br /&gt;
&lt;br /&gt;
Actual behavior:&lt;br /&gt;
&lt;br /&gt;
If the basket already contains another payment method, for example oxidamazon, the order is created with: `OXPAYMENTTYPE = oxidamazon`&lt;br /&gt;
&lt;br /&gt;
even though the customer used PayPal Checkout. The order is then marked as OK because the PayPal Checkout session flag skips the normal payment execution.&lt;br /&gt;
&lt;br /&gt;
Possible fix:&lt;br /&gt;
&lt;br /&gt;
In the PayPal Checkout flow, createShopOrder($paymentId) should set the provided payment ID whenever it is present, not only when the basket payment ID is empty.&lt;br /&gt;
&lt;br /&gt;
Current logic:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
if (empty($this-&gt;basket-&gt;getPaymentId()) &amp;&amp; !empty($paymentId)) {&lt;br /&gt;
    $this-&gt;basket-&gt;setPayment($paymentId);&lt;br /&gt;
}&lt;br /&gt;
```&lt;br /&gt;
Possible adjusted logic:&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
if (!empty($paymentId)) {&lt;br /&gt;
    $this-&gt;basket-&gt;setPayment($paymentId);&lt;br /&gt;
}&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
This would ensure that the order is created with the payment method actually used in the checkout.]]></description><category>General</category><pubDate>Fri, 31 Jul 2026 12:15:53 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7962</guid><comments>https://bugs.oxid-esales.com/view.php?id=7962#bugnotes</comments></item><item><title>0007964: When attempting to pay with PayPal, a maintenance page appears in the store, likely due to a lost session</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7964</link><description><![CDATA[When attempting to pay via PayPal, a maintenance page appeared in the shop.&lt;br /&gt;
&lt;br /&gt;
The cause is likely a lost session.&lt;br /&gt;
&lt;br /&gt;
The shop (7.2.0) is using version 3.7.4 of the module. However, I can reproduce the same behavior up to version 3.8.2 RC.]]></description><category>module PayPal checkout - sub</category><pubDate>Fri, 31 Jul 2026 12:15:16 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7964</guid><comments>https://bugs.oxid-esales.com/view.php?id=7964#bugnotes</comments></item><item><title>0007849: When Deactivating Module (e.g. PPC or Amazon) you got an exception: OXID Logger.ERROR: Template "module_main" nicht gefunden</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7849</link><description><![CDATA[Activating and deactivating each module individually works. Just not in sequence.&lt;br /&gt;
&lt;br /&gt;
This is where the error is triggered:&lt;br /&gt;
vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(438)&lt;br /&gt;
-&gt; protected function render($view)&lt;br /&gt;
&lt;br /&gt;
        try {&lt;br /&gt;
            $output = $renderer-&gt;renderTemplate($templateName, $viewData);&lt;br /&gt;
        } catch (\Throwable $exception) {&lt;br /&gt;
&lt;br /&gt;
It only happes when Deaktivating Module Amazon and PayPal, not Adyen.]]></description><category>General</category><pubDate>Fri, 31 Jul 2026 12:14:05 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7849</guid><comments>https://bugs.oxid-esales.com/view.php?id=7849#bugnotes</comments></item><item><title>0007989: Refund - send Mail</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7989</link><description><![CDATA[There is no email notification indicating when a refund is processed in the admin panel.&lt;br /&gt;
&lt;br /&gt;
Add a function to send an email t the customer.  &lt;br /&gt;
Add an additional checkbox next to &quot;Refund all.&quot;&lt;br /&gt;
&lt;br /&gt;
Content:&lt;br /&gt;
&quot;A refund has been initiated. &lt;br /&gt;
You can find further information in your PayPal account or the PayPal app.&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
D3/MG]]></description><category>General</category><pubDate>Thu, 30 Jul 2026 15:43:49 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7989</guid><comments>https://bugs.oxid-esales.com/view.php?id=7989#bugnotes</comments></item><item><title>0007988: Refund - send Mail</title><author></author><link>https://bugs.oxid-esales.com/view.php?id=7988</link><description><![CDATA[There is no email notification indicating when a refund is processed in the admin panel.&lt;br /&gt;
&lt;br /&gt;
Add a function to send an email t the customer.  &lt;br /&gt;
Add an additional checkbox next to &quot;Refund all.&quot;&lt;br /&gt;
&lt;br /&gt;
Content:&lt;br /&gt;
&quot;A refund has been initiated. &lt;br /&gt;
You can find further information in your PayPal account or the PayPal app.&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
D3/MG]]></description><category>General</category><pubDate>Thu, 30 Jul 2026 15:42:30 +0200</pubDate><guid>https://bugs.oxid-esales.com/view.php?id=7988</guid><comments>https://bugs.oxid-esales.com/view.php?id=7988#bugnotes</comments></item></channel></rss>
