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

logics

Aktives Mitglied
16. Juli 2021
13
1
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
6.701
1.612
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: dezain

Buinger

Gut bekanntes Mitglied
30. April 2009
314
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
6.701
1.612
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
13
1
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
314
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
6.701
1.612
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
18
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 JTL PayPal: Plugin - Bestellungen werden nicht angezeigt. Fehlermeldung "Unable to load config 'file:.conf'" Plugins für JTL-Shop 2
Neu JTL Paypal Checkout Button bei Konfigurationsartikel verhindern Plugins für JTL-Shop 3
Neu PayPal Checkout: Verständnisfrage Plugins für JTL-Shop 0
Neu Paypal express Kauf nimmt Versandart Abholung (kostenlos) Plugins für JTL-Shop 0
Neu Paypal Plugin Version 1.2.0 läuft und 1.4.0. läuft nicht auf derselben Umgebung Plugins für JTL-Shop 0
Ich habe auf NOVA umgestellt aber PayPal funktioniert nicht Einrichtung JTL-Shop5 1
Neu Änderung des Auftrags nach Zahlungseingang Paypal Arbeitsabläufe in JTL-Wawi 7
Neu PayPal Checkout: Kunden verwirrt wegen Zahlungsart Name Plugins für JTL-Shop 0
Neu Erledigt - Plugin PayPal Checkout, Update auf 1.4.0, Komplettabsturz Plugins für JTL-Shop 1
Neu Paypal Gebühren neue AGB Allgemeine Fragen zu JTL-Shop 1
Neu PayPal Checkout mit Apple Pay und Google Pay Plugins für JTL-Shop 2
Neu JTL-Shop 5 Paypal Zahlung 30 Tage Zahlungsziel Allgemeine Fragen zu JTL-Shop 6
Neu Paypal Plugin erzeugt "Quirks Mode" Betrieb / Pflege von JTL-Shop 0
Neu PayPal Checkout - Bestellungen werden nicht übertragen! User helfen Usern - Fragen zu JTL-Wawi 1
Neu PayPal Checkout 1.3.0 Log Notice Mindestbestellwert Plugins für JTL-Shop 1
Neu PayPal Checkout - Beschreibung der Kaufdetails Plugins für JTL-Shop 0
PayPal - Consent-Manager Einrichtung JTL-Shop5 0
PayPal Checkout Personalisieren Einrichtung JTL-Shop5 6
Fehlermeldung bei JTL-Connector/JTL-Wawi WooCommerce-Connector 1
Neu Fehlermeldung "Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt" JTL-Wawi - Fehler und Bugs 2
Neu Nach Fehlermeldung erneut Versenden Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 2
Neu Was steckt hinter der Zahl von 53 Bildern auf Ebay bei Variationsartikeln (und einer unsinnigen Fehlermeldung der Wawi)? JTL-Wawi - Fehler und Bugs 2
Neu Fehlermeldung nach Bestellabschluss durch Plugin Gelöste Themen in diesem Bereich 7
Neu Fehlermeldung 1101 JTL-ShippingLabels - Fehler und Bugs 1
Neu Versandschein für Schweiz kann nicht gedruckt werden folgende Fehlermeldung JTL-ShippingLabels - Fehler und Bugs 1
Neu fehlermeldung update 1.5 > 1.7 Installation von JTL-Wawi 1
Login Failed Fehlermeldung JTL-Wawi 1.7 1
Bilder Upload und Fehlermeldung WooCommerce-Connector 0
Fehlermeldung nach Speichern vom Auftrag in der Wawi JTL-Wawi 1.6 5
Neu JTL Connector Plugin Aktivierunf [Fehlermeldung] WooCommerce-Connector 3
Neu Fehlermeldung bei Installation (Warning: Cannot declare class Event, because the name is already in use ) Installation / Updates von JTL-Shop 0
Fehlermeldung in der Suche Einrichtung JTL-Shop5 0
Neu Fehlermeldung Allgemeine Fragen zu JTL-Shop 0
Neu Die Shop-URL verweist nicht auf einen gültigen Shop! Shopify-Connector 1
2 JTL-Shops = unterschiedlicher SEO-URL-Stamm nötig JTL-Wawi 1.8 5
Neu SEO URL der Kategorien wird nicht an Shopware 6 übertragen Shopware-Connector 0
Neu URL einer Unterkategorie weiterleiten Allgemeine Fragen zu JTL-Shop 3
Neu Woocommerce mit JTL Connector "Die Shop-URL verweist nicht auf einen gültigen Shop" WooCommerce-Connector 4
Neu Suche Seite 2 gibt falsche URL aus JTL-Shop - Fehler und Bugs 4
Neu Artikel - Sprachen - Alle eigene SEO URL? Smalltalk 1
Neu URL ändern Allgemeine Fragen zu JTL-Shop 2

Ähnliche Themen