Zum Hauptinhalt springen
Version: 1.x

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​

1

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.

2

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.

3

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):

  1. Komprimieren Sie den generierten Ordner in eine Datei mit der Endung .zip
  2. Gehen Sie in WordPress zu Plugins > Installieren > Plugin hochladen
  3. Wählen Sie die ZIP-Datei aus und klicken Sie auf Jetzt installieren
4

In WCPOS aktivieren

  1. Gehen Sie zu WP Admin > WCPOS > Einstellungen > Checkout
  2. Suchen Sie Ihr neues Zahlungsgateway in der Liste und aktivieren Sie es
Hinweis

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:

PlatzhalterEingabeBeispiel
{{GATEWAY_NAME}}Anzeigename Ihres ZahlungsgatewaysBarzahlung
{{GATEWAY_SLUG}}URL-sicherer Bezeichner (Kleinbuchstaben, Bindestriche)bargeld-zahlung
{{GATEWAY_DESCRIPTION}}Kurze Beschreibung des ZahlungsgatewaysBargeldzahlungen in WCPOS akzeptieren
{{GATEWAY_DEFAULT_DESCRIPTION}}Text, der dem Kassenpersonal beim Checkout angezeigt wirdAm POS mit Bargeld bezahlen
{{GITHUB_USERNAME}}Ihr GitHub-Benutzernamemax-mustermann
{{REPO_NAME}}Ihr Repository-Namebargeld-zahlungsgateway
{{AUTHOR_NAME}}Ihr NameMax Mustermann
{{GATEWAY_ID}}Slug mit Unterstrichen statt Bindestrichenbargeld_zahlung
{{GATEWAY_CLASS_NAME}}Jedes Wort großgeschrieben, mit Unterstrichen verbundenBargeld_Zahlung
{{GATEWAY_FUNCTION_PREFIX}}Entspricht der Gateway-IDbargeld_zahlung

Benennen Sie anschließend wcpos-{{GATEWAY_SLUG}}.php passend zu Ihrem Slug um (z. B. wcpos-cash-payment.php).

Tipp

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:

  1. Bearbeiten Sie wcpos-your-slug.php im generierten Ordner
  2. Aktualisieren Sie die Version:-Nummer im Plugin-Header (z. B. von 0.1.0 auf 0.2.0)
  3. 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/
Tipp

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:

  1. Aktualisieren Sie die Version:-Nummer im Plugin-Header
  2. Committen und pushen Sie in den Branch main
  3. 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​

WCPOS: Pro-Version für den POS-Checkout erforderlich
WordPress: WordPress mit installiertem WooCommerce
PHP: Grundlegende PHP-Kenntnisse zum Anpassen des Gateways

Ressourcen​

Beispiel-Gateways​

Diese bestehenden Gateways wurden mit demselben Ansatz erstellt und eignen sich gut als Referenz: