Gelöst no session Exception für Verbindungstest

  • Wenn Ihr uns das erste Mal besucht, lest euch bitte zuerst die Foren-Regeln durch.

sodiummd

Aktives Mitglied
30. Januar 2010
88
1
#1
JTL 1.4.19.0
Connector: clone > master branch
Connector Tester: 1.0.4.9 (gibt es hierzu bereits eine aktualisierte Version?)

Für unseren Shop bauen wir einen individuellen Connector.
Aufruf Reihenfolge über Connector Tester:
1. method: core.connector.auth (session id wird erstellt)
2. method: connector.identify
Alles funktioniert, wie es soll.

Aufruf Reihenfolge über JTL (Funktion: Verbindung testen / Lizenz aktivieren)
1. mytest.php > liefert 404 zurück
2. method: connector.identify (liefert Exception, da keine Session vorhanden)
Verbindungstest fehlerhaft
Fehlermeldung: Synchronisation mit Webshop nicht möglich! Die Shop-URL verweist nicht auf einen gültigen Shop! Bitte prüfen Sie die Connector-Konfiguration.

Ich habe folgende Vermutung:
Der erste Aufruf der mytest.php ist der Test für den JTL-Shop, ist das File nicht vorhanden, erwartet die WaWi eine bestimmte Rückmeldung, um in einer weiteren Abfrage die Methode: core.connector.auth aufzurufen. Ich würde behaupten, dass das falsche Feedback zur Wawi geschickt wird, aber was erwartet die WaWi als Feedback? Oder liege ich ggf. komplett falsch?!
Bin für Anregungen recht dankbar!
 

Rico Giesler

Administrator
Mitarbeiter
10. Mai 2017
8.834
789
#3
Bist du so gut und teilst den anderen Usern noch mit woran es lag?
Eventuell hat ja jemand anderes auch mal einen solchen Fall.
 

sodiummd

Aktives Mitglied
30. Januar 2010
88
1
#4
Glaube ich zwar nicht, aber gerne ;)

Die Exception wurde bis zu dem Zeitpunkt nur als Exception geloggt, nicht jedoch in das Response Objekt übergeben. Lag also an der unvollständigen Implementierung. Habe quick & dirty den Exception Prozess aus dem ShopWare Connector übernommen, läuft ;) Muss natürlich nochmal kräftig aufgeräumt und an die Magento 2 Anforderungen angepasst werden... Aber zum Testen reichts...

PHP:
} catch (\Exception $exception) {
    #throw new LocalizedException(__($exception->getMessage()));
    
       $trace = $exception->getTrace();
    if (isset($trace[0]['args'][0])) {
        $requestpacket = $trace[0]['args'][0];
    }

    $error = new Error();
    $error->setCode($exception->getCode())
        ->setData("Exception: " . substr(strrchr(get_class($exception), "\\"), 1) . " - File: {$exception->getFile()} - Line: {$exception->getLine()}")
        ->setMessage($exception->getMessage().PHP_EOL.$exception->getTraceAsString());

    $responsepacket = new ResponsePacket();
    $responsepacket->setError($error)
        ->setJtlrpc("2.0");

    if (isset($requestpacket) && $requestpacket !== null && is_object($requestpacket) && get_class($requestpacket) == "jtl\\Core\\Rpc\\RequestPacket") {
        $responsepacket->setId($requestpacket->getId());
    }

    return Response::send($responsepacket);
}
 
Zustimmungen: Rico Giesler