Schlagwort-Archive: magento

Mai
26

Bezahlung ohne Bestellung

Bezahlung ohne Bestellung Typische Probleme beim Payment in Onlineshops.
Payment ist einer der wichtigsten Faktoren im E-Commerce – ohne Bezahlung kein Kauf und kein Umsatz. Auf dem Markt tummeln sich diverse größtenteils internationale Anbieter, über die man diverse Zahlarten wie Kreditkarte, Rechnungskauf, Paypal, Überweisungen, Ideal, Alipay und eine endlose Liste weiterer in einen Onlineshop integrieren kann.

FATCHIP hat im Laufe der letzten Jahre Payment-Lösungen in Onlineshops (z.B. OXID eShop, Magento, Shopware) und oft in weiterverarbeitende ERP Systeme u.a. für folgende Payment-Anbieter implementiert: Payone, Computop, Paypal, Amazon Pay, Klarna, Sofortüberweisung, Paynova, Barzahlen.de, Ratepay, Mollie, Paymorrow, Heidelpay.
Anbindungen von uns werden in über 500 Shops genutzt.

Bezahlung ohne Bestellung ist ein sehr lästiges Problem, welches immer wieder zu erhöhtem Aufkommen im Kundenservice, nicht gelieferten Bestellungen (mit entsprechend verärgerten Kunden) oder gar Ärger mit dem Finanzamt führt.

Das Szenario stellt sich dem Shopbetreiber so dar, dass es, wie der Titel schon sagt, dazu kommt, dass wir z.B. einen Kreditkarten-Zahlungseingang haben, aber keine oder nur eine unvollständige dazugehörige Bestellung im Shop- oder ERP-System.

Der Kundenservice muss aufwändig und manuell eine Bestellung anlegen, Rücksprache mit dem Kunden halten oder das Geld zurückerstatten.

Für dieses Fehlerbild ist die häufigste Ursache ein unvollständiger Redirect des Kunden  vom Zahlungsanbieter zurück in den Shop, sodass die Bestellung nach erfolgreicher Zahlung nicht korrekt angelegt oder finalisiert wird. 

Das kann passieren, wenn der Kunde beim Seitenaufruf die Netzverbindung verliert, wenn er mit dem Zug in einen Tunnel fährt, wenn der Shopaufruf fehlschlägt zum Beispiel durch einen in dem Moment überlasteten Webserver oder beispielsweise weil ein Browser Plugin Session-Daten oder Request-Parameter verändert. Oft ist die genaue Ursache nicht eindeutig zu ermitteln oder es ist nicht bei jedem Fehler die gleiche.

Transaktionssicherheit ist hier das Stichwort.

Ein Lösungsansatz, der dieses Problem ein für alle mal aus der Welt schafft, ist es wie folgt vorzugehen:

  1. Die komplette Bestellung mit allen Produkten, Preisen und Kundendaten muss bereits vor Durchführung des Zahlungsvorgangs im Shop (meistens in der Datenbank) gespeichert werden. Dabei muss sie aber als unvollständig markiert werden oder erst einmal in separaten Datenbank-Tabellen abgelegt werden, sodass keine weiteren Schritte, etwa die Übergabe an das ERP-System, erfolgen.
  2. Nach erfolgreicher Durchführung der Zahlung wird die bereits gesicherte Bestellung nur noch als abgeschlossen markiert und alle Folgeprozesse können stattfinden.
  3. Für den Fall, dass der Redirect in den Shop nicht korrekt funktioniert hat (oder auch der Kunde die Bestellung einfach durch Schließen des Browsers abgebrochen hat), verbleibt die Bestellung also unvollständig in der Datenbank.
  4. Nun entwickeln wir ein Cronjob-gesteuertes Script, welches regelmäßig an der API des Payment-Anbieters nach zu den unvollständigen Bestellungen gehörigen Zahlungen sucht. Findet das Script eine passende, vollständige Zahlung, wird die Bestellung als abgeschlossen markiert. Wird keine Zahlung zu der Order gefunden (Kunde hat abgebrochen), wird die Bestellung gelöscht. Dabei sollte ein Zeitraum von mindestens einer Stunde gewartet werden, bevor Bestellungen gelöscht werden.
Dez
08

Grundlegende Konsolenbefehle für die Arbeit als Webentwickler

konsoleObwohl man als Software-Entwickler sein Zeit zumeist im PHP- oder HTML-Code und in PHPStorm oder einer anderen IDE unterwegs ist, kommt man gelegentlich in die Verlegenheit, die Software localhost, auf einem Testserver oder sogar im Produktiv-System zum Laufen zu bekommen und ggf. zu Debuggen. Hierbei spart es häufig extrem viel Zeit, sich auf die Konsolen-Ebene zu begeben und mit ein paar grundlegenden Befehlen zu operieren.

Meine Konsolen-Empfehlungen:

Windows:

  • Console2 – super für lokale Arbeit
  • kiTTY – ein besserer Nachfolger von Putty, üblicherweise bei remote SSH Servern benutzt
  • Windows PowerShell – eigentlich ein furchtbares Tool, aber von den Befehlen her am nächsten an denen von Linux dran

Ubuntu:

  • LXTerminal
  • bash
  • xTerm-256color

Mac:

Befehle

Die Befehle funktionieren in der Regel auf allen Webservern oder in Docker Umgebungen mit Linux oder iOS Betriebssystem. In der Windows Eingabeaufforderung oder PowerShell sind die Befehle oft anders. Wo es mir bekannt war, habe ich einen Hinweis zum Windows-Equivalent ergänzt.

Die Befehle sind hier nur kurz beschrieben. Im Web finden sich zahlreiche Dokumentationen und Anwendungsbeispiele. Am besten sucht man nach „ssh [Befehl]“, um zielgerichtete Treffer zu finden. Zum Beispiel „ssh copy“. Oder man lässt sich direkt im Terminal die Hilfe zum jeweiligen Befehl ausgeben,, indem man „help“ hinter das Kommando schreibt. copy help.

cat

Gibt den Inhalt einer Variable oder Datei aus – sehr nützlich, wenn man sich mal eben kurz eine Datei ansehen möchte, ohne sie runterzuladen. cat index.php
Siehe auch tail.

copy

Kopiert eine Datei oder einen Ordner.

copy meinedatei.php meinedatei_backup.php legt eine Backup-Kopie der Datei an.

crontab

Mit crontab -e kann man üblicherweise auf Webservern die Cronjobs konfigurieren.

cd

Der change directory Befehl wechselt in ein anderes Verzeichnis. Dabei kann ich relativ in ein Unterverzeichnis des aktuellen Ordners gehen cd modules/fc/ oder absolut vom Hauptverzeichnis des Systems aus cd /var/www/htdocs/modules/fc/.
Mit cd .. navigiere ich eine Ebene höher.

df

Gibt eine Übersicht über die Festplattenauslastung des Systems aus.
Noch übersichtlicher wird es mit df -h

du

Mit dem Befehl kann man den Festplattenverbrauch im aktuellen Verzeichnis ausgeben. Die Parameter du -hs /var/www/html/out/pictures/ zeigen die Größe des Bilderordners übersichtlich an.

head

head google.csv zeigt die ersten Zeilen der Datei an.
Siehe auch tail.

ls

Listet alle Dateien im Verzeichnis auf, in dem man sich gerade befindet. Wird der Befehl ohne zusätzliche Parameter eingegeben, ist das ziemlich unübersichtlich.
ls -al ist prima, um eine ordentliche Ansicht zu bekommen.
(Windows Equivalent: dir )

mkdir

Der make-directory Befehl erzeugt ein Verzeichnis.
mkdir /var/www/htdocs/tmp erzeugt das Verzeichnis „tmp“.

mv

Mit dem move-Befehl kann man Dateien oder Ordner verschieben oder umbenennen.
mv oxideshop.log oxideshop_old.log benennt das Logfile um.
mv oxideshop.log archive/oxideshop.log verschiebt das Logfile in den Unterordner „archive“.

php

Ist PHP installiert, starte ich damit einen PHP-Prozess. Mit php exportscript.php z.B. kann ich einen Export starten.
Mit php -r 'echo date();' kann ich direkt ein PHP-Kommando ausführen.
Manchmal muss man den gesamten Pfad zum PHP-Binary mit angeben, z.B. /usr/local/php7.1/bin/php exportscript.php.

ps

Das ist zum Anzeigen der laufenden Prozesse auf dem Server da.
ps -aux gibt eine schöne Übersicht.
Darin kann man z.B. sehen, welche Cronjobs gerade laufen, und wie viele Ressourcen sie verbrauchen.

pwd

Oft verliert man die Orientierung, in welchem Verzeichnis man sich gerade befindet.
Der Befehl pwd gibt den aktuellen Verzeichnis-Pfad aus.

rm

Gegenstand vieler Nerd-Witze und mit den falschen Rechten äußerst gefährlich, da man mit einem Befehl den ganzen Server löschen kann. Sowohl aus Versehen, als auch mit Absicht. Der Befehl ist zum Löschen von Dateien da.
Mit rm oxideshop.log lösche ich das Logfile im aktuellen Verzeichnis.
Mit rm *.png lösche ich alle PNG Dateien im aktuellen Verzeichnis.
Mit rm -r /var/www/htdocs/ lösche ich rekursiv alle Dateien und Unterverzeichnisse des htdocs-Ordners – also auch mal einen ganzen Shop mit einem Befehl.
Mit dem zusätzlichen Parameter -f überspringe ich die nervigen „wollen Sie wirklich löschen“ Nachfragen.
(Windows Equivalent: erase)

strg + c

Eher eine Tasten-Kombination als ein Befehl. Jedenfalls kann man damit jeden Befehl, der gerade ausgeführt wird, abbrechen, wenns mal wieder länger dauert.
Zum Beispiel ein PHP-Script, welches man mit php meinscript.php gestartet hat.

top

top -c ist eine tolle Hilfe bei der Performance-Beobachtung eines Servers. Der Befehl erzeugt eine sich ständig aktualisierende Anzeige, wieviel RAM und CPU gerade verbraucht werden und welcher Prozess wieviel davon benötigt.
Beenden mit strg + c.

tail

Gibt den Schwanz bzw. das Ende einer Datei aus.
Zum Beispiel die letzten 10 Zeilen eines Logfiles mit tail -n10 oxideshop.log.
Mit tail -f oxideshop.log kann man Realtime zusehen, was gerade ins Logfile geschrieben wird.
Beenden mit strg + c.
tail ist das Gegenteil von head.

wget

Dieser Befehl wird genutzt, um eine URL aufzurufen und den Inhalt herunterzuladen. Beispielsweise geeignet zum Download größerer Dateien von einem anderen Server.
wget https://meinshop.de/export/Datenbankdump.sql

Eränzt gerne Befehle, die Ihr wichtig findet, in den Kommentaren!

Jul
26

OXID Commons – ein Rückblick

OXID Commons 2009 Review

Es ist nun schon ein paar Tage her, dass ich die OXID Commons in Freiburg besuchte, doch nicht zu spät, um meine Eindrücke zu schildern.

Nachdem ich ein wenig zu spät bei der Commons ankam – Beginn war um 9:00 Uhr und ich kam erst am selben morgen aus Berlin – wurde ich mit einem netten, quietschgrünen Begrüßungspaket empfangen. In OXIDs üblicher Professionalität fand ich darin den Tages-Terminplan, Kontaktdaten sämtlicher Redner und angekündigter Teilnehmer, ein auffälliges Commons-Shirt (siehe Foto) und natürlich die üblichen Prospekte und Broschüren zu den einzelnen OXID Shopsystemen und Services.

Parallel in zwei Sälen fanden Vorträge von OXID Mitarbeitern, OXID Partnern und externen Fachleuten rund um die Themen Onlineshopping, Software, Open source und Marketing statt. Besonders interessant fand ich den Vortrag von Björn Schotte, Chefredakteur des PHP Magazins und Geschäftsführer der Mayflower,  mit dem Titel „Evaluationskriterien für Enterprise eCommerce“. Er definierte Kriterien wie Anschaffungskosten, Performance, Regionale Aspekte, Verfügbarkeit von Drittanbietern und Life Time Cost zur Auswahl der richtigen Software und Anbieter für E-Commerce Projekte. Im zweiten Teil des Vortrags Verglich er die Platzhirsche Magento, OXID eShop und XT:Commerce miteinander. Hier schnitt XT:Commerce erwartungsgemäß als zwar solide und mit einer hervorragenden Community ausgestattet, aber mittlerweile veraltert als letzter ab, OXID vor allem durch die Möglichkeit, mit OXID eFire effizient und kostengünstig zahlreiche Drittanbieter anzubinden, lag in der Bewertung knapp vorne. Magento befinde sich zwar im Kommen und sei deutlich vor XT platziert, aber  Punkte wie fehlende deutsche Niederlassung des Herstellers, eine langsame Performance und teilweise nicht ganz sauberer PHP Code wären noch verbesserungsfähig.

Auch ich habe ja, wie im letzten Artikel angekündigt, im Rahmen der Vortragsreihe  „OXID Shops und ihre Erfolgsgeschichte“ einen kleinen Vortrag gehalten. Der Titel war „E-Commerce Strategien mit einem OXID eShop anhand der Luxusbabe Online Boutique“. OXID streamte alle Vorträge life über das WWW, hier gibt’s meinen Vortrag nochmal aufbereitet:

Das Publikum der Commons war bunt gemischt, natürlich beinahe alle OXID Mitarbeiter waren dort, zahlreiche Partner und Anbieter rund um das Thema E-Commerce wie Thomas Karst von Trusted Shops, Thomas Franke von eFulfilment, Marcus Fuchs von Paypal, Mathis Rolf des Hosters Continum, Andreas Wolf von Econda, Steffen Belitz von Edelight, Michael Ambros von eKomi und so weiter… Aber ein Großteil der Teilnehmer bestand auch aus Shopbetriebern und Shop-Interessenten, und natürlich waren einige Vertreter der Presse dabei. Vor allem in den Pausen und bei der abschliessenden Abendveranstaltung in der Freiburg Bar boten sich zahlreiche Gelegenheiten für den Dialog, und ich denke, dass der ein oder andere Neuling in der Szene mit einem gehörigen Paket Know How nach Hause gegangen ist.

Noch am Rande: Das Catering war hervorragend, während der ganzen Commons standen Getränke und Snacks bereit, und Mittags gab es leckeren Braten für alle Teilnehmer. Vielen Dank dafür!

Dez
27

Magento Handbuch zu gewinnen

Magento Benutzerhandbuch

Inzwischen gehört Magento mit über 500.000 Downloads zu einer der am schnellsten wachsenden eCommerce-Lösung weltweit. Dennoch gab es bisher wenig deutschsprachige Literatur zum Thema. TechDivision hat als einer der wenigen offiziellen, deutschen Gold-Partner für Magento das erste deutschsprachige Handbuch fertig gestellt, das ab sofort bezogen werden kann. Der HB E-Commerce Blog verlost drei Exemplare des eBooks im Wert von jeweils 19,90 EUR inkl. UmSt.

Das Benutzerhandbuch beginnt dabei mit der Philosophie und den Grundüberlegungen hinter Magento, den Vorteilen aber auch Nachteilen dieses Ansatzes und beleuchtet die notwendige Hardwareausstattung sowie sinnvolle Vorüberlegungen. In den nachfolgenden Kapiteln werden dann die einzelnen Menüpunkt abgehandelt – wobei folgende Themenschwerpunkte Schritt-für-Schritt beleuchtet werden:

  • Anlage von Attributen
  • Verwaltung von Attributsets
  • Anlage von Kategorien
  • Einstellung von Produkten
  • Social Media Aspekte (Tags, Produktbewertungen)
  • Kundenverwaltung
  • Sonderaktionen und Preisregeln
  • Bestellhandling
  • Rechnungs- und Gutschriftabwicklung
  • Versandhandling
  • Steuerliche Behandlungen
  • Verwaltung statischer Seiten per CMS
  • Newslettermanagement
  • Tipps und Tricks

Ein klarer, leicht verständlicher Schreibstil sowie zahlreiche Abbildungen helfen die Funktionsvielfalt der Software schnell zu verstehen – auch für Nicht-Techniker. Verständliches und laufend aktualisiertes Wissen auf 150 Seiten!

In Kooperation mit TechDivision verlost hendrikbahr.de 3 Exemplare des Magento Handbuchs!

Zur Teilnahme an der Verlosung füllen Sie das folgende Formular aus. Einsendeschluss ist der 31.Januar 2009, die Gewinner werden per E-Mail informiert.

[contact-form 2 „Gewinnspiel-Formular“]

Nov
03

VMware image für Magento

Wer schon einmal das Shopsystem Magento installiert hat, weiss wovon die Rede ist, wenn von strengen Systemanforderungen die Rede ist. Alexander Steireif hat daher ein komplettes VMware Installationspaket mit einem korrekt konfigurierten Webserver sowie einer laufenden Magento Installation auf Basis von Ubuntu geschrieben und bietet dieses kostenlos zum Download an.

Hier gehts zur Installationsanleitung und zum Download

Apr
21

Magento Shopsoftware Testbericht

Magento ShopsoftwareMagento ist die neue Open Source Shopsoftware am Händlerhimmel. Viel gepriesen und auf dem Zend Framework basierend weckte der Neuling mein Interesse und ich habe mich einmal näher mit dem Projekt auseinandergesetzt.

Erster Eindruck

Die Magento Website kommt saubergestylt in schickem und zeitgemässem Design daher. Dafür, dass das Produkt sehr neu ist, ist es hervorragend präsentiert. Gut gemachte Produktvideos zu Frontend und Adminbereich machen Lust auf mehr. Natürlich fehlen auch die üblichen Elemente wie Wiki, Dokumentation, Community und Entwicklerforum nicht – allerdings sind diese noch nicht ganz so stark gefüllt wie bei der älteren Konkurrenz, z.B. OXID eShop oder XT-Commerce. Der Download ist schnell gemacht und natürlich kostenlos, denn Magento ist ja Open Source.

Screens

Basis Zend Famework

Das Zend Framework finde ich äußerst spannend! Der konsequente Model-View-Controller Ansatz von Zend ist absolut der Weg der Zukunft. Der Aufbau des Frameworks ähnelt sehr stark dem von z.B. Symfony, also eine grosse library mit zahlreichen Framework Funktionen, Die nutzung einer Datenbankabstraktion und die strikte Trennung von Anwendungslogik und Templates. Einziger Nachteil des Frameworks (und des ganzen MVC Konzeptes) ist der erhöhte Performancebedarf, der jedoch durch etwas größer dimensionierte Hardware und Caching kompensiert werden kann. Mehr zum Thema Magento Performance hat die TechDivision geblogt.

Ich finde es äußerst spannend mit einem Shopsystem zu arbeiten, welches nicht seinen eigenen MVC Rahmen bastelt, sondern auf einem optimierten Framework aufbaut. Das garantiert, dass sämtliche nur denkbaren Änderungen und Erweiterungen eigentlich problemlos integrierbar sein sollten. Ausserdem wird schnell jeder Programmierer, der das Zend Framework kennt, auch mit Magento zurecht kommen.

Installation

Im Installationspaket von Magento sind alle benötigten ZEND Framewor Bibliotheken enthalten. Daher ist die Installation – vorrausgesetzt man erfüllt mit PHP 5.2 alle Systemvorraussetzungen – durch das 5 schrittige Setup Prozedere denkbar einfach. Also ZIP Archiv herunterladen, auf den Webserver entpacken und die Domain aufrufen. Automatisch wird das Setup gestartet. Nach Angabe der Datenbankzugänge und Länderauswahl ist man dann auch schon fertig und kann in en Adminbereich wechseln oder sich das Frontend ansehen.

Im Admin erwarten den Anwender zahlreiche Optionen, doch sind diese sehr übersichtlich gegliedert – eine wahre Freude an Backend. Und wenn man einmal alle durchgeklickt hat, sind es dann doch auch nicht mehr so viele. Nach einigen Grundeinstellungen können dann auch schon die ersten Produkte eingetragen werden. Der Shop kommt mit einem vollständigen Demolayout – also kanns sofort losgehen…

Features

Die Produktpflege basiert ganz stark auf dem Prinzip von Attributen, auch Varianten – in Magentosprache „configurable products“, lassen sich darüber generieren. Ansonsten gibt es alle üblichen Shopfeatures: Crosselling, Bezahlmethoden, Newsletter, Versandmethoden, Kundenkonto, Wishlist etc. Auch ein sehr komfortables CMS ergänzt das Shopsystem. So lassen sich Promotionseiten, Landing Pages und Kundeninformationen komfortabel über das Backend pflegen und anlegen. Bewertungs- und Kommentarfunktion, Tell a friend und andere Communityfeatures runden das Programm ab.

Besonders ist auch die Möglichkeit Multishops, also mehrere Frontends aus einem Admin, zu erzeugen, wobei die Konfiguration noch etwas umständlich ist und wohl noch nicht viel Praxiserfahrung damit gemacht wurde.

Deutscher Markt

Problematisch ist natürlich bei Magento, dass es ein amerikanisches Produkt ist. Es ist einfach nicht für den Deutschen Markt entwickelt worden und erfüllt keinerlei rechtliche Anforderungen wie z.B. das „inkl. MwSt. zzgl. Versandkosten“ bei der Preisdarstellung, das Häkchen zum AGB akzeptieren im Checkout, eine Datenschutzerklärung etc. – ich glaube sogar gesehen zu haben, dass man Kreditkartendaten speichern kann. Umsatzsteuerausweisung gibt es nicht – weder im Warenkorb noch in der Bestellbestätigung. Auch habe ich es erstmal nicht hinbekommen, den Shop auf Deutsch umzustellen, obwohl ich es bestimmt 1,5 Stunden lang mit Forum und Wikirecherche versucht habe. So sind der Adminbereich sowie alle Beschriftungen wie „add to cart“ statt „in den Warenkorb“ englisch. Aber das soll sich wohl laut Forum irgendwie lösen lassen…

Fazit

Magento ist eine neue Entwicklung auf dem Shopmarkt. Das bringt Schwung und Konkurrenzdruck für die Mitbewerber und mit Sicherheit auch ein hervorragendes System auf einer soliden Framework Basis – etwas, was nach jahrzentelanger Nutzung von OS und XT Commerce mal Zeit wurde. Aktuellste Techniken und ein hervorragender Communityansatz werden dem Shopsystem mit Sicherheit viele gute Jahre bescheren, für den breiten Markt ist die Software allerdings noch nicht reif. Das liegt an der Deutschland-spezifischen Problematik und daran, dass es einfach noch zu wenig Erfahrungen, Third Party Module und Schnittstellen für das System gibt. So wird man sich derzeit als Shopbetreiber noch oft als Pionier mit einer Problematik auseinandersetzen, die bei anderen Systemen schon vor Jahren gelöst wurde. Für Entwickler sicherlich eine Freude – für Shopbetreiber sicherlich an vielen Stellen teurer als eine für den deutschen Markt ausgereifte kostenpflichtige Shoplösung wie z.B. OXID eShop – aber das kann sich mit der Zeit ändern!