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.448
2.573
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
17
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.448
2.573
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
17
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.448
2.573
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 Lieferadresse in PayPal-Transaktion weicht von der in der Wawi ab Plugins für JTL-Shop 0
Neu Paypal Checkout Modul für Gambio bis GX 26.x Gambio-Connector 0
Neu Installation von Plugin PayPal Check-Out fehlgeschlagen, keine Verbindung zum Webshop Plugins für JTL-Shop 6
Neu Beim Versuch Paypal-Plugin mit Paypal-Konto zu verbinden Shop nicht mehr erreichbar Plugins für JTL-Shop 2
Neu Kunde zahlt zuviel mit PayPal Plugins für JTL-Shop 0
Neu Paypal Checkout Plugin - Ist vorhanden aber nichts funktioniert Plugins für JTL-Shop 9
Neu DHL - Fehlermeldung: Request processing failure JTL-ShippingLabels - Fehler und Bugs 23
Hersteller anlegen bringt immer Fehlermeldung JTL-Wawi 1.11 10
Neu Angebot Status "Fehlerhaft" aber keine Fehlermeldung Amazon-Lister - Fehler und Bugs 0
Fehlermeldung beim Anlegen einer zweiten JTL POS Kasse in JTL-Wawi JTL-Wawi 1.11 1
(gelöst) Ecomdata - JTL Worker 2.0 - Startet nicht - Schließt ohne Fehlermeldung JTL-Wawi 2.0 8
Neu Fehlermeldung eBay Bestellung Einrichtung und Installation von JTL-eazyAuction 0
Neu Fehlermeldung nach der Umstellung von DHL Versenden 4.0 JTL-Track&Trace - Fehler und Bugs 7
Neu JTL Shop 5 Sync in JTL WAWI 2.0.0 zeigt Verbindungstest Fehlermeldung Onlineshop-Anbindung 4
Neu Artikelpreis auf Anfrage Fehlermeldung Allgemeine Fragen zu JTL-Shop 0
Neu Connector bleibt am Anfang stehen / Fehlermeldung Abbruch Shopify-Connector 3
Neu Fehlermeldung bei Farbänderung im Nova oder Nova Child Theme Templates für JTL-Shop 2
Neu Fehlermeldung Steuersätze sind nicht im Shop Schnittstellen Import / Export 0
Neu Shopify Connector Fehlermeldung bei Kategoriebildern Shopify-Connector 6
Neu Neue Tracking-URL für DPD JTL-ShippingLabels - Fehler und Bugs 4
Neu Komma aus Produktbezeichnung soll als Bindestrich in der URL sein Allgemeine Fragen zu JTL-Shop 1

Ähnliche Themen