Knowledgebase:Shop
Contents
- 1 Kurzbeschreibung
- 2 Mehrsprachigkeit (ab Contrexx 3.0.0)
- 3 Dateien
- 4 Kategorien
- 5 Produkte
- 6 Warenkorb
- 6.1 Anzahl der Artikel angeben, die in den Warenkorb gelegt werden
- 6.2 Dynamischer JavaScript Warenkorb
- 6.3 Gewicht
- 6.4 Versandkosten
- 6.5 Schnittstelle
- 7 Zahlungssysteme
- 8 Mailvorlagen
- 9 Status der Bestellungen
- 10 Platzhalter
- 11 Login
- 12 Import
- 13 FAQ
Kurzbeschreibung
Contrexx® bietet Ihnen eine modulare Web Content Management Lösung mit integrierter Webshop Software und dies zu einem äusserst kostengünstigen Preis-/ Leistungsverhältnis. Das umfangreiche Webshop System kann bequem per Webinterface administriert und voll an die Bedürfnisse des Betreibers angepasst werden. Contrexx® und das Shopsystem wurden komplett auf der Basis modernster Web Technologien (PHP Webshop) entwickelt und sind systemunabhängig und vollständig in Ihre Geschäftsprozesse integrierbar. Somit ist die Basis für langfristigen und nachhaltigen Erfolg Ihres Online-Handels gelegt
Mehrsprachigkeit (ab Contrexx 3.0.0)
Übersicht
Ab der Version 3.0.0 können bis auf wenige Ausnahmen alle Daten im Shop in allen aktiven Frontendsprachen erfasst, bearbeitet und angezeigt werden.
Auswahl der bearbeiteten Sprache
Die Wahl der Sprache erfolgt -- sofern mehrere Sprachen im Frontend aktiviert sind -- über das Dropdown Menu rechts oben. Beachten Sie, dass die Speicherung separat für jede Sprache erfolgt; jede Bearbeitung muss also erst gespeichert werden, bevor die Sprache gewechselt wird. Ansonsten gehen die gemachten Änderungen verloren.
Dateien
- Alle Dateien des Shop Moduls liegen im Verzeichnis modules/shop/
Kategorien
Kategorienbilder
Als Kategorienbild wird jeweils der erste Produktebild in der entsprechenden Kategorie gewählt. Mittels Produktsortierung kann somit das gewünschte Kategorienbild festgelegt werden.
Mit dem folgenden Block kann nun auf den Shop Inhaltsseiten ein Link angezeigt werden, der zur nächsten Kategorie navigiert:
<!-- BEGIN shopNextCategoryLink --> <a href="?section=shop&catId=[[SHOP_NEXT_CATEGORY_ID]]" title="Weiter zu [[SHOP_NEXT_CATEGORY_TITLE]]..."> Weiter zu [[SHOP_NEXT_CATEGORY_TITLE]]... </a> <!-- END shopNextCategoryLink -->
Fügen Sie diesen Programmcode in Produktseiten ein (Content Manager, Seite "Online Shop" oder "Sonderangebote").
Zeilenumbruch zwischen Kategorien
Mit dem Standartinhalt der Shop Übersichtsseite werden jeweils vier Kategorien nebeneinander dargestellt. Soll diese Zahl verändert werden folgen Sie bitte dieser Anleitung:
In neueren Versionen[?] ist der Code bereits so modifiziert worden, dass dies über eine reine Anpassung der Seitenvorlage erreicht werden kann. Sie können prüfen ob dies bei Ihnen der Fall ist, indem Sie in der Seitenvorlage der Shop Startseite die Kommentare für den Block "subCategoriesRow" anders anordnen. Hinweise:
- Sie müssen dafür in den Quellcode Modus des WYSIWYG Editors wechseln.
- Erstellen Sie ein Backup der Vorlage, damit Sie sie bei Problemen leicht wieder herstellen können.
Hier ein Beispiel mit vereinfachtem Inhalt. Einige Platzhalter und etwas HTML wurden entfernt, um die wesentliche Änderung hervorzuheben:
<pre> <div class="categories"> <h2>[[TXT_SHOP_CATEGORIES]]</h2> <!-- BEGIN subCategoriesRow --> <!-- BEGIN subCategories --> <article class="col-13 info-item">[[SHOP_CATEGORY_NAME]]</article> <!-- END subCategories --> <br style="clear: both;" /> <!-- END subCategoriesRow --> </div> </pre>
Daraus wird dann
<pre> <div class="categories"> <h2>[[TXT_SHOP_CATEGORIES]]</h2> <!-- BEGIN subCategories --> <article class="col-13 info-item">[[SHOP_CATEGORY_NAME]]</article> <!-- END subCategories --> <!-- BEGIN subCategoriesRow --> <!-- END subCategoriesRow --> </div> </pre>
Auch der <br> Tag für den forcierten Zeilenumbruch ist entfernt worden, der in der ursprünglichen Version jeweils nach vier Kategorien eingefügt wurde. Wenn Sie Ihre Vorlage entsprechend bearbeitet und gespeichert haben können Sie prüfen, ob die Seite im Frontend korrekt angezeigt wird. Nun wird die Ausgabe der Kategorien rein durch das Verhältnis der Breiten von Inhaltsseite und einzelner Kategorie bestimmt, vorausgesetzt natürlich, dass die umgebenden Elemente entsprechend "floaten".
Sollte es mit dieser Änderung gar nicht klappen oder Ihr Design nicht die Voraussetzungen für das dynamische Umbrechen erfüllen, müssen Sie in den PHP Code eingreifen. Stellen Sie zuerst die frühere Seitenvorlage wieder her.
Die folgende Änderung betrifft die Datei /modules/shop/index.class.php, Methode showCategories() (ca. ab Zeile 820):
if (self::$objTemplate->blockExists('subCategories')) { self::$objTemplate->parse('subCategories'); if (++$cell % 4 == 0) { self::$objTemplate->parse('subCategoriesRow'); } }
Hier können Sie ausdrücklich einen anderen Wert für die Zahl der Kategorien angeben, nach der jeweils ein Zeilenumbruch eingefügt werden soll, z.B. drei:
if (self::$objTemplate->blockExists('subCategories')) { self::$objTemplate->parse('subCategories'); if (++$cell % 3 == 0) { self::$objTemplate->parse('subCategoriesRow'); } }
Produkte
Produktebilder
Zu jedem Produkt im Shop können Sie maximal drei verschiedene Bilder auswählen, die mit den übrigen Daten angezeigt werden. Die Bilddateien müssen auf dem Server im Verzeichnis /images/shop abgelegt werden, danach können sie Produkten zugeordnet werden. Unter "Module" -> "Shop" wählen Sie "Produkte", und klicken danach auf das Produkt. Im Register "Produktebild" klicken Sie auf "Bild wählen", darauf öffnet sich ein neues Fenster mit der Liste aller zur Verfügung stehenden Produktebilder. Durch einen einfachen Klick auf eine Datei sehen Sie eine Vorschau, ein Doppelklick wählt das Bild aus und schliesst das zweite Fenster wieder. Das Produktebild erscheint dann in der entsprechenden Position in den Produkteeinstellungen. Klicken Sie auf "Speichern", um Ihre Änderungen zu bestätigen.
In der gegenwärtigen Version werden von den Produktebildern automatisch Vorschaubilder (Thumbnails) mit einer Grösse von maximal 80 x 80 Punkten erzeugt. Diese werden im Shop zusammen mit den Produktedaten angezeigt; durch einen Klick auf die Vorschau kann der Kunde das Originalbild in voller Grösse anzeigen lassen. In der nächsten Version wird es möglich sein, die Breite, Höhe und Qualität der Vorschaubilder in den Shop Einstellungen anzugeben. Diese Einstellung gilt jeweils nur für neu erzeugte Thumbnails, nicht aber für bereits bestehende!
Produkteanzahl
Die Anzahl der Produkte, welche auf einer Seite dargestellt werden sollen, können in den Grundeinstellungen geändert werden. Diese sind im Backend im Bereich 'Administration' zu finden. Im Feld "Datensätze pro Seite" kann ein Wert zwischen 1-200 eingegeben werden (Standart ist auf 30). Diese Zahl bedeutet, dass soviele Datensätze pro Seite angezeigt werden.
Zu beachten ist, dass diese Einstellungs sich auch auf andere Module auswirkt (z.B. Gästebuch, News...)
Produkte für Downloads
Wenn Sie elektronische Produkte (Software, Dokumente, etc.) zum Verkauf anbieten wollen, müssen Sie in der Benutzerverwaltung eine dafür reservierte Gruppe anlegen. Im allgemeinen wird für jedes Produkt eine eigene Benutzergruppe angelegt, die den Namen oder den Artikelcode dieses Produktes als Name erhält. So behalten Sie über die Zuordnungen einfacher den Überblick.
Bereiten Sie eine Seite für den Download des Artikels vor. Je nach der Edition von Contrexx, die Sie verwenden, haben Sie dafür unterschiedliche Möglichkeiten zur Auswahl. Als Beispiel sei hier die Verwendung statischer Seiten erläutert:
Erstellen Sie im Content Manager eine neue Seite mit dem Link auf den Download, und wählen Sie im Register "Frontend Zugangsberechtigung" erst "Seite ist passwortgeschützt", und danach ordnen Sie der Seite die zuvor angelegte Gruppe zu.
Fügen Sie einen Link zum Download ein, und ergänzen Sie die Seite mit den nötigen Erläuterungen.
Das Vorgehen mit dem Digital Asset Management Modul ist vergleichbar; dort wird die entsprechende Benutzergruppe stattdessen dem Download zugewiesen.
Wählen Sie anschliessend im Shop das Produkt zum bearbeiten (oder legen Sie ein neues an). Stellen Sie dessen Produkttyp auf "Benutzerkonto" und wählen Sie eine angemessene Gültigkeitsdauer für
die beim Kauf angelegten Benutzerkonten. Dies bestimmt die Zeitdauer, die der Kunde für den Download zur Verfügung hat, bevor das Konto automatisch deaktiviert wird.
Weisen Sie die vorher angelegte Benutzergruppe dem Produkt zu. Dies ist notwendig, damit der Kunde die Berechtigung für den Download erhält.
Fügen Sie ausserdem einen Link auf die vorbereitete Download Seite oder den Download im Digital Asset Management Modul in die Beschreibung des Artikels ein. Da die Seite bzw. der Download geschützt sind, werden Ihre Kunden erst nach dem Kauf auf diese Seite zugreifen können.
Wenn Sie alle übrigen Daten des Artikels erfasst haben, speichern Sie die Änderungen durch einen Klick auf "speichern".
Der Kunde wird nach dem Einkauf automatisch die Zugangsdaten für den Download in seinem Bestätigungsmail erhalten.
Warenkorb
Anzahl der Artikel angeben, die in den Warenkorb gelegt werden
Damit der Kunde bereits bei der Auswahl des Artikels die gewünschte Menge angeben kann, wird in der entsprechenden Seitenvorlage der Anwendung (Anwendung/Bereich: shop/- bzw. shop/details) ein Eingabeelement mit dem Attribut name="productQuantity" eingefügt, zum Beispiel ein Textfeld gleich vor dem "In den Warenkorb"-Button:
<input type="text" name="productQuantity" value="1" class="shop-product-quantity" maxlength="3" /> <button class="add-to-cart" type="submit" onclick="[[SHOP_PRODUCT_SUBMIT_FUNCTION]]" name="[[SHOP_PRODUCT_SUBMIT_NAME]]">
Das <input> Element wird nun vor dem Warenkorb-Button in der Produkteansicht angezeigt.
- Das Attribut "value" kann nach Bedarf andere Werte als Vorgabe erhalten, sinnvoll ist in der Regel "1", allenfalls "0" (falls der Kunde ausdrücklich die Menge selber angeben soll).
- Die Formatierung des Elements kann über ein beliebiges "class" Attribut, die direkte Angabe im "style" Attribut oder auf andere Weise erfolgen.
- Das Attribut "maxlength" beschränkt die Angabe auf eine bestimmte Anzahl Zeichen/Ziffern; mit zusätzlichem Javascript lässt sich auch eine Eingabeprüfung realisieren.
Der darauffolgende "<button>" ist in den Vorlagen des Shops bereits vorhanden, in älteren Versionen wurden allerdings unterschiedliche Elemente eingesetzt.
Wesentlich ist, dass das Element für die Mengenangabe innerhalb des <form> Tags eingesetzt wird, der das einzelne Produkt umgibt.
Anstelle des Textfeldes kann auch ein Dropdown Menu (<select>) oder sogar eine Gruppe von Radiobuttons (<input type="radio">) mit vorgegebenen Werten für die Auswahl verwendet werden.
Dynamischer JavaScript Warenkorb
Dynamischer JavaScript Warenkorb -- ab Version 5
siehe Interaktiver_Warenkorb im Platzhalterverzeichnis
Dynamischer JavaScript Warenkorb -- ab Version 3.0
Im mehrsprachigen Shop ab dieser Version wird das Format der Artikel im Warenkorb individuell pro Sprache über ein Format in den Sprachdateien definiert. Diese Platzhalter befinden sich im Ordner modules/shop/lang/<Sprache>/frontend.php, wobei "<Sprache>" für das Kürzel der Sprache steht (de für Deutsch usw.).
<!-- BEGIN shopJsCart --> <div id="shopJsCart"> <ul> <li><a href="index.php?section=shop&cmd=cart" class="title">[[TXT_SHOP_CART]]</a></li> <!-- BEGIN shopJsCartProducts --> <li class="product">[[TXT_SHOP_CART_JS_FORMAT_PRODUCT]]</li> <!-- END shopJsCartProducts --> <li class="total">[[TXT_SHOP_CART_JS_FORMAT_TOTAL]]</li> <li class="link"><a href="index.php?section=shop&cmd=cart" title="[[TXT_SHOP_MAKE_ORDER]]">[[TXT_SHOP_SHOW_CART]]</a></li> <li class="link"><a href="index.php?section=shop&act=destroy" title="[[TXT_SHOP_NEW_ORDER]]">[[TXT_SHOP_EMPTY_CART]]</a></li> </ul> </div> <!-- END shopJsCart -->
BEACHTEN SIE: das äusserste Blockelement, welches den Warenkorb definiert, muss ein Attribut "id" mit dem Wert "shopJsCart" haben (wie in den Beispielen oben):
id="shopJsCart"
Sie können den Warenkorb-Code fast beliebig platzieren, sowohl in der Navigationsleiste als auch innerhalb einer Shopseite.
Formatierung des dynamischen Warenkorbes (ab Version 3.0.0)
Alle Platzhalter in der Vorlage werden durch die entsprechenden Einträge aus der betreffenden Sprachdatei ersetzt, soweit vorhanden. Die beiden Platzhalter [[TXT_SHOP_CART_JS_FORMAT_PRODUCT]] und [[TXT_SHOP_CART_JS_FORMAT_TOTAL]] können dabei als Formatvorlagen verwendet werden. Gemäss ihrem Inhalt werden die Artikel- bzw. Bestelldaten eingesetzt; dies wird hier anhand der Einträge in der Datei /modules/shop/lang/de/frontend.php erläutert:
[...] $_ARRAYLANG['TXT_SHOP_CART_JS_FORMAT_PRODUCT'] = "[[SHOP_JS_PRODUCT_QUANTITY]]x [[SHOP_JS_PRODUCT_TITLE]]<br />([[SHOP_JS_PRODUCT_PRICE]] [[SHOP_JS_TOTAL_PRICE_UNIT]])"; $_ARRAYLANG['TXT_SHOP_CART_JS_FORMAT_TOTAL'] = "Total [[SHOP_JS_PRODUCT_COUNT]] Artikel im Wert von<br /><b>[[SHOP_JS_TOTAL_PRICE]] [[SHOP_JS_TOTAL_PRICE_UNIT]]</b>"; [...]
Im einzelnen werden die Platzhalter in der Ansicht des Warenkorbes durch folgende Werte ersetzt:
[[SHOP_JS_PRODUCT_QUANTITY]]: Menge pro Artikel im Warenkorb [[SHOP_JS_PRODUCT_TITLE]]: Bezeichnung des Artikels (Produktename) [[SHOP_JS_PRODUCT_PRICE]]: Einzelpreis pro Artikel [[SHOP_JS_PRODUCT_COUNT]]: Gesamtzahl aller Artikel im Warenkorb [[SHOP_JS_TOTAL_PRICE]]: Gesamtpreis aller Artikel im Warenkorb [[SHOP_JS_TOTAL_PRICE_UNIT]]: Währungscode (z.B. "CHF")
Struktur der für den dynamischen Warenkorb übertragenen Daten
Mit eigenem JS Code können Sie Umfang und Aussehen des Warenkorbes nach eigenen Bedürfnissen gezielt erweitern. Bei Einsatz des JS Cart werden per AJAX die folgenden Daten in JSON für einzelne Artikel und die Bestellung an die Ansicht im Browser gesendet:
{ items: { // Für jeden einzelnen Artikel: (Cart ID): { id: (Produkt ID), product_id: (Artikelnummer), cart_id: (Cart ID), title: (Bezeichnung des Artikels, Produktename) options: { (ID des Produktmerkmals): [ (Liste der IDs aller zugeordneten Optionen, oder Textinhalt für Eingabefelder) ], [... weitere Produktemerkmale ...] }, options_long: (Produkteoptionen, lange Form), options_cart: (Produkteoptionen, kurze Form), price: (Preissumme, Einzelpreis inkl. Produktoptionen x Menge), quantity: (Menge pro Artikel im Warenkorb), itemprice: (Einzelpreis pro Artikel, inkl. Produktoptionen), discount_amount: (Total rabattierter Betrag gemäss Gutscheincode auf diesem Artikel); vat_rate: (MwSt. Satz in %), vat_amount: (MwSt. Betrag), itemweight: (Gewicht des Einzelartikels, in Gramm), weight: (Gewicht des Artikels x Menge, in Gramm),, group_id: (ID der dem Artikel zugeordneten Mengenrabattgruppe), article_id: (ID der dem Artikel zugeordneten Artikelgruppe [Hinweis: das ist *NICHT* die Rubrik!]), }, }, total_price: (Artikelsumme), item_count: (Anzahl Artikel im Warenkorb), unit: (Währungscode, z.B. "CHF" }
Dynamischer JavaScript Warenkorb -- bis und mit Version 2.2
Damit der JavaScript Warenkorb verwendet werden kann, muss in der Konfigurationsdatei config/configuration.php die Eigenschaft shopJsCart auf true gesetzt werden:
$_CONFIGURATION['custom']['shopJsCart'] = true
Die Struktur des Warenkorbes, dass im Template platziert werden muss, sieht folgendermassen aus:
<!-- BEGIN shopJsCart --> <div id="shopJsCart"> <div id="shopJsCartTitle">Warenkorb</div> <div style="text-indent:2px;"> <!-- BEGIN shopJsCartProducts --> [[SHOP_JS_PRODUCT_QUANTITY]] x [[SHOP_JS_PRODUCT_TITLE]] ([[SHOP_JS_PRODUCT_PRICE]] [[SHOP_JS_TOTAL_PRICE_UNIT]])<br /> <!-- END shopJsCartProducts --> Total [[SHOP_JS_PRDOCUT_COUNT]] Artikel im Wert von [[SHOP_JS_TOTAL_PRICE]] [[SHOP_JS_TOTAL_PRICE_UNIT]]<br /> <br /> <a href='?section=shop&cmd=cart' title="weiter zur Bestellung...">Warenkorb anzeigen</a> </div> </div> <!-- END shopJsCart -->
Die enthaltenen Platzhalter werden analog zur Version 3 (siehe unten) ersetzt; allerdings stehen die Spracheinträge für die Definition individueller Formatierungen vor Version 3 nicht zur Verfügung.
Gewicht
Zu jedem Produkt kann ein Gewicht eingegeben werden. Dies dient nicht nur der Information, sondern auch der Berechnung der Versandkosten.
Beachten Sie, dass das Gewicht je nach Grössenordnung mit einer entsprechenden Einheit angezeigt wird. Dies funktioniert auch beim erfassen und bearbeiten eines Produkts; geben Sie im Gewichtsfeld einfach den Wert gefolgt von der Einheit an. Wenn Sie keine Einheit angeben, wird der Wert als Gramm interpretiert.
Zur Zeit erkennt das Programm die Einheiten g (Gramm), kg (Kilogramm) und t (Tonne).
Bei der Anzeige wählt das Programm automatisch eine geeignete Einheit, dabei kann der Wert gerundet werden. Bei der Berechnung der Versandkosten (s.u.) wird aber der genaue gespeicherte Wert verwendet.
Beachten Sie: Das kleinste mögliche Gewicht, und damit auch die maximale Genauigkeit, ist 1 Gramm.
Einige Beispiele:
Eingabe | gespeicherter Wert (Gramm) | angezeigt als |
---|---|---|
1 | 1 | 1 g |
9000 | 9000 | 9 kg |
1001 | 1001 | 1.001 kg |
10001 | 10001 | 1 kg |
1.234kg | 1234 | 1.234 kg |
2.34567 kg | 2345 | 2.345 kg |
0.67 t | 670000 | 670 kg |
Versandkosten
Die Versandkosten lassen sich deutlich flexibler gestalten, mit verschiedenen Tarifen in Abhängigkeit vom Gewicht und dem Bestellwert.
Jede Versandart umfasst folgende Felder:
- Versandart: Die Bezeichnung für die Versandart. Beispiele: Schweizerische Post, Cargo Domizil, Abholen
- Zone: Gültigkeitsbereich der Lieferart. Wählen Sie hier eine Zone, die Sie unter Einstellungen->Zonen eingestellt haben.
- Aktiv: Der Haken aktiviert bzw. deaktiviert die Versandart. Ist eine Versandart inaktiv, wird sie im Frontend nicht angezeigt.
Beachten Sie: Sie müssen mindestens eine Versandart konfiguriert und aktiviert haben, um den Shop sinnvoll einsetzen zu können! Verwenden Sie beispielsweise eine gebührenfreie Dummy-Versandart namens "Abholen" mit unbeschränktem Gewicht, falls Sie keine Produkte versenden müssen oder wollen.
Die folgenden Felder stehen beliebig oft pro Versandart zur Verfügung. Damit lassen sich Konditionen für alle möglichen Bestellsummen und Gewichte definieren:
- Maximalgewicht: Das maximale Gewicht für die Konditionen auf dieser Zeile
- Gebührenfrei ab: Die Gebühr entfällt ab dieser Gesamtbestellsumme (auschliesslich Gebühren für Bezahlung und Versand)
- Versandgebühr: Dieser Wert wird zum Rechnungsbetrag addiert
Beachten Sie: Wenn Sie das Feld "Maximalgewicht" für eine oder mehrere Konditionen leer lassen, können zu diesen Bedingungen beliebig schwere Bestellungen getätigt werden!
Das Programm wählt für die vom Kunden gewählte Versandart die kleinste passende Gebühr für seinen Bestellumfang aus.
Schnittstelle
Es steht eine einfache Schnittstelle für Import und Export von Shop Daten zur Verfügung.
Beide verarbeiten die Daten in einem MS Excel kompatiblen CSV Format, bei dem die Felder in doppelte Anführungszeichen gesetzt und durch Semikola getrennt werden.
WICHTIGER HINWEIS:
Das CSV Format ist nicht für die Sicherung oder Wiederherstellung von Daten geeignet. Die so exportierten Daten bilden nicht die tatsächliche Datenstruktur in der Datenbank ab und sind damit unvollständig.
Verwenden Sie den CSV Import ausschliesslich für einen initialen Import. Er ist dafür ausgelegt, Ihnen das Übernehmen der Texte und Preise Ihrer Artikel zu erleichtern, damit Sie diese nicht erneut eintippen müssen. In jedem Fall werden Sie weitere Anpassungen an diesen Rohdaten vornehmen müssen (z.B. Mehrwertsteuer, Bilder, Hersteller zuordnen).
Zahlungssysteme
Lastschrift
Der Shop unterstützt nun die Zahlungsmethode Lastschrift.
Diese wird, wie alle anderen Zahlungsarten, im Backend unter Einstellungen->Zahlungsarten aktiviert und konfiguriert.
Zusätzlich muss für die Verwendung von LSV das Einzugsformular (Seitenvorlage "Einzugsermächtigung" im Content Manager) in der Shopnavigation und/oder in der Seitenvorlage "Bezahlung und Versand" verlinkt werden, damit der Kunde dies ausfüllen und drucken kann.
Die Kontonummer wird auf dem unterzeichneten und per Fax oder Post übermittelten Formular angegeben (siehe z.B. http://demo.contrexx.com/de/index.php?section=shop&cmd=lsv).
Sie wird aus Sicherheitserwägungen nicht im Shop gespeichert und daher auch nicht während der Bestellung erfasst.
Kreditkarten
Payrexx (ab v5.0)
Siehe Payrexx
Paypal
Siehe Paypal
PostFinance E-Payment
Siehe PostFinance E-Payment
Saferpay eCommerce
Wichtiger Hinweis: Für die Initialisierung der Bezahlung muss eine Verbindung zum Server von Saferpay hergestellt werden. Damit dies möglich ist, muss in der Konfiguration von PHP die Option "allow_url_fopen" aktiviert (auf "On") sein. Kontaktieren Sie Ihren Hosting Anbieter, wenn Sie Saferpay einsetzen wollen und diese Option auf Ihrem Server ausgeschaltet ist.
Adminpay - Swiss Post Solutions AG
Adminpay - Swiss Post Solutions AG
Success
Rückkehr zum Online Shop nach erfolgreichem Abschluss der Bezahlung:
Failed
Rückkehr zum Online Shop nach missglückter Bezahlung:
Abort
Rückkehr zum Online Shop nach Abbruch der Bezahlung:
Rückgabe
Rückgabe 1 (Rückmeldung einer erfolgten Transaktion an den Shop):
Rückgabe 2 (Rückmeldung einer erfolgten Transaktion per E-Mail):
- Eine beliebige gültige E-Mail Adresse
Datatrans (ab Version 2.1.0)
URIs mit Rückgabeparametern
Um die Bezahlung über Datatrans zu verwenden, benötigen Sie die folgenden URIs zur Konfiguration. Setzen Sie anstelle von "YOURDOMAIN" den vollständigen Namen Ihrer Domain bzw. Ihres Webservers ein, z.B. "www.contrexx.com".
Erfolgreiche Bezahlung
Rückkehr zum Online Shop nach erfolgreichem Abschluss der Bezahlung:
Nicht erfolgreiche Bezahlung
Rückkehr zum Online Shop nach missglückter Bezahlung:
Abbruch der Bezahlung
Rückkehr zum Online Shop nach Abbruch der Bezahlung:
Rückgabe über Post URL
Rückmeldung an den Shop über den Ausgang der Bezahlung
- http://YOURDOMAIN/index.php?section=shop&cmd=success&handler=datatrans&result=-1
- WICHTIG: Beachten Sie das Vorzeichen "-" vor der "1" am Ende des URL.
- URL Post Datenformat: "Daten in Post Format" ankreuzen
Wichtiger Hinweis: Verwenden Sie im übrigen die Standarteinstellungen. Aktivieren Sie insbesondere keine der zusätzlichen Sicherheitsparameter "sign" oder "sign2"!
Authorize.net
Online Shop Einstellungen
Unter http://YOURDOMAIN/cadmin/index.php?cmd=shop&act=settings&tpl=general nehmen Sie die folgenden Einstellungen vor:
- Module -> Shop -> Einstellungen, Register "Zahlungsanbieter":
- "Authorize.net" -> edit
- Login: Tragen Sie Ihr authorize.net Login ein
- Authorisierung: Wählen Sie entweder "Authorization and capture" (empfohlen), oder "Authorization only"
- Transaction Key: Wählen Sie einen beliebigen Schlüssel. Bemerkung: Die gleiche Zeichenfolge müssen Sie in den authorize.net Einstellungen eintragen.
- MD5 Hash: Wählen Sie einen beliebigen Schlüssel. Bemerkung: Die gleiche Zeichenfolge müssen Sie in den authorize.net Einstellungen eintragen.
- Test Server verwenden: Wählen Sie für Testzwecke "Ja", für produktive Systeme "Nein".
- Vergewissern Sie sich, dass diese Einstellung auf "Nein" gestellt ist, bevor Sie echte Zahlungen verarbeiten!
- "Authorize.net" -> edit
Authorize.net Einstellungen
URIs:
- Test: https://test.authorize.net/
- Produktion: https://account.authorize.net/
Nehmen Sie unter "Account" -> "Settings" die folgenden Einstellungen vor:
- "Transaction Format Settings"/"Response/Receipt URLs":
- "Default Receipt URL" -> "Edit" klicken
- URL: http://YOURDOMAIN/index.php?section=shop&cmd=success&handler=authorizenet&result=1
- Method: POST
- Link: Eine beliebige Beschriftung für den Button, der zurück zu Ihrem Shop führen soll, z.B. "Zurück zum Online Shop von YOURDOMAIN"
- "Default Relay Response URL": Leer lassen (falls gesetzt, klicken Sie "Edit" und löschen Sie das Feld, klicken Sie danach auf "Submit")
- "Default Receipt URL" -> "Edit" klicken
- "Transaction Format Settings"/"Silent Post URL"
- "Security Settings"/"MD5-Hash"
- MD5 Hash: Tragen Sie die gleiche Zeichenkette ein, die Sie im Shop Backend als "MD5 Hash" gewählt haben.
- "Security Settings"/"API Login ID and Transaction Key":
- Transaction Key: Tragen Sie die gleiche Zeichenkette ein, die Sie im Shop Backend als "Transaction Key" gewählt haben.
- "Security Settings"/"Test Mode"
- Vergewissern Sie sich, dass Ihr Konto sich im "LIVE MODE" befindet, bevor Sie echte Zahlungen verarbeiten!
Mailvorlagen
Bis und mit Version 2.2
Vier Standartvorlagen für E-Mails sind im Shop vorhanden. Diese werden nach Bedarf automatisch oder halbautomatisch versandt, abhängig vom Status der Bestellung und den bestellten Artikeln.
Wichtige Hinweise: Die Systemvorlagen können und sollen bearbeitet und an individuelle Bedürfnisse angepasst werden. Allerdings ist zu beachten, dass sie per ID in der Datenbanktabelle gesucht werden (siehe folgende Liste). Sie sollten daher die Vorlagen nicht mit direkten Manipulationen an der Datenbank verändern, wenn dadurch die eindeutigen und erforderlichen IDs der Einträge verändert werden. Falls dies passiert müssen die Originalinhalte der Tabellen [Präfix]module_shop_mail und [Präfix]module_shop_mail_content wieder hergestellt oder die IDs der vorhandenen Einträge in der Datenbank manuell korrigiert werden. Letzteres sollte nur durch einen Fachmann mit den notwendigen Kenntnissen durchgeführt werden.
Bestellungsbestätigung (Systemvorlage) (ID 1)
Wird nach einer erfolgreichen Bestellung als Bestätigung an den Kunden und an die in den Einstellungen angegebene "Adresse für Bestätigungen" gesandt. Siehe Platzhalter in Mailvorlagen.
Bestellungsbestätigung mit Zugangsdaten (Systemvorlage) (ID 4)
Diese Variante der ersten Bestätigung wird nur verwendet, wenn mindestens einer der Bestellten Artikel vom Typ "Benutzerkonto" ist. Ansonsten identisch zur ersten.
Auftrag abgeschlossen (ID 2)
Diese Vorlage wird halbautomatisch versandt, wenn der Bestellungsstatus im Backend auf "abgeschlossen" gesetzt wird und die Frage in der Dialogbox bejaht wird (OK).
Logindaten (ID 3)
Der Kunde kann diese im Frontend abrufen, und der Shopbetreiber kann den Versand an den Kunden nach dem ändern eines Passworts in den Kundendaten manuell auslösen (Checkbox "Zugangsdaten an Kunden senden").
Ab Version 3.0
In der Version 3.0 sind nur noch drei Standartvorlagen für E-Mails vorhanden. Die Vorlagen "Bestellungsbestätigung" und "Bestellungsbestätigung mit Zugangsdaten" wurden zu einer zusammengefasst.
Wichtige Hinweise: Die Systemvorlagen können und sollen bearbeitet und an individuelle Bedürfnisse angepasst werden. Allerdings ist zu beachten, dass sie per Key (Schlüssel) in der Datenbanktabelle gesucht werden (siehe folgende Liste). Sie sollten daher die Vorlagen nicht mit direkten Manipulationen an der Datenbank verändern, wenn dadurch die eindeutigen und erforderlichen Keys der Einträge verändert werden.
Bestellungsbestätigung (Systemvorlage) (Key order_confirmation)
Wird nach einer erfolgreichen Bestellung als Bestätigung an den Kunden und an die in den Einstellungen angegebene "Adresse für Bestätigungen" gesandt. Siehe Platzhalter in Mailvorlagen.
Auftrag abgeschlossen (Key order_complete)
Diese Vorlage wird halbautomatisch versandt, wenn der Bestellungsstatus im Backend auf "abgeschlossen" gesetzt wird und die Frage in der Dialogbox bejaht wird (OK).
Logindaten (Key customer_login)
Der Kunde kann diese im Frontend abrufen, und der Shopbetreiber kann den Versand an den Kunden nach dem ändern eines Passworts in den Kundendaten manuell auslösen (Checkbox "Zugangsdaten an Kunden senden").
Status der Bestellungen
Alle Bestellungen, die im Shop getätigt werden, sind mit einem Status versehen. Dieser gibt Auskunft darüber, wie weit der Bestellvorgang fortgeschritten ist. Der Status wird während und am Ende der Bestellung vom System automatisch auf den aktuellen Wert gesetzt, danach kann er jederzeit und beliebig manuell verändert werden. In der Shop Statistik werden nur Artikel aufgeführt, deren Bestellungen den Status "Bestätigt" oder "Abgeschlossen" haben.
Im folgenden werden die einzelnen Status erläutert.
Pendent
Die Bezahlung wurde entweder noch nicht beendet, unterbrochen, oder es trat ein unbekanntes Problem bei der Bezahlung auf. Bei externen Zahlungsanbietern besteht in der Regel für den Kunden die Möglichkeit, den Zahlungsvorgang zu wiederholen. In diesem Fall wird eine neue Bestellung eingetragen und als "Bestätigt" gekennzeichnet, sobald dies erfolgreich geschehen ist. Die Pendente Bestellung bleibt in der Datenbank und kann im Backend gelöscht werden.
Bestätigt
Die Bestellvorgang wurde erfolgreich abgeschlossen. Bei internen Zahlungsmethoden (Rechnung, Nachnahme, LSV und ähnliche) ist dies der Fall, sobald der Kunde die Bestellung bestätigt hat. (Ab Version 1.1.4:) Bei den externen (PayPal, SaferPay, etc.) wird der Status auf den Wert 'Bezahlt' gesetzt, wenn der Zahlungsanbieter dem System meldet, dass der Kunde den Vorgang erfolgreich - aus der Sicht des Zahlungsanbieters - beendet hat.
Gelöscht
Die Bestellung kann im Backend manuell auf 'Gelöscht' gesetzt werden. Dies geschieht üblicherweise nach Absprache mit dem Kunden.
Annuliert
Der Kunde hat den Bezahlvorgang bei einem externen Anbieter abgebrochen, und dies wurde dem System mitgeteilt. Daraufhin wird der Status der Bestellung automatisch auf diesen Wert gesetzt.
Abgeschlossen (bzw. Erledigt)
Ist die Ware versandt worden, kann die Bestellung im Backend manuell auf 'Erledigt' gesetzt werden. Dem Kunden wird auf Wunsch ein automatisch generiertes E-Mail zugesandt, das ihn über das baldige Eintreffen informiert. (Ab Version 1.1.4:) Der Status einer Bestellung wird automatisch auf diesen Wert gesetzt, wenn sowohl der Vertrieb als auch die Bezahlung bereits während dem Einkauf stattgefunden haben. Dies ist beispielsweise der Fall, wenn eine Datei heruntergeladen wurde (Vertiebsart 'Download'), und diese entweder gratis war, oder online mit Kreditkarte bezahlt wurde. In älteren Versionen von Contrexx hiess dieser Status "erledigt".
Bezahlt
(Ab Version 1.1.4:) Solange eine Bestellung zwar bereits bezahlt, aber noch nicht ausgeliefert worden ist (bei Bezahlung mit Kreditkarte, per Vorkasse oder elektronischen Zahlungsmethoden). Der Status einer Bestellung wird automatisch auf diesen Wert gesetzt, wenn die Bezahlung bereits während dem Einkauf stattgefunden hat, nicht aber der Vertrieb. Dies ist beispielsweise der Fall, wenn ein Buch gekauft und online mit Kreditkarte bezahlt wurde.
Versandt
(Ab Version 1.1.4:) Solange eine Bestellung zwar bereits versandt, aber noch nicht bezahlt worden ist (bei Lieferung gegen Rechnung, per Nachnahme). Der Status einer Bestellung wird automatisch auf diesen Wert gesetzt, wenn der Vertrieb bereits während dem Einkauf stattgefunden hat, die Bezahlung aber noch aussteht. Dies ist beispielsweise der Fall, wenn eine Datei heruntergeladen wurde (Vertiebsart 'Download'), und diese auf Rechnung gekauft wurde.
Platzhalter
Platzhalter der Seitenvorlagen siehe unter Platzhalterverzeichnis
E-Mail Vorlagen
Versionen bis und mit 2.2.x
Die Platzhalter, die in den E-Mail Vorlagen verwendet werden können, sind im Register "Platzhalter Verzeichnis" aufgeführt.
Ab Version 3.0.0
Siehe Shop - E-Mail Vorlagen
Platzhalter für Mehrwertsteuer Nummer und -Satz?
Leider gibt es für die MwSt. Nummer und den Prozentsatz noch keine Platzhalter, damit diese automatisch in das Bestätigungsmail eingesetzt werden können.
Da der Satz ausserdem individuell pro Produkt festgelegt werden kann wird dieser auch nicht für die Summe ausgewiesen.
Sie können jedoch den Inhalt der Vorlage für dieses Mail selber bearbeiten und dies von Hand ergänzen; unter Module -> Shop -> Einstellungen -> E-Mail Vorlagen. Klicken Sie dazu bei der Vorlage "Bestellungsbestätigung (Systemvorlage)" auf das grüne Häkchen.
Der Abschnitt "Bestellinformationen" wird jeweils in den Platzhalter "<ORDER_DATA>" eingefügt. Darunter können Sie Ihre Ergänzungen zur Mehrwertsteuer oder ähnliches notieren.
Login
Damit sich Wiederverkäufer anmelden können, ohne dass vorher der Weg durch den Warenkorb gemacht wird, oder um den Shop erst nach erfolgter Anmeldung frei zu geben muss an geeigneter Stelle ein Login Formular eingebaut sein.
Dies kann an beliebiger Stelle geschehen, zum Beispiel in einer speziell dafür eingerichteten Seite oder in der Shop Navbar (shopnavbar.html).
Ein solches HTML Formular hat diese Form:
Anmeldung<br /> <form name="login" action="index.php?section=shop&cmd=login&redirect=c2VjdGlvbj1zaG9w" method="post"> <table border="0"> <tr> <td>E-Mail Adresse:</td> <td><input type="text" maxLength="250" size="20" value="" name="username" /></td> </tr> <tr> <td>Passwort:</td> <td><input type="password" maxLength="50" size="20" name="password" /></td> </tr> <tr> <td> </td> <td><input type="submit" value="Login >>" name="login" /></td> </tr> </table> </form>
Alternative (DIV's) zu der obigen TABLE-Variante
<div id="shop"> <div class="customer_old"> <form name="login" action="index.php?section=shop&cmd=login&redirect=c2VjdGlvbj1zaG9w" method="post"> <h2>[[TXT_SHOP_ACCOUNT_EXISTING_CUSTOMER]]</h2> <div style="padding: 0px 0px 5px;"><label>User Name:</label><input class="contactFormClass_text" name="username" value="[[SHOP_LOGIN_EMAIL]]" maxlength="250" /></div> <div><label>Passwort:</label><input type="password" class="contactFormClass_text" name="password" maxlength="50" /></div> <div style="padding-left: 150px;"><input type="submit" class="loginBtn" name="login" value="" /></div> </form> </div> <div class="message_error">[[SHOP_LOGIN_STATUS]]</div> <div class="customer_new"> <h2>[[TXT_SHOP_ACCOUNT_NEW_CUSTOMER]]</h2> Falls Sie Neukunde sind, erhalten Sie im Lauf der Erstbestellung Ihre Zugangsdaten übermittelt. Bitte benutzen Sie bis dahin den normalen Weg über den Warenkorb.</div> </div>
Das Design und die Texte können nach Belieben angepasst werden.
Der Parameterredirect=c2VjdGlvbj1zaG9wim action Attribut des Formulars sorgt dafür,
dass nach erfolgreicher Anmeldung nicht die Seite mit den Kundendaten, sondern wiederum die Startseite des Shops angezeigt wird. Andere Seiten können ebenfalls angesprungen werden, dafür muss der Parameter (c2VjdGlvbj1zaG9w) durch die base64 codierten URI Parameter ersetzt werden. Beispiele: Sprung zur Kategorie mit der ID 8:
base64_encode("section=shop&catId=8") // ergibt c2VjdGlvbj1zaG9wJmNhdElkPTg=
Sprung zum Passwortwechesel im Shop:
base64_encode("section=shop&cmd=changepass") // ergibt c2VjdGlvbj1zaG9wJmNtZD1jaGFuZ2VwYXNz
Import
Generelles zum Import
- Verwenden Sie Dateien, die ISO-8859-1 (Latin-1) codiert sind. Bei anderen Codierungen können Probleme bei Verwendung von Umlauten und anderen speziellen Zeichen auftreten.
- Kategorien können unabhängig von oder zusammen mit den Produkten importiert und angelegt werden.
- Es werden CSV Dateien zum Import verwendet. Standardvorgabe für Trennzeichen ist ; (Semikolon), und Feldinhalte können optional mit "doppelten Anführungszeichen" umschlossen werden.
Import von Kategorien
Die Kategorien können hierarchisch angelegt werden, so wie sie später im Shop angezeigt werden sollen. Hierbei werden die ineinander verschachtelten Stufen in einzelne Felder hintereinander auf eine Zeile geschrieben, ohne eine Zeile mit Überschriften. Die Kategorien, welche mehrere Unterkategorien enthalten sollen, werden so oft wie nötig wiederholt, mit jeweils anderen Unterkategorien. Mehrfach auftretende Kategorien werden dabei nur einmal angelegt. Die einzelenen Zeilen müssen nicht die gleiche maximale Verschachtelungstiefe aufweisen. Als Beispiel:
Top;Unterkategorie;Unterste Kategorie Top;Andere Unterkategorie
Beim Import dieser Datei wird die folgende Kategoriestruktur erzeugt:
- Top - Unterkategorie - Unterste Kategorie - Andere Unterkategorie
Import von Produkten (mit oder ohne Kategorien)
Diese Dateien müssen eine erste Zeile mit den Überschriften (Feldnamen) enthalten. Die Kategorien können hierarchisch angelegt werden, so wie sie später im Shop angezeigt werden sollen. Hierbei werden die ineinander verschachtelten Stufen in einzelne Felder auf eine Zeile geschrieben, analog zum reinen Import von Kategorien. Die Felder müssen aber nicht zwingend in der richtigen Reihenfolge stehen (s.u.). Alle Produkte Felder werden mit ihren jeweiligen Werten befüllt. Beispiel:
Kat1;Kat2;ArtNr;Name;Beschreibung;Preis Top;Unterkategorie;p123;Produkt Eins;Tolles Produkt;7.95 Top;Andere Unterkategorie;q234;Produkt Zwei;Super Produkt;9.95
Beim ersten Import einer Produktedatei mit bestimmter Anordnung der Felder muss eine Vorlage erstellt werden. Diese hält fest, wie die Felder der Datei auf die Felder der Datenbank abgebildet werden sollen. Die Dateifelder können dabei frei als entweder Kategorienamen oder Produktfelder verwendet werden. Klicken Sie in der Verwaltung des Shopmoduls unter "Schnittstellen" auf die Registerkarte "Neue Vorlage erstellen". Wählen Sie die CSV Datei aus, für die eine Vorlage erstellt werden soll, und klicken Sie auf "Datei hochladen". Im Beispiel werden nacheinander die Felder "Kat1" und "Kat2" in dieser Reihenfolge ausgewählt und durch klicken auf "Kategorie hinzufügen" als Kategorien festgelegt. Danach werden die restlichen Spalten den Feldern des Produktes zugeordnet, zum Beispiel:
ArtNr Produkt Code Name Produkt Name Beschreibung Kurzbeschreibung Preis Preis Endkunde
Wählen Sie dazu jeweils je ein Feld aus der linken und der rechten Spalte aus, und klicken Sie danach auf "Paar hinzufügen". Die Paare werden der Liste unten hinzugefügt, von wo sie mittels "Paar entfernen" wieder gelöscht werden können.
Hinweis: Wenn Sie Produkte importieren ohne mindestens eine Spalte für Kategorien auszuwählen, werden die importierten Produke der Kategorie "Import" zugeordnet. Diese wird automatisch erstellt, falls sie noch nicht existiert bzw. die Kategorien vor dem Import gelöscht werden.
Hinweis: Mehrere Felder aus der Quelldatei können ein und demselben Datenbankfeld zugeordnet werden. Die einzelnen (Text-)Inhalte werden dabei in der Reihenfolge verarbeitet, in der Sie sie einander zuweisen, und im Zielfeld durch einen Zeilenumbruch voneinander getrennt.
Nach dem Speichern der Vorlage wird diese unter "Importieren" ausgewählt und eine Datei mit entsprechendem Format kann damit importiert werden.
Das Ergebnis aus dem Beispiel ist eine Hierarchie von Kategorien mit den zugeordneten Produkten:
- Top - Unterkategorie -> Produkt Eins - Andere Unterkategorie -> Produkt Zwei
Import von Bildern
Produktbilder können auch importiert werden. Dazu muss das zu importierende CSV eine Spalte enthalten, welche den Dateinamen eines Produktbildes enthält. Das Produktbild muss vorgängig zum Import in der Ablage /images/Shop abgelegt werden.
FAQ
Q: Ist der Contrexx Shop konform mit dem deutschen Fernabsatzgesetz (BGB)?
A: Kurze Antwort: Ja.
Lange Antwort:
Bei diesem Gesetz geht es um die sogenannten
"Informationspflichten der Anbieter"
Gemäß § 312c BGB (vorher § 2 Abs. I FernAbsG) müssen Unternehmer den Verbraucher bei der Vertragsanbahnung über Geschäftszweck und Identität des eigenen Unternehmens aufklären. § 312c BGB verweist auf die Normen der hierfür einschlägigen Rechtsverordnung zu Artikel 240 des Einführungsgesetzes zum Bürgerlichen Gesetzbuch (EGBGB), der Verordnung über Informationspflichten nach Bürgerlichem Recht (BGB-InfoV).
Danach müssen folgende Angaben enthalten sein:
- die vollständige Anschrift des Unternehmers
- die wesentlichen Merkmale der angebotenen Waren oder Dienstleistungen
- der Preis einschließlich aller Steuern, Versand- und Lieferkosten
- das Bestehen eines Widerrufs- oder Rückgaberechtes nach §§ 355, 356 BGB
- Liefervorbehalte
- der Zeitpunkt des zustande Kommens des Vertrages (Stichwort Online-Auktionen)
- die Gültigkeitsdauer befristeter Angebote
Diese Angaben müssen dem Kunden vor Abgabe der Bestellung mitgeteilt werden. Ferner spricht das Gesetz davon, dass diese Information dem Verbraucher spätestens bei vollständiger Erfüllung (etwa der Lieferung der Waren) in Textform vorliegen müssen. Eine eMail soll hierfür ausreichen, nicht jedoch die Möglichkeit des Downloads, wenn nicht sichergestellt ist, dass der Verbraucher diese auch wirklich herunterlädt. Papierform oder CD-Rom sollen ebenfalls ausreichen.
Eine Ausnahme gilt nach § 312c Absatz3 BGB für Dienstleistungen, die ausschließlich durch den Einsatz von Fernkommunikationsmitteln erbracht werden, wenn die Leistung in einem Mal erfolgt und über den Betreiber der Fernkommunikationsmittel abgerechnet werden.
Kurz gesagt reicht es, wenn der Kunde vor dem "Bestellen-Klick" seine Häkchen bei "Datenschutzerklärung" (sowieso), "AGB" und Widerrufsrecht" macht, sofern sich dahinter natürlich tatsächlich die entsprechenden und korrekten Formulare befinden. Ferner sollte mit der "Bestätigung-E-Mail" nochmals im Klartext darauf hinzuweisen. Contrexx bietet diese Möglichkeit: Daher ist die Aussage wahr, dass Contrexx bei fachgerechter Konfiguration konform zum deutschen Fernabsatzgesetz betrieben werden kann und die Anforderungen der deutschen Gesetzgebung in dieser Anfrage vollständig erfüllt werden.