Sie können in das System weitere modulare Zahlungs-Gateways einbauen, über welche Zahlungen Ihrer Kunden abgewickelt werden können. Die Integration ist recht simpel möglich.
Grundaufbau
Im Ordner modules/payment liegen alle Zahlungs-Gateways. Jedes Zahlungsgateway hat dort einen Ordner mit einem Namen für dieses (nur Kleinbuchstaben; natürlich können Abkürzungen verwaltet werden). Dieser kurze Name wird im Folgenden als Kurzname bezeichnet.
In einem Ordner eines Gateways wiederum muss sich eine Datei mit dem Kurznamen des Gateways und der Endung .php befinden. Diese Datei stellt die Hauptdatei des Gateways dar. Außerdem muss ein Ordner language für den Support mehrerer Sprachen existieren. Für Smarty-Templates kann zum Beispiel ein seperater Ordner templates angelegt werden.
Aufbau der Hauptdatei
In der Hauptdatei muss eine Klasse definiert werden, welche einen einmaligen Namen tragen und die abstrakte Klasse PaymentGateway erweitern muss.
class PayPalPG extends PaymentGateway {
Es wird eine statische Variable benötigt, welchen den Kurznamen der Klasse enthält (theoretisch darf dieser auch abweichen, der Übersichtlichkeit halber sollte dieser aber gleich sein):
public static $shortName = "paypal";
Für jede Gateway-Klasse sollte ein eigener Konstruktor geschrieben werden. Dieser muss den Konstruktor von PaymentGateway (der Oberklasse) aufrufen und sollte die aktuelle Sprache festsetzen. Außerdem müssen die Sprachdateien geladen werden. Wir lernen hier den Ausnahmen-Typ ModuleException kennen. Ein Wurf einer solchen Ausnahme wird das Modul nicht laden sondern ignorieren.
public function __construct($language) { parent::__construct(self::$shortName); $this->language = $language; if(!include(dirname(__FILE__) . "/language/$language.php")) throw new ModuleException(); if(!is_array($addonlang) || !isset($addonlang["NAME"])) throw new ModuleException(); }
Einstellungen
Es können Einstellungen definiert werden, die durch den Administrator zu tätigen sind, wenn er das Modul in der Administration konfiguriert. Nachfolgend sehen Sie, wie Sie diese Einstellungen im Konstruktor der Gateway-Klasse definieren.
$this->options = Array( "text" => Array("type" => "text", "name" => "Textfeld", "default" => "Standard", "placeholder" => "Hier irgendwas eingeben", "help" => "Das steht drunter"), "check" => Array("type" => "checkbox", "description" => "Daneben", "default" => true, "help" => "Das steht drunter"), );
Sie sehen hier ein multidimensionales Array. Als Key der Arrays in der zweiten Dimension wird ein Options-Name verwendet, dieser ist beliebig. Der Wert ist wiederum ein Array. Darin befindet sich u.a. die Eigenschaft type, sie kann text (Textfeld) oder checkbox sein und bestimmt, welches Steuerelement angezeigt wird. Die weiteren Parameter sind optional, wobei natürlich zumindest name bzw. description angegeben werden sollte.
Der Zugriff auf die getätigten Einstellungen kann dann innerhalb der Klasse recht simpel erfolgen mit:
$this->settings[$key];
Zahlungs-Log
...
Cashbox
...
Sprachsystem
...
Weiteres
Es ist möglich, im Modal zur Gateway-Konfiguration unter den Einstellungen einen Text anzuzeigen. Dieser kann zum Beispiel wichtige Hinweise zur Konfiguration oder Warnungen enthalten. Die Definition sollte wie folgt im Konstruktor der Gateway-Klasse erfolgen:
$this->admin_warning = "Warntext";