Zurück zu Projekte
E-Commerce mit Custom-Anforderungen

Vulkaneifel Therme – Online-Shop mit Live-Buchungs-Anbindung

Custom-Shop auf Laravel 12 mit dualer Checkout-Strecke, eigener VRPay-Integration und direkter TCP-Anbindung an das Therme-Kassensystem.

Branche Wellness · Tourismus
Technologie Laravel 12 · Livewire · Filament v4
Status Live
Live Shop ansehen ↗
Daniel Nilges Max Hopfinger Tobias Kokesch
Daniel Nilges, Max Hopfinger, Tobias Kokesch
Vulkaneifel Therme

Projekt-Info

branche
Wellness · Tourismus · Gastronomie
leistung
Shop-Entwicklung, API-Integration, Wartung
technologie
Laravel 12, Livewire 3, Filament v4
status
Live

Live-Shop ansehen

Worum es ging

Die Vulkaneifel Therme in Bad Bertrich – Deutschlands einzige Glaubersalz-Therme – verkauft online drei sehr unterschiedliche Produktarten:

  • Termin-Reservierungen für Wellness- und Sauna-Slots
  • Service-Gutscheine, etwa für Massagen
  • Wertgutscheine, frei einlösbar

Standard-Shopsysteme decken das nicht ab. Vor allem die Termin-Reservierungen brauchen eine Live-Anbindung an das interne Therme-Kassensystem – inklusive Slot-Verfügbarkeitsprüfung und sofortigem Lock, damit niemand denselben Termin doppelt bucht. Dazu kommt eine eigene Payment-Integration über VRPay, die eingebaut sein musste.

Was wir gebaut haben

Wir haben einen vollständig individuellen Shop auf Laravel 12 entwickelt – kein Shopify, kein WooCommerce, kein Standard-Shop-Modul. Die Kombination aus drei Produktarten, Live-Slot-Buchung und eigenem Payment-Provider hat in keinem fertigen System sauber funktioniert.

Customer-Facing-Features

  • Produktkatalog mit hierarchischen Kategorien, SEO-Slugs, Breadcrumbs
  • Warenkorb mit Coupon-Engine (prozentual, Ablaufdatum, produktbezogen)
  • Duale Checkout-Strecke: Voll-Registrierung oder Gast-Checkout, mit späterer Konvertierung zum Vollkonto – ohne Verlust der Bestellhistorie
  • PDF-Generation für Gutscheine inklusive eingebetteter Barcodes, drei Jahre Gültigkeit
  • Newsletter-Anbindung an CleverReach mit Double-Opt-In

Admin-Backend mit Filament v4

  • Produkte, Kategorien, Bestellungen, Coupons, Kunden, Gäste
  • Order-Export, manueller Produkt-Sync zum Kassensystem
  • SEO-Settings und Voucher-Motiv-Settings als Custom Pages

Was technisch im Hintergrund passiert

VRPay-Integration über Saloon

Drei Zahlungsmethoden: Kreditkarte, PayPal, SEPA-Lastschrift, plus Vorkasse. Eigene Saloon-Integration statt fertigem Package, weil VRPay mit XML-API und drei separaten Entity-IDs arbeitet. Workflow: PostCheckoutPrepare → Redirect zur VRPay-Hosted-Page → Webhook-Callback → GetPaymentStatus → PaymentProcessed-Event.

TCP-Anbindung an das Therme-Kassensystem

Kein REST, kein SOAP – das Kassensystem spricht XML über rohe TCP-Sockets. Wir haben einen eigenen SocketClient gebaut, der den Stream via stream_socket_client öffnet, plus fünf dedizierte Action-Klassen: SyncProducts, SendOrder, FetchFreeDates, ReserveFreeDate, DeleteReservedDate. Alle Calls laufen asynchron über Laravel-Queue-Jobs.

Reservierungs-Lock zur Vermeidung von Doppelbuchungen

Beim Klick auf einen freien Slot wird sofort gegen das Kassensystem reserviert – server-seitig, mit Timeout. Verlässt der Kunde den Checkout-Prozess, läuft die Reservierung über einen Scheduled Cleanup automatisch wieder aus. Damit ist der Slot für andere Kunden nie länger blockiert als nötig.

Steuer- und Rabattlogik nach deutscher Buchhaltung

19 % MwSt., Brutto gespeichert, Rabatte rechnen auf Netto und kalkulieren die Steuer neu – mit eigenen Tests, weil in der Praxis viele Shops hier Fehler machen.

Stack

Backend
PHP 8.2, Laravel 12
Frontend
Livewire 3 + Volt, Tailwind CSS v4, Vite v8
Admin
Filament v4
Tests
Pest 3, 51 Test-Files, Larastan 3, Pint
Monitoring
Sentry
Architektur
Action-Klassen, Event-Driven, UUID-Keys, 61 Migrationen

Status

Der Shop ist live unter shop.vulkaneifel-therme.de und verkauft täglich Reservierungen, Gutscheine und Wertgutscheine. Wartung und Erweiterung laufen weiter.

Ähnliches Vorhaben?

Wenn du einen Shop mit Schnittstellen, Custom-Logik oder eigener Payment-Integration brauchst – oder einen bestehenden Shop, der an seine Grenzen stößt:

Mehr Laravel-Projekte ansehen