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
8.049
2.300
Berlin
Firma
css-umsetzung
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
359
16
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
8.049
2.300
Berlin
Firma
css-umsetzung
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
359
16
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
8.049
2.300
Berlin
Firma
css-umsetzung
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 JTLPOS PayPal Reader JTL-POS - Fehler und Bugs 0
Neu PayPal lehnt Zahlung ab, weil PLZ angeblich nicht beliefert wird User helfen Usern 2
Neu VeroPay Plugin? Kampfansage gegen PayPal? User helfen Usern 54
Neu Paypal Checkout nimmt neue CLIENT ID und SECRET nicht wahr User helfen Usern - Fragen zu JTL-Wawi 1
Neu Link zu Paypal Zahlungsaufforderung funktioniert nicht mehr User helfen Usern - Fragen zu JTL-Wawi 3
Neu PayPal-Meldung: XXX versendet nicht an diesen Ort. Verwenden Sie eine andere Adresse. Plugins für JTL-Shop 20
Neu Paypal Plugin JTL-Shop - Fehler und Bugs 1
Neu Paypal bei bestimmten Produkten nicht anbieten Plugins für JTL-Shop 1
Neu PayPal lädt nicht mehr nach Update auf 5.6 (Child theme Checkout index.tpl Bug) Installation / Updates von JTL-Shop 0
Neu PayPal-Plugin blockiert bei PayPal-Störung Checkout JTL-Shop - Fehler und Bugs 4
Neu Falsche Umsatzsteuer bei Paypal-Checkout Bestellungen im Webshop JTL-Shop - Fehler und Bugs 3
Neu Paypal: Erweiterte Kreditkartenzahlung geht nicht JTL-Shop - Fehler und Bugs 20
Paypal-Zahlungen doppelt > keine automatische Zuweisung JTL-Wawi 1.10 0
Neu PayPal Checkout Plugin (iPhone), Probleme mit PayPal-App Plugins für JTL-Shop 0
Zahlungsabgleich Paypal Express Ausgänge JTL-Wawi 1.10 3
Neu JTL PayPal Plugin - keine Einstellmöglichkeiten, keine Anzeige im Frontend Plugins für JTL-Shop 2
Neu Nach Update auf PayPal 2.1.0 doppelte Zahlungsarten und Ratepay Plugin erforderlich Plugins für JTL-Shop 0
Neu Paypal Zahlung erfolgreich, Auftrag mit Status Neu im Shop und fehlt in WAWI JTL-Shop - Fehler und Bugs 4
Neu Paypal: Klappt bei euch die erweiterte Kreditkartenzahlung? Plugins für JTL-Shop 9
WMS - Fehlermeldung: Bitte wählen Sie zuerst eine Verandart - Verpacken JTL-Wawi 1.11 1
Probleme Fehlermeldung bei Zahlungsabgleich JTL-Wawi 1.10 10
Kein e-Mail Versand aus der Wawi - Fehlermeldung JTL-Wawi 1.11 18
Neu Fehlermeldung 'quantity' bei Vaterartikel Amazon-Lister - Fehler und Bugs 1
Neu Lister 2.0 Fehlermeldung "The provided payload is invalid" Amazon-Lister - Fehler und Bugs 2
Ticket erstellen bei einer Fehlermeldung mit JTL-Start ??? JTL-Wawi 1.9 6
Neu Fehlermeldung bei Rechnungserstellung Arbeitsabläufe in JTL-Wawi 0
Fehlermeldung beim Update JTL-Wawi 1.11 4
Neu Fehlermeldung seit dem neuesten Update 5.6.0 Installation / Updates von JTL-Shop 5
Neu DATEV Rechnungsdatenservice 2.0 Fehlermeldung bei der Übertragung Schnittstellen Import / Export 5
Neu Heute wied kein Versand bei Amazon bestätigt und manueller Abgleich gibt Fehlermeldung aus Amazon-Anbindung - Fehler und Bugs 1
Neu GLS Fehlermeldung Time Out JTL-ShippingLabels - Fehler und Bugs 1
JTL Zahlungsabgleich Fehlermeldung bei Versuch Lieferantenrechnung zu bezahlen JTL-Wawi 1.10 4
Neu Temu-Anbindung mit JTL / Fehlermeldung beim Hochladen Onlineshop-Anbindung 1
Neu Fehlermeldung: Der angegebene Wert für "purchasable_offer" ist ungültig. | Fehlercode(s): (4000001) Amazon-Anbindung - Fehler und Bugs 11
Neu Abgleich WooCommerce / JTL mit dem Connector – Fehlermeldung WooCommerce-Connector 0
Neu Fehlermeldung beim Überarbeiten der Daten unter Artikel Verkaufsplattform LLister Amazon-Lister - Fehler und Bugs 2
Worker Retouren Fehlermeldung "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt." JTL-Wawi 1.9 0
Neu Fehlermeldung Amazon Lister 2.0 Amazon-Lister - Fehler und Bugs 1
Neu Logbuch Fehlermeldung Caught exception: Invalid token. Betrieb / Pflege von JTL-Shop 3
Neu Plugin Manager Fehlermeldung JTL-Shop - Fehler und Bugs 4
Neu SEO URL für den Blog Allgemeine Fragen zu JTL-Shop 2
Neu URL Weiterleitungen / SEO URLs nach Umzug User helfen Usern - Fragen zu JTL-Wawi 0
Neu Googel Weitereitung im Shop URL User helfen Usern 1
Url vom Shop korrekt setzten (index.html) Einrichtung JTL-Shop5 16
Neu 404 Error DHL beim erstmaligen Aufruf der Tracking URL JTL-Wawi - Fehler und Bugs 0
Neu Falsche URL in Exportformat CSV Schnittstellen Import / Export 4

Ähnliche Themen