STRYK, POS API
Kassensystem mit STRYK verbinden
Zimmerbuchungen aus Restaurant und Bar: Einrichtung, API-Vertrag und sichere Wiederholungen.
Wird geladen …
1Einrichtung
Zuerst mit dem Kassenanbieter klären, ob er die STRYK-API ansprechen kann. STRYK empfängt Zimmerposten; eine Kasse mit eigener API oder OAuth benötigt einen passenden Adapter. Ein erzeugter Key bestätigt keine Anbieter-Kompatibilität. Unter POS → Einrichtung eine Verkaufsstelle mit gültiger Steuer anlegen, einen darauf beschränkten Key erzeugen und dem Anbieter diese Anleitung geben. GET /ping prüft die Verbindung; erst eine kontrollierte Zimmerbuchung bestätigt den Schreibprozess.
2Schlüssel & Sicherheit
Der vollständige Key beginnt mit pos_live_ und wird nur beim Erstellen ausgegeben. Das Auge ändert nur seine Sichtbarkeit; Kopieren übernimmt immer den vollständigen Wert. Später bleibt nur die Kennung sichtbar. Schlüssel ausschließlich serverseitig über HTTPS verwenden, niemals in Browsercode oder Logs. Vor einem Wechsel ausstehende Belege mit dem alten Key abgleichen: Referenzen und Statusabfragen sind an diesen Key gebunden. Alte Belege niemals unter einem neuen Key erneut senden. Anschließend den alten Key widerrufen.
3Zimmerkonto & Beträge
Vor jeder Buchung Gast und Zimmer über /accounts oder /room-lookup prüfen. Nur tatsächlich eingecheckte, noch nicht ausgecheckte Aufenthalte sind belastbar. allowCharge, No-Post, Kreditlimit und geschlossenes Rechnungskonto beachten. bookingId und Zimmer gemeinsam senden, um Zimmerwechsel oder Mehrzimmerbuchungen eindeutig zuzuordnen. Preise sind positive Bruttopreise in Hotelwährung; Steuer muss am Leistungsdatum eingerichtet sein. Mengen werden auf drei, Geld auf zwei Dezimalstellen gerundet. chargedAt mit Zeitzone senden; nach Checkout ist keine nachträgliche API-Buchung möglich.
4Buchen & Wiederholen
Jede Position erhält eine dauerhaft eindeutige externalRef. Bei Timeout zuerst GET /charges/{externalRef}: vorhandenen Zustand abgleichen; nur bei 404 dieselbe Anfrage mit gleichem Key und gleicher Referenz erneut senden. Ein exaktes Replay liefert 201 mit idempotentReplay=true. Geänderte Inhalte oder stornierte Referenzen ergeben 409. Bis zu 50 Positionen werden atomar gebucht. Bei 429 mindestens 60 Sekunden warten und verzögert erneut versuchen; maximal 100 Anfragen pro Minute und Key.
5Storno & Rechnung
DELETE /charges/{externalRef} storniert einen offenen eigenen Posten; eine wiederholte Stornierung bleibt ohne Doppelwirkung. An eine Rechnung übertragene Posten können so nicht storniert werden: Korrektur im Finanzbereich durchführen. Das Buchen aufs Zimmer ist keine Zahlung. Beim Checkout werden offene Posten in die Rechnung übernommen. Bei Verbindungsunterbrechung und manueller Nacherfassung Belegreferenz dokumentieren und vor späterem API-Versand abgleichen, um Doppelbuchungen zu vermeiden.
6Webhooks & Abnahme
Webhooks sind optional und melden charge.posted und charge.cancelled. Ein eigenes Webhook-Secret setzen und die HMAC-SHA256-Signatur am unveränderten Request-Body prüfen. X-STRYK-Webhook-Id bezeichnet das Abonnement, keine einzelne Zustellung. Wiederholungen anhand Ereignis und data.chargeId deduplizieren; Reihenfolge nicht voraussetzen. Vor Freigabe Verbindung, echte kontrollierte Buchung, Retry, No-Post, Limit, Mehrzimmerfall, Storno, Rechnungsübernahme und Webhook-Wiederholung prüfen. Diese Dokumentation sendet selbst keine Buchungen.