Zahlungs-Gateways erstellen

Aus sourceDESK Wiki
Wechseln zu: Navigation, Suche

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.

Optional sind weitere Ordner, es wird ein Ordner language für den Support mehrerer Sprachen empfohlen. 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();
}