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

logics

Aktives Mitglied
16. Juli 2021
23
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.287
1.989
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.287
1.989
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
23
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.287
1.989
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
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
1.9.6.5 Paypal Zahlungsabgleich Warnung T1501 und T0400 JTL-Wawi 1.9 1
Neu Probleme mit paypal / ZAhlung als nicht autorisiert zurückgewiesen JTL-Shop - Fehler und Bugs 6
Neu Warnung bei Paypal Plugin Plugins für JTL-Shop 4
Neu PayPal Anbindung Zahlungsmodul 1.9.6.5 User helfen Usern - Fragen zu JTL-Wawi 7
Neu Zahlung Kreditkarte nicht möglich (Paypal Plugin) JTL-Shop - Fehler und Bugs 5
Neu [Entwarnung] ACHTUNG: JTL Shop 5.3.3 | Nach Update des JTL PayPal Commerce Plugins kein Backend mehr verfügbar (FATAL ERROR) Installation / Updates von JTL-Shop 2
paypal zahlunbgsabgleich bringt fehler JTL-Wawi 1.9 0
Nach Umstieg auf V5 Paypal express weg. Einrichtung JTL-Shop5 5
Neu Erstattungen per Paypal bei Stornierungen wird öfter nicht ausgezahlt Arbeitsabläufe in JTL-Wawi 0
Neu Probleme mit PayPal-Plugin: Bestellungen "pending" & doppelte Zahlungen nach Direktzahlung Plugins für JTL-Shop 0
Neu Neueste Version Paypal Checkout: Rechnungskauf mit Ratepay und Paypal-Kreditkarte sind nicht verfügbar. Plugins für JTL-Shop 21
Paypal Alternativen JTL-Wawi 1.9 4
HILFEEE!!!! Paypal Problem JTL-Wawi 1.9 12
Neu QR Code auf Rechnung bei PayPal fehlerhaft User helfen Usern - Fragen zu JTL-Wawi 0
Wawi 1.9.5.0 Zahlungsmodul Paypal Fehler + Bankkonto Fehler JTL-Wawi 1.9 30
Neu Shopify Connector Fehlermeldung 422 Shopify-Connector 0
Neu Hersteller anlegen Fehlermeldung JTL-Wawi - Fehler und Bugs 18
Neu Fehlermeldung im Shop Backend: fetch clientToken failed: VALIDATION_ERROR JTL-Shop - Fehler und Bugs 1
Wawi (alte Version) kann nicht mehr geöffnet werden, Fehlermeldung JTL-Wawi 1.9 4
In Bearbeitung Fehlermeldung auf dem Kassenbon Allgemeine Fragen zu JTL-POS 1
Neu Artikelimport bricht mit Fehlermeldung ab JTL-Ameise - Fehler und Bugs 8
Neu Versanddaten nicht übermittelt. Fehlermeldung in der Spalte Status Versand/Zahlung eBay-Anbindung - Fehler und Bugs 3
Gelöst Fehlermeldung Shop-Datenbank UTF-8-Kollation Installation / Updates von JTL-Shop 1
Fehlermeldung nach Bildupdate,-löschen,-ändern Shopware-Connector 1
Neu Fehlermeldung im Logbuch Betrieb / Pflege von JTL-Shop 3
Neu Fehlermeldung: LOADING KeyDB is loading the dataset in memory Shopify-Connector 44
Neu Fehlermeldung nach Shop-Update Installation / Updates von JTL-Shop 2
Neu Fehlermeldung: Fehler bei der Kommunikation mit dem eA-Server eBay-Anbindung - Fehler und Bugs 3
Neu [Liquid Error: Ein Aufrufziel hat einen Ausnahmefehler verursacht] Fehlermeldung in meiner Designvorlage auf Ebay eBay-Designvorlagen - Fehler und Bugs 0
Neu Meta, Facebook Datenfeed Export-URL gibt Formatfehler Betrieb / Pflege von JTL-Shop 0

Ähnliche Themen