akazie/pay-nexopos-terminal-modul

NexoPOS-Modul: Anbindung eines akazie-pay Kartenterminals (Payrexx ECR API) als Zahlungsart. Ein Terminal pro Kasse, Polling statt Webhook.

Maintainers

Package info

gitlab.xippo.net/akazie-it-public/akazie-pay-nexopos-terminal-modul.git

Homepage

Issues

Type:nexopos-module

pkg:composer/akazie/pay-nexopos-terminal-modul

Transparency log

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

v0.1.1 2026-07-13 18:48 UTC

This package is auto-updated.

Last update: 2026-07-13 18:50:13 UTC


README

NexoPOS-Modul AkaziePay: bindet akazie-pay Kartenterminals (Payrexx-ECR-API, Kreditkarte/Twint) als Zahlungsart an die NexoPOS-Kasse an, statt den Betrag manuell am Terminal einzutippen.

Herkunft: Zusammenzug aus dem AkaziePay-Scaffold (Fork akazie-pay-nexopos, Branch feature/akazie-pay-terminal) und der Payrexx-Logik aus dem NsPayrexxTerminal-Skeleton (Repo str_26_kasse_pos). Pilotprojekt der reinen API-Anbindung: _akaziepay_pos (PHP/cURL, ohne NexoPOS).

Architektur-Entscheidungen

  • 1 Kasse = 1 Terminal. Jede Kasse (NexoPOS "Cash Register") hat genau ein fest zugeordnetes Terminal (Tabelle akazie_pay_terminals, unique auf register_id).
  • Polling statt Webhook. Der Kassen-PC ist nur im lokalen WLAN erreichbar – Payrexx kann keinen Webhook zurückschicken. Die Kasse fragt den Zahlungsstatus aktiv ab (GET /ecr/{serial}/payment/{id}).
  • Risikoarmer Checkout: Der Cart-Button steuert nur Terminal + Polling an. Verbucht wird die Zahlung anschliessend regulär über das Checkout-Popup mit dem Payment-Type akazie-pay (wird per Migration angelegt). Der letzte Klick bleibt manuell.

Installation (NexoPOS-Standardweg: Modul-Ordner)

Das Modul gehört nach <nexopos>/modules/AkaziePay – der Ordnername muss dem Namespace AkaziePay entsprechen:

cd /var/www/nexopos/modules
sudo -u www-data git clone \
  https://gitlab.xippo.net/akazie-it-public/akazie-pay-nexopos-terminal-modul.git AkaziePay

Danach im NexoPOS-Dashboard unter Modules aktivieren (führt die Migrationen aus: Tabelle, Berechtigung akaziepay.manage-terminals, Payment-Type akazie-pay).

Update: git -C /var/www/nexopos/modules/AkaziePay pull – oder das Deploy-Skript deploy-terminal-modul.sh aus dem Repo str_26_kasse_pos verwenden.

Konfiguration

  1. Dashboard → akazie-pay Einstellungen: API-Basis-URL, API-Key, Payrexx-Instanz, Polling-Timeout.
  2. Dashboard → akazie-pay Terminals: Zuordnung Kasse ↔ Terminal-Seriennummer, dann Pairing mit dem Code vom Terminal-Display (Pairing-Codes sind zeitlich begrenzt – frischen Code verwenden).
  3. Rolle der Kassen-Admins braucht die Berechtigung akaziepay.manage-terminals (Dashboard → Roles).

Composer / Packagist

Das Paket ist als akazie/pay-nexopos-terminal-modul auf Packagist gelistet (Sichtbarkeit/Versionierung). Der Installationsweg in NexoPOS bleibt der Modul-Ordner (siehe oben) – NexoPOS lädt Module nicht aus vendor/. Versionen entstehen durch git-Tags (v0.1.0, …).

Status / offene Punkte (Stand 12.07.2026)

  • Backend (Service, Settings, Modell, Migrationen, API-Routen): vorbereitet, ungetestet gegen echtes Terminal.
  • POS-Frontend (Cart-Button, Resources/js/): Skeleton – Vite-Build, Register-ID/Cart-Total aus dem POS-State und die exakten Payrexx-Statuswerte sind noch offen (TODOs im Code).
  • API-Präfix der Modul-Routen (/api/akazie-pay/...?) in der installierten NexoPOS-Version verifizieren und fetch()-URLs angleichen.

Änderungshistorie

DatumVersionAutorBeschreibung
12.07.20260.1.0Lorenz FehrErsterfassung als eigenes Repo: AkaziePay-Scaffold + portierte Payrexx-Logik (Service, Settings, API-Controller, Cart-Button)