Gateway-Vorlage
Die Gateway-Vorlage bietet einen Ausgangspunkt für den Aufbau eines eigenen Zahlungsgateways nur für POS. Sie erzeugt ein funktionsfähiges WordPress-Plugin mit einer einzelnen PHP-Datei, die installiert und an die eigenen Anforderungen angepasst werden kann.
Funktionen
Minimaler Code
Eine einzelne PHP-Datei mit nur dem Nötigsten — leicht zu lesen und anzupassen
Nur POS
Standardmäßig im Web-Checkout deaktiviert, über die WCPOS-Einstellungen aktiviert
Automatisierte Einrichtung
Ein Shell-Skript übernimmt die gesamte Platzhalter-Ersetzung für Sie
GitHub-Veröffentlichungen
Ein Push einer Versionsanhebung löst GitHub Actions aus und erstellt eine herunterladbare ZIP-Datei
Erste Schritte
Repository der Gateway-Vorlage klonen
git clone https://github.com/wcpos/woocommerce-gateway-template.git
cd woocommerce-gateway-template
Oder klicken Sie auf die Schaltfläche Diese Vorlage verwenden im GitHub-Repository, um Ihre eigene Kopie zu erstellen.
Setup-Skript ausführen
./create-gateway.sh
Das Skript fragt einige Angaben ab — den Namen Ihres Zahlungsgateways, eine kurze Beschreibung und Ihren GitHub-Benutzernamen — und erstellt anschließend ein einsatzbereites Plugin in einem Verzeichnis Ihrer Wahl.
Plugin installieren
Sie haben zwei Optionen:
Option A — Ordner direkt kopieren (wenn Sie Serverzugriff haben):
Kopieren Sie den Ordner des generierten Zahlungsgateways in das Verzeichnis wp-content/plugins/ Ihrer Website.
Option B — Als ZIP-Datei packen und hochladen (für die meisten am einfachsten):
- Komprimieren Sie den generierten Ordner in eine Datei mit der Endung
.zip - Gehen Sie in WordPress zu Plugins > Installieren > Plugin hochladen
- Wählen Sie die ZIP-Datei aus und klicken Sie auf Jetzt installieren
In WCPOS aktivieren
- Gehen Sie zu WP Admin > WCPOS > Einstellungen > Checkout
- Suchen Sie Ihr neues Zahlungsgateway in der Liste und aktivieren Sie es
Das Zahlungsgateway ist standardmäßig im regulären Web-Checkout deaktiviert. WCPOS steuert über eigene Einstellungen, welche Zahlungsgateways im POS angezeigt werden.
Manuelle Einrichtung
Wenn Sie das Skript nicht verwenden möchten, können Sie die Platzhalter selbst ersetzen. Öffnen Sie jede Datei in einem Texteditor und suchen und ersetzen Sie Folgendes:
| Platzhalter | Eingabe | Beispiel |
|---|---|---|
{{GATEWAY_NAME}} | Anzeigename Ihres Zahlungsgateways | Barzahlung |
{{GATEWAY_SLUG}} | URL-sicherer Bezeichner (Kleinbuchstaben, Bindestriche) | bargeld-zahlung |
{{GATEWAY_DESCRIPTION}} | Kurze Beschreibung des Zahlungsgateways | Bargeldzahlungen in WCPOS akzeptieren |
{{GATEWAY_DEFAULT_DESCRIPTION}} | Text, der dem Kassenpersonal beim Checkout angezeigt wird | Am POS mit Bargeld bezahlen |
{{GITHUB_USERNAME}} | Ihr GitHub-Benutzername | max-mustermann |
{{REPO_NAME}} | Ihr Repository-Name | bargeld-zahlungsgateway |
{{AUTHOR_NAME}} | Ihr Name | Max Mustermann |
{{GATEWAY_ID}} | Slug mit Unterstrichen statt Bindestrichen | bargeld_zahlung |
{{GATEWAY_CLASS_NAME}} | Jedes Wort großgeschrieben, mit Unterstrichen verbunden | Bargeld_Zahlung |
{{GATEWAY_FUNCTION_PREFIX}} | Entspricht der Gateway-ID | bargeld_zahlung |
Benennen Sie anschließend wcpos-{{GATEWAY_SLUG}}.php passend zu Ihrem Slug um (z. B. wcpos-cash-payment.php).
Das Einrichtungsskript leitet GATEWAY_ID, GATEWAY_CLASS_NAME und GATEWAY_FUNCTION_PREFIX automatisch aus Name und Slug ab, sodass Sie sich nur bei einer manuellen Einrichtung damit befassen müssen.
Funktionsweise
Das generierte Plugin registriert eine WooCommerce-Zahlungsgateway-Klasse. Die wichtigsten Punkte:
$this->enabled = 'no'— Das Gateway wird im Web-Checkout ausgeblendet. WCPOS aktiviert es im POS anhand Ihrer POS-Einstellungen.process_payment()— Ruft$order->payment_complete()auf. Dadurch wird die Bestellung als bezahlt markiert und die Bestandsreduzierung automatisch ausgeführt.init_form_fields()— Definiert die Felder Titel und Beschreibung, die in den WooCommerce-Einstellungen angezeigt werden.
Gateway anpassen
Zahlungsfelder hinzufügen
Wenn Ihr Gateway eine Eingabe durch das Kassenpersonal benötigt (zum Beispiel eine Referenznummer), überschreiben Sie die Methode payment_fields():
public function payment_fields() {
if ( $this->description ) {
echo wpautop( wptexturize( $this->description ) );
}
woocommerce_form_field( 'my_gateway_reference', array(
'type' => 'text',
'label' => __( 'Reference Number', 'your-text-domain' ),
'required' => true,
) );
}
Anschließend können Sie den übermittelten Wert in process_payment() über $_POST['my_gateway_reference'] auslesen. Denken Sie daran, alle Eingaben mit sanitize_text_field() zu bereinigen.
Zahlungsverhalten ändern
Die Standardvorlage markiert Bestellungen sofort als bezahlt. Wenn Ihr Arbeitsablauf eine spätere Zahlung erfordert (zum Beispiel bei einer Rechnung), ersetzen Sie payment_complete() durch eine Statusaktualisierung:
public function process_payment( $order_id ) {
$order = wc_get_order( $order_id );
// Set to pending — the customer will pay later.
$order->update_status( 'pending', __( 'Awaiting payment', 'your-text-domain' ) );
// Stock must be reduced manually when not using payment_complete().
wc_reduce_stock_levels( $order_id );
return array(
'result' => 'success',
'redirect' => $this->get_return_url( $order ),
);
}
Änderungen vornehmen und aktualisieren
Nach der Installation Ihres Gateways kann die Plugin-Datei weiter bearbeitet werden, um die Zahlungslogik anzupassen. So installieren Sie eine aktualisierte Version:
- Bearbeiten Sie
wcpos-your-slug.phpim generierten Ordner - Aktualisieren Sie die
Version:-Nummer im Plugin-Header (z. B. von0.1.0auf0.2.0) - Erstellen Sie eine ZIP-Datei des Ordners und laden Sie sie erneut über Plugins > Installieren > Plugin hochladen hoch, oder ersetzen Sie den Ordner direkt in
wp-content/plugins/
WordPress fragt beim Hochladen einer ZIP-Datei mit demselben Plugin-Namen, ob das vorhandene Plugin ersetzt werden soll — klicken Sie auf Aktuelle Version durch hochgeladene ersetzen, um zu aktualisieren.
Automatisierte Releases mit GitHub
Wenn Sie Ihr Gateway in ein GitHub-Repository pushen, enthält die Vorlage einen GitHub Actions-Workflow, der Releases automatisch erstellt:
- Aktualisieren Sie die
Version:-Nummer im Plugin-Header - Committen und pushen Sie in den Branch
main - GitHub Actions erkennt die Versionsänderung und erstellt ein neues Release mit einer herunterladbaren ZIP-Datei
Andere Benutzer können die ZIP-Datei dann von der Releases-Seite Ihres Repositorys herunterladen und wie jedes andere WordPress-Plugin installieren.
Fehlerbehebung
Zahlungsgateway erscheint nicht im POS
- Prüfen Sie, ob das Plugin in WP Admin > Plugins aktiviert ist
- Öffnen Sie WP Admin > WCPOS > Einstellungen > Checkout und stellen Sie sicher, dass das Zahlungsgateway aktiviert ist
- Prüfen Sie, ob WooCommerce installiert und aktiv ist
Zahlungsgateway erscheint im Web-Checkout
- Stellen Sie sicher, dass
$this->enabled = 'no';im Gateway-Konstruktor festgelegt ist - WCPOS überschreibt diese Einstellung für POS-Anfragen, daher sollte das Zahlungsgateway nur im POS erscheinen
Bestellungen bleiben auf 'In Bearbeitung' statt 'Abgeschlossen'
- WooCommerce legt den Bestellstatus anhand der Produkttypen fest. Bestellungen mit physischen Produkten bleiben auf "In Bearbeitung" — dies ist normales WooCommerce-Verhalten. Nur Bestellungen, die ausschließlich virtuelle oder herunterladbare Produkte enthalten, werden automatisch als "Abgeschlossen" markiert.
Anforderungen
Ressourcen
- GitHub: woocommerce-gateway-template
- WooCommerce Zahlungsgateway-API: WC_Payment_Gateway-Dokumentation
Beispiel-Gateways
Diese bestehenden Gateways wurden mit demselben Ansatz erstellt und eignen sich gut als Referenz:
- Rechnung per E-Mail — Sendet eine Rechnung per E-Mail, damit der Kunde später bezahlen kann
- Web-Checkout — Leitet zur Zahlung an den Webshop weiter