Eigener, selbst programmierter Connector

hwxDev

Aktives Mitglied
30. August 2016
1
0
Hallo,

ich arbeite ebenfalls an einem eigenen Connector, der die Kommunikation mit einem internen Verwaltungsmodul übernehmen soll. Die Entwicklung basiert auf dem Beispiel-Connector aus dem JTL-Repository.
Für die Tests habe ich vom Support schnell und unkompliziert eine JTL-Connector Entwicklung-Lizenz erhalten, die nicht an eine Domain gebunden ist.

Bei Einrichtung des Kommunikation zwischen der JTL-Wawi und dem eigenen Connector wird zunächst die Verbindung aufgebaut und das Passwort aus dem TokenLoader verifiziert. Dann aber meldet die JTL-Wawi "Keine gültige Lizenz für den Shoptyp '' vorhanden".
Im Kundencenter enthält das Feld "Typ" der Entwicklung-Lizenz keinen Wert, daher habe ich über die Methode ConnectorIdentification::setPlatformName() keinen Namen definiert.
Die Versuche mit unterschiedlichen Shopnamen scheitern ebenfalls. Welche Typ-Bezeichnung muss ich in diesem Fall verwenden?

Ich wäre für einen Tipp wirklich dankbar.
Viele Grüße
Adrian
 

Rolf

Aktives Mitglied
17. September 2015
28
0
Ähm... gute Frage. Ich nutze eine Standard-Lizenz für Shopware und sage dem Connector, er soll sich als Shopware ausgeben. Keine Ahnung, wie das mit Entwickler-Lizenzen aussieht. Bisher kannte ich die nichtmal *g*

Ich hätte noch eine weitere kleine Frage. Diesmal etwas einfacher, denke ich:
Kann man eigentlich geänderte Kundendaten auch vom Shop an die Wawi übertragen? Bei mir wird immer nur ein neuer Kunde angelegt.

Konkretes Beispiel: Es gibt einen Kunden - nennen wir ihn mal "Max Muster". Wenn Max Muster eine Bestellung durchführt, wird er anhand der ID 55 von der Wawi erkannt.
Jetzt ändert Max Muster über die Kontoverwaltung im Shop seine Telefonnummer. Der Shop markiert daraufhin in der Datenbank, dass dieser Datensatz an die Wawi geschickt werden muss, damit die Kundendaten synchron bleiben.
Der Connector holt sich also die Daten aus der Datenbank, setzt als Wawi-ID die 55 und gibt das an die Wawi weiter. Das Ergebnis ist dann nicht, dass der vorhandene Kunde in der Wawi aktualisiert wurde, sondern dass ein zweiter Kunde mit den neuen Daten angelegt wurde.
Wenn man dann aber dafür sorgt, dass die beiden Kunden wiederum an den Shop übertragen werden, steht bei beiden Kunden die Wawi-interne ID 55 drin.

Ein wenig technischer: wenn man in die Datenbank der Wawi reinschaut, sieht man die beiden Datensätze jeweils mit dem Wert 55 in der Spalte "kInetKunde".
Sehe ich das richtig, dass das eine weitere Funktion ist, die dem JTL-Shop vorbehalten ist?
 

Rolf

Aktives Mitglied
17. September 2015
28
0
Ah, verstehe. Diese Tabelle hatte ich bisher übersehen gehabt.
Seltsamerweise findet sich da aber kein Eintrag mit der gesuchten ID. Und zu wenig Einträge sind da auch drin.
In der Tabelle tKunde gibt es über 2000 Einträge, die einen Eintrag in der Spalte kInetKunde haben. In der Tabelle tInetKunde sind dagegen nur 200 Einträge...

Aber so genau muss ich die Hintergründe ja auch nicht unbedingt kennen. Mich würde nur interessieren, ob es möglich ist, über den Connector Kundendaten zu aktualisieren. Oder ob das überhaupt sinnvoll wäre.
 

Rolf

Aktives Mitglied
17. September 2015
28
0
Eine weitere Frage hätte ich noch, die vielleicht auch andere interessieren könnte: gibt es eigentlich irgendwo eine komplette Übersicht, welche Daten man alles über den Connector an die WAWI übergeben kann und unter welchem Keyword?
Und welche Einstellungen und Flags in der features.json welche Auswirkungen haben?

Hintergrund: Ich wäre gerne in der Lage, die Anmerkungen, die Kunden mit der Bestellung übergeben, in das Feld "Sonstiges" statt in "Anmerkung" zu schreiben. Aber eine API-Beschreibung konnte ich bisher nirgends finden.
 

Rolf

Aktives Mitglied
17. September 2015
28
0
Ok, es scheint nicht zu gehen. Ist auch nicht weiter tragisch.

Gerade eben bin ich noch über eine Kleinigkeit gestolpert. Es geht darum, Kunden von der Wawi aus im Shop zu aktualisieren.
Da ich ja meinen Connector selbst geschrieben habe und nicht auf dem Template aufgesetzt habe, den die vorgefertigten Connectoren benutzen, musste ich mich schon recht intensiv mit den Daten auseinandersetzen, die die Wawi per POST-Daten an den Connector schickt. Und konnte mich allgemein darauf verlassen, dass IDs immer in folgender Form geliefert werden:
["Shop-ID", Wawi-ID]

Wenn eins von beiden "0" ist, kann ich in einer Mapping-Tabelle suchen, ob der andere Wert bereits bekannt ist. Z. B. um bei einem Kunden, der von der Wawi an den Shop geschickt wird, zu prüfen, ob ein neuer Kunde angelegt oder ein bestehender Kunde aktualisiert werden soll.

Gestolpert bin ich über die Daten, wenn man in der Wawi einen Kunden per Doppelklick bearbeitet und dann auf den Button "In allen Webshops aktualisieren" klickt.
Der zu aktualisierende Kunde hat in der Wawi-Datenbank die ID 160, im Shop die ID 125. Die Wawi schickt als ID:
["", 125]
Nach Standardlogik müsste ich also davon ausgehen, dass der Kunde in der Wawi die ID 125 hat und der Connector aus der Mapping-Tabelle die entsprechende Shop-ID holen soll. Und das sorgt dann dafür, dass ein anderer Kunde überschrieben wird.

Habe ich da einen Bug gefunden oder einfach nur wieder etwas offensichtliches übersehen?
 

Rolf

Aktives Mitglied
17. September 2015
28
0
Schade, wieder keiner. Naja, egal, damit kann man klarkommen.
Dann mal etwas, was mir vielleicht jemand beantworten kann: ist es möglich, nachträglich eine Bestellung in der Wawi auf bezahlt zu setzen? Antwortet gerne auch kurz, wenn ihr wisst, ob das mit dem Connector möglich ist, den ihr gerade benutzt. Dann kann ich zumindest schonmal ein paar Anhaltspunkte dazu sammeln.

Für die Interessierten, folgendes Szenario:
Ein Kunde bestellt etwas im Shop und bezahlt per Klarna. Klarna führt daraufhin eine Risikobewertung für den Kunden durch und antwortet dem Server dann mit dem Status "akzeptiert", "abgelehnt" oder "pending", also Prüfung ausstehend.
Wenn der Status jetzt "pending" ist, möchte man vielleicht trotzdem, dass die Bestellung von der Wawi abgeholt werden kann, allerdings als "nicht bezahlt" markiert. Und wenn später Klarna dann mit der Prüfung durch ist und den Status "akzeptiert" zurückgibt, soll die Bestellung als "bezahlt" markiert und erneut abgeholt werden, damit in der Wawi die Bezahlung gesetzt werden kann.

Technischer ausgedrückt: Bei dem nächsten Shopabgleich wird die Bestellung erneut übertragen, mit "paymentStatus: completed" und gesetztem "paymentDate". Die Wawi erkennt korrekt, dass die Bestellung bereits vorhanden ist und entsprechend zusammengeführt werden muss. Allerdings wird die Bezahlung dabei nicht gesetzt. Bei "Offener Wert" steht immer noch der alte Wert und die "Zahlungen"-Liste bleibt leer.
Wenn man aber eine neue Bestellung abholt, die bereits als "Bezahlt" markiert wurde, dann funktioniert alles, wie es soll. Es liegt also nicht an den Daten, die vom Connector an die Wawi geschickt werden.
In der features-Liste steht auch bei allem, was mit "CustomerOrder" oder "Payment" zu tun hat, "pull: true".

Könnt ihr mir hier weiterhelfen? Oder weiß vielleicht jemand, wo ich mehr dazu herausfinden kann oder welcher Connector das sogar kann, damit ich da mal reinschauen kann?
Ich bin für jede Antwort dankbar.