Neu Beispiel Connector

Immanuel

Moderator
Mitarbeiter
24. August 2016
454
77
Hallo liebe Community,

wir haben vor nicht allzu langer Zeit alle Connector Git Repositories zu GitHub umgezogen. Dabei haben wir den Beispiel Connector etwas überarbeitet und ihn bei packagist.org hinzugefügt (jtl/connector-example), sodass er einfach per composer installiert werden kann.

Der Beispiel Connector kann als Orientierung für die Entwicklung eines eigenen Connectors verwendet werden.

Wir freuen uns über aktive Beteiligung der Community zur Verbesserung des Beispiel Connectors. Das kann direkt über das Forum als auch über Issues oder Pull Requests auf GitHub erfolgen.
 
  • Gefällt mir
Reaktionen: Benjamin Schaffrath

s.heilmeier

Neues Mitglied
14. Oktober 2019
9
0
Hallo,
ich habe mich etwas mit dem Connector beschäftigt um eine eigene Integration zu entwickeln.

Mit dem Connector Test, bekomme ich auch Daten und bin in der Annahme, das es richtig sein muss.

Wenn ich jedoch mit JTL mit einem Connector kommunizieren will.

greift er zuerst auf /jtlconnector/dbeS/mytest.php zu und dann erst auf /jtlconnector.
Keine der Connector Integratioen verarbeitet diese Anfrage und im beispiel von Woocommerce, wird einfach ein 404 ausgeliefert und es geht weiter.

In meinem Fall habe ich 404 204 301 getestet, jedoch ohne erfolg.
Auch habe ich den Example-Connector getestet.
In JTL sagt er jedes mal "Synchronisation mit Webshop nicht möglich!"

Ich freue mich auf die Lösung :)
 

Immanuel

Moderator
Mitarbeiter
24. August 2016
454
77
Hallo @s.heilmeier,

hast du eine Drittanbieter Lizenz für deine Domain im Kundencenter angelegt und endet die in der Wawi angegebene Onlineshop-URL auf /jtlconnector?
 

s.heilmeier

Neues Mitglied
14. Oktober 2019
9
0
Danke, für die schnelle Rückmeldung.

Ich habe eine Lizenz für Drittanbieter erstellt und die Webshop-URL hinterlegt.

Den Lizenzschlüssel habe ich in JTL eingetragen.

Und mein PHP-Script reagiert auf die Aufrufe von /jtlconnector
 

Immanuel

Moderator
Mitarbeiter
24. August 2016
454
77
Hmmm. Was hast du innerhalb der identify Action im ConnectorIdentification Objekt für einen "platformName" und eine "platformVersion" gesetzt?
 

s.heilmeier

Neues Mitglied
14. Oktober 2019
9
0
Habe das aus dem Beispiel verwendet, da nicht anders beschreiben.
PHP:
<?hpp
    /**
    * Identify
     *
     * @return \jtl\Connector\Result\Action
     */
    public function identify()
    {
        $action = new Action();
        $action->setHandled(true);

        $returnBytes = function($value) {
            $value = trim($value);
            $unit = strtolower($value[strlen($value) - 1]);
            switch ($unit) {
                case 'g':
                    $value *= 1024;
                case 'm':
                    $value *= 1024;
                case 'k':
                    $value *= 1024;
            }

            return $value;
        };

        $serverInfo = new ConnectorServerInfo();
        $serverInfo->setMemoryLimit($returnBytes(ini_get('memory_limit')))
            ->setExecutionTime((int) ini_get('max_execution_time'))
            ->setPostMaxSize($returnBytes(ini_get('post_max_size')))
            ->setUploadMaxFilesize($returnBytes(ini_get('upload_max_filesize')));

        $identification = new ConnectorIdentification();
        $identification->setEndpointVersion('1.0.0')
            //Bulk platform is the license for third party connectors
            ->setPlatformName('Bulk')
            //Do not set platformVersion for Bulk platform
            //->setPlatformVersion('1.0')
            ->setProtocolVersion(Application()->getProtocolVersion())
            ->setServerInfo($serverInfo);

        $action->setResult($identification);

        return $action;
    }
 

Immanuel

Moderator
Mitarbeiter
24. August 2016
454
77
Das sieht nach standard Beispiel Connector aus, sollte funktionieren.

Endet die die Onlineshop-URL in der Connector Konfiguration in der Wawi auf /jtlconnector?
 

s.heilmeier

Neues Mitglied
14. Oktober 2019
9
0
Das sind die beiden Requests welche ausgeführt werden.
Code:
93.254.206.223 - - [14/Oct/2019:15:55:42 +0200] "POST /jtlconnector/dbeS/mytest.php HTTP/1.0" 404 359 "-" "JTL-Wawi"
93.254.206.223 - - [14/Oct/2019:15:55:42 +0200] "POST /jtlconnector HTTP/1.0" 200 768 "-" "-"
Was mich wundert, ist das diese auch abgesetzt werden, wenn ich den Woocommerce- Connector nutze.
Der große Unterschied ist, das in meinem Fall er den ersten Request "ausgibt" und im falle von Wocommerce er mit dem zweiten Request arbeitet.


Hier die Standard-Ausgabe wenn ich meinen Connector im web aufrufe.
JSON:
{
  "result": null,
  "error": {
    "code": -32600,
    "message": "Invalid Request",
    "data": "Exception 'jtl\\Connector\\Core\\Exception\\RpcException' (Code: -32600) with message 'Invalid Request' in /var/www/vhosts/xxx/httpdocs/vendor/jtl/connector/src/Core/Rpc/RequestPacket.php:173"
  },
  "jtlrpc": "2.0",
  "id": "unknown"
}

Wenn ich einen POST-Request an meinen Connector schicke mit dem Parameter jtlrpc:
JSON:
{"method":"core.connector.auth","params":{"token":"xxx"},"jtlrpc":"2.0","id":"5da09141d18b2"}
Bekomme Ich eine sessionID.

Es fühlt sich für mich so an, das er bei dbes/mytest.php etwas erwartet, so dass er den "eigentlichen" Connector aufruft und sich authentifiziert.
 

s.heilmeier

Neues Mitglied
14. Oktober 2019
9
0
Was mich verwundet, dass selbst der Beispiel Connector den gleichen Fehler wirft.
Ggf. ist das wichitg, meine JTL- Wawi ist auf der Version 1.4.34.0
 

Über uns

  • In unserem moderierten JTL-Forum könnt Ihr Euch themenbezogen mit der JTL-Community rund um die Produkte von JTL, passende Erweiterungen und den E-Commerce im Allgemeinen austauschen, Tipps und Tricks teilen sowie Verbesserungswünsche und Fehler diskutieren.

    Unsere Forumsnutzer helfen sich untereinander auch gerne weiter, wenn Sie mal nicht weiterkommen oder einen Ratschlag benötigen.

Schnell-Navigation

Benutzer Menü