Neu PayPal Fehlermeldung "URL ist not a fully qualified URL"

logics

Aktives Mitglied
16. Juli 2021
29
3
Wenn man untenstehende Änderung an den folgenden Dateien ändert, dann kann die in meinem ersten Post auskommentierte Zeile wieder rückgängig gemacht werden.

/jtlshop/includes/plugins/jtl_paypal/lib/Api/WebhookSimulate.php
/jtlshop/includes/plugins/jtl_paypal/vendor/paypal/rest-api-sdk-php/lib/PayPal/Api/FileAttachment.php
/jtlshop/includes/plugins/jtl_paypal/vendor/paypal/rest-api-sdk-php/lib/PayPal/Api/Item.php

Original

PHP:
public function setUrl($url)
{
    UrlValidator::validate($url, 'Url');
    $this->url = $url;
    return $this;
}

Nach Änderung:

PHP:
public function setUrl($url)
{
    if (!is_null($url)) {
        UrlValidator::validate($url, 'Url');
    }     
    $this->url = $url;
    return $this;
}


Dadurch wird eine Prüfung eingebaut, ob die zu prüfende URL einen Null-Wert aufweist und falls ja, wird keine Exception ausgelöst.

Dieses Problem gab es 2018 schon mal:
https://github.com/paypal/PayPal-PHP-SDK/pull/1158/commits/ff01896f62222dcd19b64644a923fec37ac18bf4
Den Inhalt gibt es bei mir garnicht. Bei mir ist folgendes drin:

<?php

namespace PayPal\Api;

use PayPal\Common\PayPalModel;
use PayPal\Converter\FormatConverter;
use PayPal\Validation\NumericValidator;
use PayPal\Validation\UrlValidator;

/**
* Class Item
*
* Item details.
*
* @package PayPal\Api
*
* @property string sku
* @property string name
* @property string description
* @property string quantity
* @property string price
* @property string currency
* @property string tax
* @property string url
*/
class Item extends PayPalModel
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.457
2.054
Berlin
Ich denke das kommt von den Artikel Daten, da ist auf einmal die url mit enthalten, warum auch immer.
Ich weiß natürlich nicht wie die Daten vorher aussahen aber das ist das einzige URL das ich in den Daten sehe die per json übergeben werden.

Code:
                            [description] => Payment
                            [invoice_number] => 10413DS-406-
                            [item_list] => Array
                                (
                                    [items] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [name] => Boxsack
                                                    [price] => 49.99
                                                    [currency] => EUR
                                                    [tax] => 0.00
                                                    [quantity] => 1
                                                    [url] =>
                                                    [image_url] =>
                                                )

                                        )

                                    [shipping_address] => Array
                                        (
                                            [recipient_name] => Max Mustermann



So sieht das aus wenn es angelegt wird

Code:
[items] => Array
                                                                        (
                                                                            [0] => PayPal\Api\Item Object
                                                                                (
                                                                                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                                                                                        (
                                                                                            [name] => Boxsack
                                                                                            [price] => 49.99
                                                                                            [currency] => EUR
                                                                                            [quantity] => 1
                                                                                        )

                                                                                )

                                                                        )

Ich habe daher jetzt in meinem Test die Datei PaypalModel.php genommen und diese Funktion modifiziert

PHP:
    private function assignValue($key, $value)
    {
        $setter = 'set'. $this->convertToCamelCase($key);
//neu
        if($setter == 'setUrl' && empty($value)) {
            $this->__set($key, $value);
            return;
        }
// ende

        // If we find the setter, use that, otherwise use magic method.
        if (method_exists($this, $setter)) {
            $this->$setter($value);
        } else {
            $this->__set($key, $value);
        }
    }
 
  • Gefällt mir
Reaktionen: Performwerk

Buinger

Gut bekanntes Mitglied
30. April 2009
325
15
Weiß jemand, wie es hier weiter geht? Wir haben (natürlich) das gleiche Problem und eine Vielzahl von Bestellungen. Da am Code rumzufummeln ist so eine Sache.

Ist das hier eine wirklich zuverlässige Lösung?

Wenn man untenstehende Änderung an den folgenden Dateien ändert, dann kann die in meinem ersten Post auskommentierte Zeile wieder rückgängig gemacht werden.

/jtlshop/includes/plugins/jtl_paypal/lib/Api/WebhookSimulate.php
/jtlshop/includes/plugins/jtl_paypal/vendor/paypal/rest-api-sdk-php/lib/PayPal/Api/FileAttachment.php
/jtlshop/includes/plugins/jtl_paypal/vendor/paypal/rest-api-sdk-php/lib/PayPal/Api/Item.php

Original

PHP:
public function setUrl($url)
{
UrlValidator::validate($url, 'Url');
$this->url = $url;
return $this;
}

Nach Änderung:

PHP:
public function setUrl($url)
{
if (!is_null($url)) {
UrlValidator::validate($url, 'Url');
}
$this->url = $url;
return $this;
}
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.457
2.054
Berlin
Wir SP warten im internen Slack auf ein Statement von den zuständigen JTL Programmieren, leider kommt da gar nichts.
Auch das hier im Forum scheinbar nicht reagiert wird ist ärgerlich, da es eine Menge Shops betrifft, hier glühen die Leitungen.

Begeistert bin ich davon nicht, in diesem Code rumzumurksen ohne genau zu wissen warum das auf einmal passiert und was PayPal da wirklich mit der url möchte.
aber wenn dann würde ich eher auf meine Variante zurückgreifen, das ist dann nur ein Eingriff ins System

Die PayPalModal.php wird vermutlich in allen Versionen nahezu gleich sein.
 

logics

Aktives Mitglied
16. Juli 2021
29
3
Ich denke das kommt von den Artikel Daten, da ist auf einmal die url mit enthalten, warum auch immer.
Ich weiß natürlich nicht wie die Daten vorher aussahen aber das ist das einzige URL das ich in den Daten sehe die per json übergeben werden.

Code:
                            [description] => Payment
                            [invoice_number] => 10413DS-406-
                            [item_list] => Array
                                (
                                    [items] => Array
                                        (
                                            [0] => Array
                                                (
                                                    [name] => Boxsack
                                                    [price] => 49.99
                                                    [currency] => EUR
                                                    [tax] => 0.00
                                                    [quantity] => 1
                                                    [url] =>
                                                    [image_url] =>
                                                )

                                        )

                                    [shipping_address] => Array
                                        (
                                            [recipient_name] => Max Mustermann



So sieht das aus wenn es angelegt wird

Code:
[items] => Array
                                                                        (
                                                                            [0] => PayPal\Api\Item Object
                                                                                (
                                                                                    [_propMap:PayPal\Common\PayPalModel:private] => Array
                                                                                        (
                                                                                            [name] => Boxsack
                                                                                            [price] => 49.99
                                                                                            [currency] => EUR
                                                                                            [quantity] => 1
                                                                                        )

                                                                                )

                                                                        )

Ich habe daher jetzt in meinem Test die Datei PaypalModel.php genommen und diese Funktion modifiziert

PHP:
    private function assignValue($key, $value)
    {
        $setter = 'set'. $this->convertToCamelCase($key);
//neu
        if($setter == 'setUrl' && empty($value)) {
            $this->__set($key, $value);
            return;
        }
// ende

        // If we find the setter, use that, otherwise use magic method.
        if (method_exists($this, $setter)) {
            $this->$setter($value);
        } else {
            $this->__set($key, $value);
        }
    }


So sieht Sie bei Shop4 und Paypal 116 aus: Kann da keine Übereinstimmung finden.


<?php

namespace PayPal\Common;

use PayPal\Validation\JsonValidator;

/**
* Generic Model class that all API domain classes extend
* Stores all member data in a Hashmap that enables easy
* JSON encoding/decoding
*/
class PayPalModel
{

private $_propMap = array();

/**
* OAuth Credentials to use for this call
*
* @var \PayPal\Auth\OAuthTokenCredential $credential
*/
protected static $credential;

/**
* Sets Credential
*
 

Buinger

Gut bekanntes Mitglied
30. April 2009
325
15
Vom JTL-Support hatten wir folgende Email bekommen:


Verkürzt gesagt:

Die folgende Zeile, in der /includes/plugins/jtl_paypal/vendor/paypal/rest-api-sdk-php/lib/PayPal/Validation/UrlValidator.php auskommentieren:

throw new \InvalidArgumentException("$urlName is not a fully qualified URL");

Auskommentiert wird mit 2 vorangestellten /, die Zeile muss danach so aussehen:

//throw new \InvalidArgumentException("$urlName is not a fully qualified URL");

Testbestellung gemacht, hat alles geklappt. So weit so gut!
 

Markus Motion

Aktives Mitglied
12. August 2020
11
5
Tutzing
Leider auch das gleiche Problem bei uns im Shop (26.10.2023 ab ca. 10.00 Uhr).

Gibt es schon mehr Informationen ob die Änderungen bei PayPal bleiben oder es nur ein vorübergehender Bug bei PayPal ist?

LG an alle, Markus
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.457
2.054
Berlin
wenn @Buinger da durch den Support von JTL mehr weiß als wir SP 😗
und das von einem kommt der die Schnittstelle Programmiert oder von ihm die Info hat, dann wäre das die einfachste Möglichkeit.

Ich hätte das Aufgrund der Tatsache, dass ich nicht weiß was die noch alles prüft, bzw. welche Abhängigkeiten da noch existieren könnten nicht gemacht.
Aber wenn der Support der Meinung ist das es OK ist dann los.

Die folgende Zeile, in der /includes/plugins/jtl_paypal/vendor/paypal/rest-api-sdk-php/lib/PayPal/Validation/UrlValidator.php auskommentieren:

throw new \InvalidArgumentException("$urlName is not a fully qualified URL");

Auskommentiert wird mit 2 vorangestellten /, die Zeile muss danach so aussehen:

//throw new \InvalidArgumentException("$urlName is not a fully qualified URL");
 

matthiasbaer

Aktives Mitglied
30. Juni 2021
9
0
Hallo zusammen,

kann mir einer sagen wie ich auf die Datei zugreifen kann und wo ich sie finde?

/includes/plugins/jtl_paypal/vendor/paypal/rest-api-sdk-php/lib/PayPal/Validation/UrlValidator.php

Ich denke mit Microsoft SQL Server Manager ?

Danke für die Hilfe.

LG
Matthias
 

David_M

Aktives Mitglied
4. Januar 2011
99
19
Wir haben auch das gleiche Problem, dass uns in den letzten 48h zu 6 Bestellungen kein Auftrag in der Wawi angelegt wurde, noch hat der Kunde eine Bestellbestätigung erhalten.
Ich habe soeben den JTL Support kontaktiert und werde die Antwort, wenn ich eine bekomme hier posten.

Unser SP ist auch im Servicepartner-Slack und dort gibts noch keine Antwort seitens JTL...
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Probleme mit Klarna und PayPal Plugins für JTL-Shop 0
Neu Paypal-Probleme (Smartbuttons) nach Shop-Update Betrieb / Pflege von JTL-Shop 0
Neu Expresskauf lässt sich in Paypal Plugin nicht ändern Plugins für JTL-Shop 1
Neu Paypal-Button "Später bezahlen" verschwindet nach Variationsauswahl Plugins für JTL-Shop 0
Neu Paypal Bestellungen werden teilweise nicht übertragen Allgemeine Fragen zu JTL-Shop 5
verschiedene Zahlungsarten via Paypal JTL-Wawi 1.9 2
Neu Probleme beim Einrichten des PayPal Plugins beim Onboarding Plugins für JTL-Shop 1
[1.9.7.0]Paypal Anbindung - Benutzerdaten können nicht angegeben werden JTL-Wawi 1.9 3
Neu Paypal Checkout Plugin - Kaufdetails an Paypal übergeben Einstellung Plugins für JTL-Shop 5
Neu JTL Shop Anzeige Fehler Amazon Pay Button und Paypal Pay Button Allgemeine Fragen zu JTL-Shop 3
Neu Apple Pay in PayPal Plugin für die Schweiz Plugins für JTL-Shop 4
Neu Dringende Hilfe Paypal Checkout Plugins für JTL-Shop 0
Kunden aufträge werden nicht übernommen Paypal JTL-Wawi 1.9 0
Neu Skonto-Abzug trotz PayPal-Zahlung – Wie können wir das verhindern? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Zahlungsarten werden nicht angezeigt... Secupay, Paypal Checkout und Shop-Zahlungsarten gleichzeitig möglich? Plugins für JTL-Shop 0
Neu PayPal Checkout -> Der Zahlungsanbieter hat eine erneute Bestätigung der Kaufsumme angefordert Plugins für JTL-Shop 0
Neu 1.9.6.5 Zahlungsmodul Paypal Verwendungszweck wird nicht angezeigt. JTL-Wawi - Fehler und Bugs 5
Neu Paypal Plugin wird von akutellen IOS Geräten nicht geladen Plugins für JTL-Shop 17
Neu Fehlermeldung bei Synchronisation aus der WaWi: "Artikel "XYZ" kann nicht hochgeladen werden, da der Shop den Steuersatz '19' nicht unterstützt." WooCommerce-Connector 1
Neu Fehlermeldung: Dein Gerät ist nicht mit dieser Version kompatibel Einrichtung / Updates von JTL-POS 0
Kategorie löschen - Fehlermeldung JTL-Wawi 1.9 3
Fehlermeldung im Packtisch bei Nutzung von DHL versenden 3.0 JTL-Wawi 1.9 1
Artikel anlegen bei OTTO nicht möglich. Fehlermeldung 200002 & 102051 Otto.de - Anbindung (SCX) 0
Hersteller erfassen geht nicht. Fehlermeldung: Es liegen Fehler vor JTL-Wawi 1.9 2
Neu beim Update auf die 5.4.0 erhalte wir folgende Fehlermeldung: JTL-Shop - Fehler und Bugs 4
Beim Öffnen des Artikels kommt Fehlermeldung "Sitzung weist Kill-Status auf" JTL-Wawi 1.9 3
Neu DHL Retourenlabel Fehlermeldung in jtl wawi JTL-ShippingLabels - Fehler und Bugs 1
Neu Artikelbilder URL Pfad exportieren JTL Ameise - Eigene Exporte 5
Neu WooCommerce Connector Fehler: Shop-URL verweist nicht auf einen gültigen Shop WooCommerce-Connector 2
Neu Bild-URL per Workflow aus eigene Felder zuordnen – Geht das? User helfen Usern - Fragen zu JTL-Wawi 5
Neu Google Search Console: 5xx-Fehler für nicht indexierte Seiten mit URL-Parametern – Warum? Betrieb / Pflege von JTL-Shop 3
Neu Suchspecial belegt "Sale" URL Allgemeine Fragen zu JTL-Shop 0
URL PFAD SEO Multishop Für jeden Shop unterschiedliche Einträge JTL-Wawi 1.9 2
Automatische URL-Pfad-Generierung entsprechend Kategoriepfad JTL-Wawi 1.7 0
Neu JTL Connector Error: 20 - Invalid shop url. https://meineseite.com does not point to a shopware 6 instance Shopware-Connector 2

Ähnliche Themen