Woocommerce Connect...
 
Benachrichtigungen
Alles entfernen

Woocommerce Connector

125 Beiträge
17 Benutzer
3 Reactions
16.4 K Aufrufe
(@mdino)
Active Member
Beigetreten: vor 9 Jahren
Beiträge: 10
Topic starter   [#2585]

Guten Morgen,

ich betreue eine Fakturama Installation mit Anbindung an den Woocommerce Webshop. Auf meinen Rat haben wir kürzlich Fakturama von Version 1.6.9c auf 2.0.5 aktualisiert. Nachdem schon neue Daten in Fakturama eingegeben waren, stellte sich heraus, dass die Anbindung an den Webshop nicht mehr funktioniert. Da ein Rollback auf die alte Version erst einmal keine Option war, habe ich mich mit dem Neos Connector befasst, da der Connector leider nicht mehr weiterentwickelt wird.
Ich habe nun einige Änderungen durchgeführt und mit meiner lokalen Installation von Wordpress/Woocommerce (auf XAMPP) hat der Import von Testdaten geklappt.

Ich habe eine Zip-Datei mit der Version 0.0.15 erstellt, die sich in Wordpress als Plugin installieren lassen sollte. Die Datei könnt Ihr unter dem folgenden Link herunterladen.

neos-connector-for-fakturama.0.0.15.zip (URL verfügbar bis 12.4.2020)

Ich kann allerdings keine Gewähr übernehmen, da ich es nicht ausreichend testen konnte und ich mit PHP nicht auskenne. Meine einfachen Testdaten enthielten nur ein Produkt und eine Bestellung. Bitte testet es bei Bedarf selbst und fügt bei Bedarf weitere Änderungen hinzu.

Installation: Den aktuellen Neos Connector deaktivieren und anschließend löschen (die alte Version kann bei Bedarf wieder aus Wordpress heraus installiert werden, wenn die neue Version deaktiviert/gelöscht wurde). Dann über Plugin Installation aus der heruntergeladenen Zip-Datei installieren.

Hintergrundinformationen:

Mit der Connector Version 0.0.14 scheiterte der Webshop Import in Fakturama 2 mit der Fehlermeldung "unerwartetes element".

Ich habe dann etwas Reverse Engineering betrieben und zunächst über einen Netzwerktrace den Aufruf in Richtung Woocommerce mitgeschnitten. Danach konnte ich die Fakturama Anfrage mit dem folgenden Kommando unter Linux simulieren und meine Änderungen testen:

$ curl --data "username=&password=&action=get_products_orders&setstate={}&maxproducts=1000" /wordpress/wp-admin/admin-ajax.php?do=fakturama

Der Grund dafür, dass der Import bereits am Beginn scheitert und dadurch keine wirklich aussagekräftige Fehlermeldung im Log steht, scheint der Wert "1.6" für das XML-Tag zu sein. Hier habe ich jetzt den Wert "2.0" verwendet. (anscheinend für die Fakturama Version)
Zum Vergleich habe ich auch die Version 2.0 des modified Connectors von moped herangezogen. Deshalb habe ich das Tag xmlns neu hinzugefügt.

Dadurch beginnt der Header der XML-Antwort nun so:

7.4.25.4.3

Durch diese Änderung startete nun der Import, erzeugte aber die nächste Fehlermeldung. Diesmal stand aber schon mal die ganze XML-Antwort im Fakturama Logfile. Die Fehlermeldung brachte mich dann zum Fakturama Source code im Modul WebShopDataImporter.java Zeil 973 -> "Create the URL to the product image". Das brachte mich darauf, dass in der XML-Ausgabe keine Tag für die Produkte enthalten war. In der Source des Connectors hatte der Entwickler wohl schon daran gearbeitet, die entsprechenden Zeilen im Code aber auskommentiert.
Ich habe eine Änderung eingebracht, dass das Tag nun leer erzeugt wird (d.h. es wird kein Produktbild in Fakturama importiert, was aber vorher auch nicht passierte).

Beim nächsten Test kam eine Fehlermeldung aufgrund der Zeitstempels meiner Testbestellung. Aufgrund eines Beitrags hier im Forum wusste ich schon, dass das Format des Zeitstempels in Fakturama 2 nun im ISO8601 Format übertragen werden muss. Deshalb habe ich mir die Funktion date_to_ISO aus dem modified Connector ausgeliehen, damit die Zeitstempel konvertiert werden.

Danach klappte der Import des Produkts und einer Bestellung.

Weitere kosmetische Änderungen:

- Version auf 0.0.15 geändert
- URL aus dem Source Code entfernt, die in den Neos Connector Einstellungen in Wordpress zu einer Zertifikatfehlermeldung geführt hat
- Information zur Paypal Spendenseite entfernt, da das Plugin schon länger nicht mehr weiter entwickelt wird

Viele Grüße

Matthias



   
Zitat
(@feli_x)
Trusted Member
Beigetreten: vor 7 Jahren
Beiträge: 52
 

Hallo mdino,

gerade wollte ich eine Anfrage an das Forum senden, ob es einen aktuellen connector für WooCommerce und fakturama2 gibt, da las ich nach einer Suche in den Forenbeiträgen Deinen Beitrag. Und der ist vom heutigen Tag 🙂

Jetzt habe ich den connector ausprobiert, leider gibt es eine Fehlermeldung und zwar steht in meiner log-Datei ~/.fakturama2_dev/.metadata/.log folgendes:

!ENTRY com.sebulli.fakturama.common 4 0 2020-02-12 19:32:27.279
!MESSAGE c.s.f.w.WebShopImportManager.execute:196|Fehler beim Öffnen von:
http://127.0.0.1 /wp_bootstrap_tests/wp-content/plugins/neos-connector-for-fakturama/neosconnectorforfakturama-notices.php
Message: null

Trace: javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:335)

(Hinter 127.0.0.1 habe ich ein Leerzeichen eingefügt, da sonst im Post nur ein Link erscheint.)

In fakturama2/Einstellungen/Webshop/Webshop url habe ich eingetragen: 127.0.0.1/wp_bootstrap_tests/wp-content/plugins/neos-connector-for-fakturama/neosconnectorforfakturama.php

Dabei bin ich nicht sicher, ob das richtig ist. Ich lasse den Webshop auf localhost (=127.0.0.1) laufen.

Hat jemand eine Idee, wo der Fehler liegt?

Den connector habe ich allerdings noch nicht mit fakturama1.6 ausprobiert. Das ist jetzt mein nächster Schritt, um den Fehler zu entdecken.

LG
feli_x



   
AntwortZitat
(@mdino)
Active Member
Beigetreten: vor 9 Jahren
Beiträge: 10
Topic starter  

Hallo feli_x,

ich würde sagen die URL die in Fakturama eingetragen ist, ist nicht korrekt. Sie sollte auf

.../wp-admin/admin-ajax.php?do=fakturama enden. Bei mir ist das Wurzelverzeichnis /wordpress, also lautet die URL /wordpress/admin-ajax.php?do=fakturama

Schau doch bitte mal in Wordpress unter Einstellungen - Fakturama im Reiter "Information". Dort steht wie die URL korrekt lauten muss.

Viele Grüße

Matthias



   
AntwortZitat
(@rheydenr)
Forum-Admin Registered
Beigetreten: vor 14 Jahren
Beiträge: 4911
 

Hallo zusammen, danke für die tolle Arbeit, @Matthias. Falls Du Fakturama-seitig irgendwelche Unterstützung brauchst laß es mich wissen.


Viele Grüße
Ralf.
Wichtige Infos zum Posten im Forum.
Fehler gefunden?


   
AntwortZitat
(@feli_x)
Trusted Member
Beigetreten: vor 7 Jahren
Beiträge: 52
 

Danke an Matthias,

da war ich wohl blind beim Ansehen von /settings/fakturama/information in wordpress. Ich hatte mich schon gewundert, über die von mir angegebene url, sie sollte ja im Passwort-geschützten Bereich liegen.

Als nächsten Schritt habe ich in fakturama1.6.9c das alte Plugin verwendet mit dem Connector Version 0.0.14 und einer alten Wordpress-Installation 4.8. Und in fakturama/preferences/Web Shop/Webshop url die Adresse http://localhost/wp_4p8/wp-admin/admin-ajax.php?do=fakturama. Da bekomme ich eine Fehlermeldung und es werden keine Daten in nach fakturama importiert:

No webshop data:
http://localhost/wp_4p8/wp-admin/admin-ajax.php?do=fakturamaarray(1) {
[0]=>
object(WC_Product)#1104 (12) {
["object_type":protected]=>
string(7) "product"
["post_type":protected]=>
string(7) "product"
["cache_group":protected]=>
string(8) "products"
["data":protected]=>
array(48) {
["name"]=>
string(5) "Asche"
["slug"]=>
...

Allerdings stehen in der Fehlermeldung und genauso im File fakturama1p6/Log/WebShopImport.log die Daten, die ich probeweise importieren will. Eine Verbindung zum Webshop hat also schon funktioniert!

Ich poste erst mal dies hier, ich möchte gerne den Connector in der alten Version zum Laufen bringen und dann den neuen Connector testen.

LG
feli_x



   
AntwortZitat
(@mdino)
Active Member
Beigetreten: vor 9 Jahren
Beiträge: 10
Topic starter  

Hallo feli_x,

hast Du die Möglichkeit das Programm curl z.B. unter Linux zu verwenden?

curl Webseite

Mit dem folgenden Aufruf kannst Du die Anfrage von Fakturama simulieren. Vor die Serveradresse muss noch das http://. Username/Passwort wie in den Settings von Fakturama.

$ curl --data "username=&password=&action=get_products_orders&setstate={}&maxproducts=1000" /wp_4p8/wp-admin/admin-ajax.php?do=fakturama

Kommt dann eine Fehlermeldung, oder eine XML-Ausgabe die so beginnt?

In der Ausgabe sollten dann die Produktdaten in XML Tags folgen.

Viele Grüße

Matthias



   
AntwortZitat
(@mdino)
Active Member
Beigetreten: vor 9 Jahren
Beiträge: 10
Topic starter  

Hallo Ralf,

Danke, bei Bedarf gerne 🙂

Viele Grüße

Matthias



   
AntwortZitat
(@feli_x)
Trusted Member
Beigetreten: vor 7 Jahren
Beiträge: 52
 

Hallo Matthias,

danke für den Tipp! Ich habe den Netzwerkverkehr zwischen fakturama und dem Webserver (localhost) getraced

sudo tcpdump -qA -i lo0 > datei1.txt

und dann die Parameter wie Du aus dem Trace extrahiert und den Befehl

curl --data "username=mein_username&password=mein_passwort&action=get_products_orders&setstate={}&maxproducts=1000" mein_server/wp_4p8/wp-admin/admin-ajax.php?do=fakturama > datei2.txt

gegeben.

Komischerweise stehen in datei2.txt keine Daten im xml Format, sondern:

array(1) {
[0]=>
object(WC_Product)#1104 (12) {
...

Ach ja, ich hab's herausgefunden, ich hatte die Einstellungen in wordpress/settings/fakturama/debug auf on gestellt. Habe debug auf off gestellt und nun funktioniert der Connector 0.0.14 unter wordpress4.8 und fakturama1.6.

Ich lass die Schritte im Post stehen zur Dokumentation.

Danke nochmal
feli_x



   
AntwortZitat
(@feli_x)
Trusted Member
Beigetreten: vor 7 Jahren
Beiträge: 52
 

Hallo,

leider funktioniert der Connector 0.0.15 bei mir mit fakturama2 (noch) nicht.

Ich bekomme die Fehlermeldung:

20200213 19:16:18.273 | ERROR | c.s.f.w.WebShopImportManager.execute:196 | Fehler beim Öffnen von:
mein_server/wp_4p8/wp-admin/admin-ajax.php?do=fakturama
Message: null

Trace: com.sun.xml.internal.bind.DatatypeConverterImpl._parseFloat(DatatypeConverterImpl.java:181)

In der Log-Datei fakturama_dev/Error.2020-02-13.log (ich benutze fakturama2.1.0) steht das Gleiche und die Datei fakturama_dev/WebShopImport.log bleibt leer.

Ich dachte, es könnten an den Spracheinstellungen, genauer der Darstellung für Dezimalzahlen, liegen. Habe die wordpress-Version erst von Englisch auf Deutsch umgestellt und auch fakturama auf Deutsch gestartet (-nl de_DE). Danach wieder beide zurück nach Englisch. Und auch die Dezimalzahlendarstellungen jeweils geändert. Es blieb bei der Fehlermeldung.

Hat jemand eine Idee, wo der Fehler liegt?

Gruß
feli_x



   
AntwortZitat
(@mdino)
Active Member
Beigetreten: vor 9 Jahren
Beiträge: 10
Topic starter  

Hallo feli_x,

der Fehlermeldung nach wütde ich darauf tippen, das ein Float Zahlenwert nicht so formatiert ist, wie er von Fakturama erwartet wird.
Hat Du die Möglichkeit den curl Requst wie in meinem vorherigen Post beschrieben an den Webserver zu schicken? Dann kann man in der XML Antwort mal die Daten kontrollieren. (hoffentlich Testdaten und keine Kundendaten?)
Da Fakturama gar nichts ins Logfile schreibt umd in der Fehlermeldung Message: null steht, scheitert der Import wohl gleich zu Beginn.Also entweder ist das Problem schon in den Metadaten (Connector Version usw.), oder in den Produktdaten.

Kannst Du die XML Ausgabe hier posten?

Viele Grüße

Matthias



   
AntwortZitat
(@Patrix)
Active Member
Beigetreten: vor 7 Jahren
Beiträge: 6
 

Ich stehe nun leider vor dem selben Problem wie feli_x



   
AntwortZitat
(@mdino)
Active Member
Beigetreten: vor 9 Jahren
Beiträge: 10
Topic starter  

Hallo Patrix,

das selbe Thema wie bei feli_x. Wäre gut eine Ausgabe des curl Requests zu sehen, um hoffentlich zu verstehen was das Problem ist. Gerne auch von ihm und von Dir.

Siehe diese Post.
meinen Testdaten hat es ja geklappt. Aber ich habe auch nicht alle möglichen Felder z.B. in der Woocommerce Produktkonfiguration genutzt.

In dem folgenden Beispiel habe ich ein paar Zeilumbrüche und Kommentare eingefügt.
In den "Metadaten" ist aber nur die PHP-Version, Wordpressversion und Webshop URL variabel und unterscheidet sich von Installation zu Installation. Also vielleicht liegt das Problem in den Produktdaten.

$ curl --data "username=&password=&action=get_products_orders&setstate={}&maxproducts=1000"  http://10.0.0.80/wordpress/wp-admin/admin-ajax.php?do=fakturama 

# XML-Antwort

# Metadaten
7.4.2
# Produktdaten
69693Testprodukt 1Unkategorisiert 0%Testprodukt 1
# Bestellungen
MatthiasTestTestweg 154321TestortDEMatthiasTestTestweg 154321TestortDEDEDE0Testprodukt 1UnkategorisiertMwSt. 0%VersandkostenpauschaleMwSt. 19%Direkte Banküberweisung

Viele Grüße

Matthias



   
AntwortZitat
(@feli_x)
Trusted Member
Beigetreten: vor 7 Jahren
Beiträge: 52
 

Hallo,

hier kommt die Ausgabe von curl --data "username=..., auch etwas mit Leerzeichen und Zeilenumbrüchen umformatiert :


7.3.2


Asche 0%description



FVAschendorf 67654OdenseDE0AscheMwSt. 0%MwSt. 19%PayPal
FVAschendorf 67654OdenseDE0AscheMwSt. 0%MwSt. 19%PayPal



Interessanterweise klappt der Import mit fakturama1.6.
Ich habe alle Preferences meiner fakturam-Versionen 1.6.9c und 2.1.0 verglichen. Sie sind gleich, auch die Spracheinstellungen und die Einstellungen unter Preferences/General/Currency locale und Thousands separator.

Gruß
Felix



   
AntwortZitat
(@feli_x)
Trusted Member
Beigetreten: vor 7 Jahren
Beiträge: 52
 

Hallo,

hab den Fehler entdeckt. fakturama2 erwartet anders als fakturama1.6 Eingaben zu den Feldern quantity und id. Leerinput von "" ist nicht möglich und führt dazu, dass gar nichts importiert wird.

Bei woocommerce muss man unter woocommerce/products/erstelltes_produkt/inventory einmal bei SKU eine Nummer eingeben und dann manage stock aktivieren und bei stock quantity auch eine Zahl eingeben. Die Zahl bei SKU wird weitergegeben als id im Tag und die Zahl bei stock quantity wird zu quantity auch im Tag

@Patrix, das kannst Du auch ausprobieren.

Gruß
Felix



   
AntwortZitat
(@mdino)
Active Member
Beigetreten: vor 9 Jahren
Beiträge: 10
Topic starter  

Guten Morgen Felix,

vielen Dank für den Hinweis bezüglich der Quantity. Ich habe gestern das PHP-Script dahingehend geändert, dass "0" enthält, wenn von Woocommerce kein Wert geliefert wird.
Allerdings habe ich dann den Rest des gestrigen Tages mit Fehleranalyse zugebracht. Nachdem ich "echte" Produktbeschreibungen von dem betreuten Shop in meine Testinstallation importiert habe, wurde für etliche Produkte für (Produktpreis) kein Wert ausgegeben. Folglich scheitert dann auch der Import in Fakturama.
So weit ich es sehe, könnte das Problem an variablen Preisen liegen, die vom Connector nicht korrekt behandelt werden.
Ich befürchte da muss ich mich erst mal mit der Woocommerce API befassen, um eine Lösung zu finden.

Viele Grüße

Matthias



   
AntwortZitat
Seite 1 / 9
Teilen: