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

xadoX

Sehr aktives Mitglied
11. September 2012
664
70
Hallo zusammen,
wir sind noch auf dem 4er Shop und nutzen dort das PayPal Plugin 116.
Wir bekommen seit dem 26.10.23 19:50 Uhr bei den PayPal Zahlunngen folgende Fehlermeldung nachdem der Kunde auf "Jetzt Kaufen" geklickt hat:

URL ist not a fully qualified URL

Der Kunde wird gegebeten die Zahlungsart zu ändern, obwohl die PayPal-Zahlung durchgegangen ist.
Das Problem besteht nur bei PayPal Plus. PayPal Express funktioniert weiterhin einwandfrei.

Ich konnte das Problem vorübergehend lösen in dem in der folgenden Datei die URL-Prüfung auskommentiert habe.

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

PHP:
<?php

namespace PayPal\Validation;

/**
 * Class UrlValidator
 *
 * @package PayPal\Validation
 */
class UrlValidator
{

    /**
     * Helper method for validating URLs that will be used by this API in any requests.
     *
     * @param      $url
     * @param string|null $urlName
     * @throws \InvalidArgumentException
     */
    public static function validate($url, $urlName = null)
    {
        if (filter_var($url, FILTER_VALIDATE_URL) === false) {
          /*  throw new \InvalidArgumentException("$urlName is not a fully qualified URL"); */
        }
    }
}
 
Zuletzt bearbeitet:

010-shop

Aktives Mitglied
1. September 2021
6
1
Wir haben das selbe Problem seit 26.10 Nachmittags.

JTL Wawi Version 1.5.38.2
JTL Shop Version 5.0.3
PayPal JTL 2.1.2
 

Matrix99

Aktives Mitglied
9. Dezember 2017
13
4
Ja in der Tat. Seltsam ist nur, dass JTL zufällig um diesen Zeitraum eine Änderung (25.10.2023 um ca. 20:00) am Helpdesk-System vorgenommen hat. Genau nach diesem Zeitraum tritt bei uns das Problem auf - bezieht sich jedoch ausschließlich auf Bestellungen, die mit PayPal bezahlt wurden.
 

frijk

Gut bekanntes Mitglied
16. Juni 2009
218
7
Hier auch das gleiche Problem beim (noch) 4er Shop. Zeitpunkt stimmt auch.

Update: Workaround von xadoX aus Beitrag 1 klappt hier auch.
 
Zuletzt bearbeitet:

wometo

Sehr aktives Mitglied
26. September 2015
122
33
Hallo zusammen,
wir sind noch auf dem 4er Shop und nutzen dort das PayPal Plugin 116.
Wir bekommen seit dem 26.10.23 19:50 Uhr bei den PayPal Zahlunngen folgende Fehlermeldung nachdem der Kunde auf "Jetzt Kaufen" geklickt hat:

URL ist not a fully qualified URL

Der Kunde wird gegebeten die Zahlungsart zu ändern, obwohl die PayPal-Zahlung durchgegangen ist.
Das Problem besteht nur bei PayPal Plus. PayPal Express funktioniert weiterhin einwandfrei.

Ich konnte das Problem vorübergehend lösen in dem in der folgenden Datei die URL-Prüfung auskommentiert habe.

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

PHP:
<?php

namespace PayPal\Validation;

/**
 * Class UrlValidator
 *
 * @package PayPal\Validation
 */
class UrlValidator
{

    /**
     * Helper method for validating URLs that will be used by this API in any requests.
     *
     * @param      $url
     * @param string|null $urlName
     * @throws \InvalidArgumentException
     */
    public static function validate($url, $urlName = null)
    {
        if (filter_var($url, FILTER_VALIDATE_URL) === false) {
          /*  throw new \InvalidArgumentException("$urlName is not a fully qualified URL"); */
        }
    }
}

Welcher URL wird nach dem Klick auf "Jetzt kaufen" durch diese Funktion geprüft?
Kann hier jemand weiterhelfen?
Habe deinen Workaround bei mir probiert und es funktioniert.... Danke!
 

Aze

Aktives Mitglied
17. September 2015
99
16
Guten Morgen,

danke das geht!

Wie komme ich jetzt an die fehlenden Bestellungen, habe weder eine Bestellbestätigung oder irgendwelche Daten im Shop gefunden....

Danke für eine Hilfe.



Gruß
 

Anarchnophobia

Gut bekanntes Mitglied
26. Oktober 2010
229
24
Leipzig
Bei uns das selbe Problem. Zahlungen sind auch eingegangen, Bestellungen nicht. Der Shop hat gar keine Bestellungen erfasst!

Leider hilft der Quickfix bei uns nicht, mit dem Klick auf "Zahlungspflichtig bestellen" kommt dann:
"Got Http response code 400 when accessing https://api.paypal.com/v1/payments/payment/PAYID-MU5CJKY7H645028BP351790Y/execute."

Grüße

aber immerhin wird dann keine Zahlung ausgeführt...
 

frijk

Gut bekanntes Mitglied
16. Juni 2009
218
7
Bei uns das selbe Problem. Zahlungen sind auch eingegangen, Bestellungen nicht. Der Shop hat gar keine Bestellungen erfasst!

Leider hilft der Quickfix bei uns nicht, mit dem Klick auf "Zahlungspflichtig bestellen" kommt dann:
"Got Http response code 400 when accessing https://api.paypal.com/v1/payments/payment/PAYID-MU5CJKY7H645028BP351790Y/execute."

Grüße
Hatte ich beim testen auch - da erkennt Paypal den Auftrag als "doppelt" - versuch mal eine neue Testbestellung mit anderen Artikeln, dann sollte es passen.
 

Anarchnophobia

Gut bekanntes Mitglied
26. Oktober 2010
229
24
Leipzig
Ja, chache gelöscht und dann nochmal mit neuen Artikel probiert. Dann kommt die Fehlermeldung zwar nicht mehr und es sieht alles "normal" aus - aber es wird auch keine Zahlung durchgeführt UND es geht auch keine Bestellung durch.
Es erscheint die Bestell-Abschlussseite und das wars dann :/
 

xadoX

Sehr aktives Mitglied
11. September 2012
664
70
Bei uns das selbe Problem. Zahlungen sind auch eingegangen, Bestellungen nicht. Der Shop hat gar keine Bestellungen erfasst!

Leider hilft der Quickfix bei uns nicht, mit dem Klick auf "Zahlungspflichtig bestellen" kommt dann:
"Got Http response code 400 when accessing https://api.paypal.com/v1/payments/payment/PAYID-MU5CJKY7H645028BP351790Y/execute."

Grüße
Diese Fehlermeldung kommt erst wenn der Kunder erneut versucht seine Bestellung abzuschließen. Die genaue Fehlermeldung im developer von PayPal lautet: "Duplicate invoice Id detected."
PayPal erkennt, dass zu dieser Bestellung die Zahlung schon durchgegangen ist und schmeißt dann diesen zweiten Fehler aus. Leert man den Cache, dann kann der Kunde die Bestellung erneut auslösen.
 

xadoX

Sehr aktives Mitglied
11. September 2012
664
70
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
 

Bicho

Aktives Mitglied
11. Juni 2018
19
1
Gibt es eine Möglichkeit die "unvollständigen" in die Wawi zu ziehen? Oder ist es ratsam die Auftrag per Hand einzutragen?
 

xadoX

Sehr aktives Mitglied
11. September 2012
664
70
Gibt es eine Möglichkeit die "unvollständigen" in die Wawi zu ziehen? Oder ist es ratsam die Auftrag per Hand einzutragen?
Wir haben sie jetzt manuell angelegt. Wichtig dabei finde ich, dass man die Shop-Bestellnr. als externe Bestellnummer mit angibt. Ich sehe nicht, dass die Bestellungen wie von Zauberhand doch noch irgendwie abgeglichen werden, da sie ja faktisch nicht vom Shop erstellt wurden.
 
  • Gefällt mir
Reaktionen: Bicho

Aze

Aktives Mitglied
17. September 2015
99
16
@xadoX wie komme ich denn an die Daten ran.
In der Bestellhistorie gibt es die Bestellungen nicht und ich habe keine Bestellbestätigungen zum manuellen einpflegen.

Danke für eine Hilfestellung.

Gruß
 

Anarchnophobia

Gut bekanntes Mitglied
26. Oktober 2010
229
24
Leipzig
Danke, jetzt gehts. Mit meinem eigenem Account blieb es irgendwie in der oberen Schleife, neuen Account angelegt, damit ging es dann. Und nun auch mit meinem eigenem wieder.
Lustig aber: EIN Kunde kam zwischendrin durch mit Paypal und Bestellung wurde auch erfasst. Es scheint also an Paypal (und nicht am Plugin / Shop selbst) zu liegen?
 

Anarchnophobia

Gut bekanntes Mitglied
26. Oktober 2010
229
24
Leipzig
Wir haben allen über Paypal direkt den Betrag zurückgesendet mit dem Hinweis, dass aufgrund einer technischen Störung die Bestellung/Zahlung nicht verarbeitet werden konnte, mit der Bitte diese neu auszulösen. Und sich dazu einmal aus- und wieder einzuloggen.
Machts einfacher, als manuell das alles wieder zu erfassen.