Hallo, es gibt zwar schon eine Lösung für den Bestellungsexport, der direkt auf die Datenbank zugreift, aber dieser basiert auf der REST API und sollte dementsprechend, wenn man Gambio glauben kann, niemals inkompatibel werden. Was macht die Datei? Sie ermöglicht dir, von jedem beliebigen Webserver (aber natürlich auch von deinem eigenen) Bestelldaten abzurufen und in eine CSV-Datei zu packen. Dabei kann man nach Datum, Bestellnummer oder Bestellstatus suchen. Anwendungsmöglichkeiten: Für den Buchhaltungs-Export, z.B. monatsweise Export oder ab der ersten Bestellnummer des Monats. Denkbar wäre sogar, dass der Steuerberater sich die Daten der Debitorenbuchhaltung von seinem Schreibtisch aus selbst zieht. Für die Erstellung von Paketscheinen Für die Umsatzstatistik Für die Erstellung von Adressdateien für Postwerbesendungen oder Newslettern ... Sicherheit: Es wird ein Gambio-Zugriffs-Token in der URL abgefragt. Diesen musst du für einen beliebigen Admin aus deinem Gambio Backend erzeugen unter "Kunden->Rollen und Berechtigungen->API Tokens verwalten". Der Aufruf des Scripts muss dann mit dem Token als Parameter "sec" aufgerufen werden, also z.B. (Link nur für registrierte Nutzer sichtbar.). Da der Token sehr lang ist, empfehle ich ein Bookmark. Ich empfehle außerdem, die Datei in einen separaten Ordner mit einem Verzeichnisschutz abzulegen. Installation & Konfiguration: Das Modul besteht aus nur einer Datei, das im Kopf-Bereich ein paar Konfigurationsmöglichkeiten bietet: Nach getätigten Eingaben muss die Datei nur noch irgendwo hin hochgeladen werden und dann mit (Link nur für registrierte Nutzer sichtbar.)MeinErstellterGambioAdminToken aufgerufen werden. Ein Wort zum Stand der Technik: Gambio mag keine direkten Zugriffe auf die Datenbank und empfiehlt die REST API. Gambio mag aber auch keinen Datenaustausch per CSV. Dieses Modul ist also als Brückentechnologie zu verstehen, für diejenigen, deren Steuerberater, Warenwirtschaften, ... noch keine API-Integration ermöglichen. Cloud-Kunden: Können das auch benutzen, so lange sie diese Datei irgendwo hochladen können. Disclaimer: Es kann am Shop nichts kaputtgehen, da keine Dateien vom Shop-Kern überschrieben oder überladen werden. Dennoch: Das Ding ist gratis. Ich schenke es und schließe jegliche Haftung, Support oder Gewährleistung aus. Der Form halber empfehle ich trotz allem vor Inbetriebnahme eine komplette Shopsicherung. VG und viel Spaß! -- Download wird nicht mehr für die Allgemeinheit angeboten --
Sehr cool, danke! Klitzekleiner Fehler in Zeile 32: Code: echo '<h1>Bestellungsexport</h2>'; Das Hintere sollte </h1> sein, oder?
@L & B Hab mir das Script kurz angeschaut und ich empfehle keine Login Daten in der PHP Datei zu speichern. Da die API auch ein Token nutzen kann statt E-Mail und Passwort empfehle ich das Script entsprechend anzupassen. Man muss um die API dann zu nutzen im Gambio Admin unter "Kunden->Rollen und Berechtigungen->API Tokens verwalten" für einen Admin ein Token anlegen. Die Gültigkeit des Tokens kann dort selbt bestimmt werden und man kann mit dem Token dann ohne E-Mail und Passwort zugreifen. Der Vorteil es wird keine E-Mail und Passwort im PHP Script benötigt, der Token kann per URL übergeben werden, dann braucht man selbst im Script auch kein Token mehr. PHP: $request->setHeader(array( 'Content-Type' => 'application/json', 'Authorization' => 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczpcL1wvdHQuc3VwcC5nYW1iaW8tc2VydmVyLm5ldCIsImV4cCI6MTkyODY4NzI1MiwiaWF0IjoxNjEzMzI3MjUyLCJjdXN0b21lcl9pZCI6MX'));
Hallo @L & B ! Ich wollte direkt zwei Daumen für den Post geben. Vielen Dank, damit kann ich auf jeden Fall einiges anfangen. Leider habe ich es noch nicht zum Laufen gebracht. Gibt es eine spezielle php-Version mit der man das verwenden sollte? Mir gibt das nur eine weiße Seite unter der Überschrift (Bestellungsexport) aus. Ich habe erst einen API Token von einem Benutzer erzeugt, der Packtisch heisst und den ich bisher für den Export von Bestellungen für GLS nutze. Dann habe ich es nochmal mit einem Token vom Super-Administrator probiert, aber daran lag es scheinbar nicht. Token ist scheinbar richtig, habe bewusst mal einen falschen genutzt um die Fehlermeldung zu provozieren.
Hallo Til, also wenn du einen falschen Token angibst bekommst du eine andere Seite als wenn du den richtigen angibst? Oder ist die Seite immer weiß? Kannst du mal prüfen, dass du die Domain mit abschließenden / angegeben hast wie im Beispiel? dass dein Token nur Zahlen, Buchstaben, Bindestriche, Unterstriche und Punkte enhält? dass du in den drei Konfigurationsfeldern überall die Anführungszeichen hast und am Ende das Semikolon? dass du überall vor den Erläuterungen // beibehalten hast (zur Auskommentierung)? Spezielle Anforderungen zur PHP-Version gibt es nicht. Müsste von 7.0 aufwärts alles gehen.
Wenn der Token falsch ist, kommt unter der Überschrift die Fehlermeldung: "Zugriff verweigert! Token falsch!". Mit richtigem Token bleibt die Seite unter der Überschrift weiß. Habe ich alles geprüft. token hat Zahlen, große und kleine Buchstaben, Punkte und Bindestriche. Domain mit .eu/ und die Syntax hab ich nicht kaputt gemacht. Bearbeite das aber auch mit Sublime Text mit Syntax Highlighting, da fällt sofort auf wenn man da Anführungsstriche weglässt. PHP-Version ist übrigens 7.3.26.
@L & B Ich hab noch festgestellt, dass du die folgende Klassen nutzt: PHP: $client = new http\Client; $request = new http\Client\Request; Das ist nicht in jeder PHP Version inkl. eventuell sollte man noch eine Alternative mit cURL anbieten wenn die Klassen nicht vorhanden sind.
Ist denn cURL in jeder PHP Version vorhanden? Dann vielleicht komplett darauf umbauen? Wüsste gerade nicht wie man das als Alternative machen kann, ohne dass man zwei Dateien verwendet?
Mit CURL schaffe ich es nicht. Was ist denn an dieser Suche falsch? Code: $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $domain ."api.php/v2/orders/search", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_POSTFIELDS => "{\"search\": {\"greater\": {\"orders.orders_date_purchased\": \"2021-02-14\"}}}", CURLOPT_HTTPHEADER => array( "accept: application/json", "authorization: Bearer " . $gtoken, "content-type: application/json" ), )); Läuft in einen Timeout, so dass ich vermute, dass die CURLOPT_POSTFIELDS nicht greifen? Wenn ich den Timeout auf 300 stelle, dann läufts durch, aber ohne Treffer. Habe mich hieran orientiert: (Link nur für registrierte Nutzer sichtbar.)
@L & B setzte mal PHP: CURLOPT_POSTREDIR => 3, bei mir hat damit der cURL funktioniert. Das Problem hier wurde umgeleitet, wobei die POST Daten verloren gingen, damit cURL der Umleitung folgt und die POST Daten erneut nach der Umleitung sendet muss oben gegebener Parameter gesetzt werden.
@L & B mit folgenden Parametern hat es bei mir ohne Probleme funktioniert: PHP: CURLOPT_RETURNTRANSFER => 1, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_FOLLOWLOCATION => 1, CURLOPT_POSTREDIR => 3, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $data, CURLOPT_SSL_VERIFYHOST => 0, CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_VERBOSE => 1, CURLOPT_HTTPHEADER => array( 'Authorization: Bearer '.$sec, 'Content-Type: application/json' )
Ok, ich hatte versehentlich GET statt POST, und die Formatierung von $data war auch falsch. Ich hatte schön artig alle " escaped. Mit der Hilfe von @Till (Gambio) läufts jetzt über CURL, vielleicht dann auch bei @Til . Datei-Update im ersten Post. VG
In meinem Shop GX v4.3.3.1 mit PHP 7.4.80 will es einfach nicht funktionieren. Das Script lässt sich aufrufen, Eingabefelder, Buttons, alles da. Nach Klick auf einem Button, werde ich direkt auf meine Startseite geleitet. In der Adressleiste steht dann: Code: https://meinshop.de/mods/orders_export?automatic=1&sec=TOKEN&action=1&id=2021-02-08&Submit=Bestellungen+exportieren Es wird keine Datei angelegt. Auch in den Logs lässt sich nichts finden. Eigentlich sollten ja einige Meldungen angezeigt werden Code: GX v4.3.3.1 PHP 7.4.80 MySQL 5.5.62 cURL support enabled cURL Information 7.38.0
(Link nur für registrierte Nutzer sichtbar.).php?automatic=1&sec=TOKEN&action=1&id=2021-02-08&Submit=Bestellungen+exportieren Es hatte sich in der letzten Aktualisierung noch ein Fehler eingeschlichen. Bitte aus dem 1. Post nochmal die orders_export.php neu herunterladen. VG
So, erstmal ein DANKE für das Script. Da Till und Wilken nix zu meckern hatten, gehe ich davon aus, dass es bzgl. zukünftiger Änderungen am Shopsystem weitgehend Updatesicher sein wird!? Ich habe mir nun ein paar Datensätze exportiert. Ein Kunde hat jedoch seine Straße auch im zusätzlichen Adressfeld angelegt und mit einem Zeilenumbruch "2. OG" eingefügt. Der Datensatz verteilt sich nach dem Export dann auf 4 Datensätze: Code: 10989441,2,"2021-02-15 19:13:23",EUR,,401,paypal3,freeamount_freeamount,max.muster@gmx.net,017612345678,Max,Muster,,"Karl-Firlefanz-Str. 12 1/4",,"Karl-Firlefanz-Str. 12 1/4 2. OG",10550,Berlin,81,Max,Muster,,"Karl-Firlefanz-Str. 12 1/4",,"Karl-Firlefanz-Str. 12 1/4 2. OG",10550,Berlin,81,Max,Muster,,"Karl-Firlefanz-Str. 12 1/4",,"Karl-Firlefanz-Str. 12 1/4 2. OG",10550,Berlin,81,759,637.82,19,https://MeineDomain.de/api.php/v2/orders/10034441/tracking_codes Ich vermute mal, dass LineFeed und Return gefiltert werden müssen.