Google GPay im PayPal Checkout Plugin Version 2.3.1 mit Freiposition in einem Konfigurationsartikel stürzt ab Error 500. Fehlerbeschreibung:
Wenn der Artikel in der aktuellen Sprache des Kunden keinen Namen hat (oder der Name aus der Datenbank leer ist), wird $name zu null. Dieses null wird an getNameWithQuantity übergeben, und PHP bricht sofort mit dem fatalen Fehler ab.
Hotfix der das Problem löst ( auf eigene Gefahr )
$taxRate = CartItem::getTaxRate($cartPos);
$name = \is_array($cartPos->cName) ? $cartPos->cName[ Shop::getLanguageCode()] : $cartPos->cName;
$netto = $cartPos->fPreis * $cartPos->nAnzahl;
ersetzen durch:
$taxRate = CartItem::getTaxRate($cartPos); // Verhindert, dass ein "null"-Wert oder ein nicht existierender Sprach-Key zum Absturz führt
$name = \is_array($cartPos->cName) ? ($cartPos->cName[Shop::getLanguageCode()] ?? '') : ($cartPos->cName ?? ''); // Fallback: Wenn der Name komplett leer ist, nutze die Artikelnummer oder standardmäßig "Artikel" if (empty($name)) { $name = !empty($cartPos->cArtNr) ? $cartPos->cArtNr : 'Artikel'; } $netto = $cartPos->fPreis * $cartPos->nAnzahl;
Achtung bei Updates: Diese Änderung ist ein manueller Hotfix. Sobald Sie das PayPal-Plugin über den JTL-Extension-Store aktualisieren, wird diese Datei überschrieben und Ihre Änderung geht verloren.
Da es sich hierbei um einen klaren Programmierfehler im Plugin handelt (fehlende Absicherung gegen null unter PHP 8), sollten Sie das Plugin updaten, sobald JTL eine offizielle Version herausbringt, die diesen Fehler behebt. Bis dahin rettet dieser Hotfix Ihren Checkout.
Wenn der Artikel in der aktuellen Sprache des Kunden keinen Namen hat (oder der Name aus der Datenbank leer ist), wird $name zu null. Dieses null wird an getNameWithQuantity übergeben, und PHP bricht sofort mit dem fatalen Fehler ab.
Hotfix der das Problem löst ( auf eigene Gefahr )
$taxRate = CartItem::getTaxRate($cartPos);
$name = \is_array($cartPos->cName) ? $cartPos->cName[ Shop::getLanguageCode()] : $cartPos->cName;
$netto = $cartPos->fPreis * $cartPos->nAnzahl;
ersetzen durch:
$taxRate = CartItem::getTaxRate($cartPos); // Verhindert, dass ein "null"-Wert oder ein nicht existierender Sprach-Key zum Absturz führt
$name = \is_array($cartPos->cName) ? ($cartPos->cName[Shop::getLanguageCode()] ?? '') : ($cartPos->cName ?? ''); // Fallback: Wenn der Name komplett leer ist, nutze die Artikelnummer oder standardmäßig "Artikel" if (empty($name)) { $name = !empty($cartPos->cArtNr) ? $cartPos->cArtNr : 'Artikel'; } $netto = $cartPos->fPreis * $cartPos->nAnzahl;
Achtung bei Updates: Diese Änderung ist ein manueller Hotfix. Sobald Sie das PayPal-Plugin über den JTL-Extension-Store aktualisieren, wird diese Datei überschrieben und Ihre Änderung geht verloren.
Da es sich hierbei um einen klaren Programmierfehler im Plugin handelt (fehlende Absicherung gegen null unter PHP 8), sollten Sie das Plugin updaten, sobald JTL eine offizielle Version herausbringt, die diesen Fehler behebt. Bis dahin rettet dieser Hotfix Ihren Checkout.