Knowledgebase:Shop

From Cloudrexx Development Wiki
Jump to: navigation, search
Handbuch
Hinweis: Diese Dokumentation bezieht sich auf die Version 4 und älter. Für neuere Versionen von Cloudrexx, siehe E-Commerce Shop.


Contents

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.

Navigieren zur nächsten Kategorie

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&amp;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&amp;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

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 Einstellungen

URIs:

Nehmen Sie unter "Account" -> "Settings" die folgenden Einstellungen vor:

  • "Transaction Format Settings"/"Response/Receipt URLs":
    • "Default Receipt URL" -> "Edit" klicken
    • "Default Relay Response URL": Leer lassen (falls gesetzt, klicken Sie "Edit" und löschen Sie das Feld, klicken Sie danach auf "Submit")
  • "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 &gt;&gt;" 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 Parameter
redirect=c2VjdGlvbj1zaG9w
im 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.