Jobnummer initial: FRS_1500_IP_004 Neuerstellung Online-Buchung und Buchungs-Apps Syltfaehre WDR
GitLab extern (deployment): https://gitlab.com/hochzwei/booking.git
Zugriff auf gitlab.com über den Nutzer typo3@hoch2.de
Entwicklungsstandard / Best Practice
- K.I.S.S - Keep it simple and smart
- Feature Entwicklung in eigenen Branches
- Für jeden Commit ein Ticket im GitLab
- Commits zu Tickets referenzieren
- Keine/wenig Logik in Actions/Controllern
Lokale host Datei Einträge
192.168.150.10 bk-loc-frs.booking.app
192.168.150.10 bk-loc-wdr.booking.app
192.168.150.10 bk-loc-npdg.booking.app
192.168.150.10 bk-loc-frs-app.booking.app
192.168.150.10 bk-loc-wdr-app.booking.app
192.168.150.10 bk-loc-npdg-app.booking.appInterne Redirects über Session
| Name | Beschreibung | Wert |
|---|---|---|
| registration.redirect | Redirect nach erfolgreicher Benutzer-Registrierung | Name der Route (z.B. "home" für die home-Route) |
| login.redirect | Redirect nach erfolgreicher Benutzer-Anmeldung | Name der Route (z.B. "home" für die home-Route) |
GET Parameter
Booking
| Name | Beschreibung | Wert(e) | Route |
|---|---|---|---|
| route | Pfad der Route die der iFrame aufrufen soll | booking | booking |
| withVehicle | Bestimmt, ob die Buchung eines Fahrzeuges per default aktiv ist oder nicht | 0,1 | booking |
| allowWithVehicleSelection | Bestimmt, ob die Auswahl mit/ohne Fahrzeug angezeigt wird | 0,1 | booking |
| newBooking | Wenn gesetzt, so wird eine neue Buchung initialisiert. Es werden alle Sessionvariablen resetet | 0,1 | booking |
| personOnlyBooking | Wenn gesetzt, so werden die Felder für das Fahrzeug + das Rückfahrdatum aus- stattdessen ein Texthinweis eingeblendet | 0,1 | booking |
| bookingType | Setzt den Tickettyp (Einfache Fahrt/Hin- und Rückfahrt) | ONE,RET | booking |
| bookingFrom | Abfahrtshafen | Key des Hafens | booking |
| bookingTo | Zielhafen | Key des Hafens | booking |
| bookingDepartureDate | Datum der Hinfahrt | TT.MM.JJJJ | booking |
| bookingDepartureVoyageNumber | Voyage Number der Abfahrt | booking | |
| bookingReturnDate | Datum der Rückfahrt | TT.MM.JJJJ | booking |
| openReturn | Offene Rückfahrt | 0,1 | booking |
| backHroute | Route für Zurück-Button / nach dem Speichern | z.B. booking | addVehicle |
Grundsätzlich lassen sich alle Formularfelder in allen Views per GET-Parameter vorbelegen. Der Key muss dafür nur so heißen wie der Name des Formfields.
Timetable/result
| Name | Beschreibung | Wert(e) | Route |
|---|---|---|---|
| dport | Abfahrtshafen | Key des Hafens | timetable/result |
| rport | Zielhafen | Key des Hafens | timetable/result |
| date | Datum der Reise | DD.MM.YYYY | timetable/result |
| route | Pfad der Route die der iFrame aufrufen soll | Pfad der Route | timetable/result |
Beispiel für den Aufruf des Fahrplans anhand von GET-Parametern:
Lokal: http://bk-dev-wdr.h2lokal.de/de/timetable/result?dport=F%C3%96HR&rport=AMRUM&date=25.05.2016
Im iFrame: http://www.faehre.de/h2-buchung2016.php?route=timetable/result&dport=DAGEB%C3%9CLL&rport=F%C3%96HR&date=20.05.2016
Konfiguration Unternehmen
- Config-Datei in /config Ordner mit Subdomain als Postfix (z.B. für frs.domain.tld -> booking-frs.php)
- Optional ein Stylesheet in /resources/assets/sass mit der Subdomain als Name (z.B. frs.scss)
- Optional neuen SASS Tasks in gulpfile.js
- Optional Stylesheet in Config-Datei eintragen
API Caches (V1)
| Request | Lifetime | Beschreibung |
|---|---|---|
| mainData | 30 Minuten | |
| ClientResponse | 10080 Minuten (7 Tage) | |
| timeTable | 5 Minuten | Gilt nur für "datum-von-nach" |
Sessions
Die Session Lifetime ist in der Session-Konfiguration auf 525600 Minuten (1 Jahr) festgelegt.
Environment Variablen
Sensitive Daten wie z.B. Benutzerdaten müssen immer in der .env Datei gespeichert werden. Diese darf nicht ins GIT eingechekt werden. Damit pro Kunden unterschiedliche API Zugangsdaten gespeichert werden können, muss jeweils pro Kunde eine eigene Benutzername/Passwort Variable erstellt werden.
| Key | Values | Beschreibung |
|---|---|---|
| LOGLEVEL_API | 100 - 600 | Loglevel für die API laut klasse \Monolog\Logger |
| LOGLEVEL_PAYMENT | 100 - 600 | Loglevel für Payments laut klasse \Monolog\Logger |
| LOGLEVEL_LARAVEL | 100 - 600 | Loglevel für Laravel laut klasse \Monolog\Logger |
| LOGSETTING_LARAVEL | Available Settings: "single", "daily", "syslog", "errorlog" | Wie sollen die Log gespeichert werden. |
| SESSION_PREFIX | z.B. "hoch2-" | Ein String, welcher vor die Session ID bei API Request gestellt wird |
| SAFERPAY_JSONAPI_USERNAME_WDR | Benutzername der Saferpay JSON API für W.D.R. | |
| SAFERPAY_JSONAPI_PASSWORD_WDR | Benutzername der Saferpay JSON API für W.D.R | |
| SAFERPAY_JSONAPI_USERNAME_FRS | Benutzername der Saferpay JSON API für FRS | |
| SAFERPAY_JSONAPI_PASSWORD_FRS | Benutzername der Saferpay JSON API für FRS | |
| SAFERPAY_JSONAPI_USERNAME_NPDG | Benutzername der Saferpay JSON API für NPDG | |
| SAFERPAY_JSONAPI_PASSWORD_NPDG | Benutzername der Saferpay JSON API für NPDG |
Die Logs befinden sich in: var/www/booking/productuion/booking/shared/storage/logs
AJAX Routen schützen
Über unsere ajax Middleware müssen alle AJAX Routen geschützt werden.
Anwendung (Middleware-Teil):
Route::post('/timetable/routeTo', ['as'=>'timetableTo', 'middleware' => 'ajax', 'uses' => 'TimetableController@routeTo']);
Testuser WDR
| Benutzername | Zahlungsart | Fahrzeuge | Weiteres |
|---|---|---|---|
| testuser1@hoch2.de | Rechnung | 1 | |
| testuser2@hoch2.de | Barzahlung | 5 | |
| testuser3@hoch2.de | 1 | Insulanertarif | |
| testuser4@hoch2.de | 2 | Insulanertarif für ein Fahrzeug | |
| testuser5@hoch2.de | |||
| testuser6@hoch2.de | Fährabo Nr. 105651, für Kennzeichen FLH211, auf der Route Dagebüll – Föhr |
Hinweis: Wichtig bei Fahrzeugen mit dem Insulaner-Tarif: Diesen Tarif gibt es nur bei Fahrten von den Inseln zum Festland.
Passwort: hoch2@wdr
Payment Testdaten
Test Kontonummer (von der Commerzbank): DE89 3704 0044 0532 0130 00
Saferpay: https://www.six-payment-services.com/de/site/saferpay-support/testaccount/Saferpay_Testdaten.html
Kunden APIs
- https://nas-test.frs.de:1443/NaviBookService.asmx?WSDL
- http://www.frs-2business.de/_maintenance/statustest/scripts/status.php?manide=30
Ansprechpartner:
Herr Borus (0461 864-53)
Deployment
Das Depoyment wird komplett über deployer gesteuert. In der Datei deployer.php Ordner befindet sich die komplette Konfiguration.
Beispiel Deployment auf "maxcluster-staging"
./deployer deploy maxcluster-stagingNach dem Deployment auf den jeweiligen Server immer folgende Befehle ausführen im Projektverzeichnis
php artisan clear-compiled
php artisan optimize
php artisan config:cacheZum deployen von Änderungen in das Live- oder Stagingsystem wird wie folgt vorgegangen:
Grundsätzlich ist es wichtig, dass der eigene SSH Key auf dem Zielserver hinterlegt ist. Dafür nutzt man den Terminal Befehl ssh-copy-id. Danach muss in der lokalen SSH config Datei auf dem Rechner der entsprechende Pfad zum Key und Nutzername eingetragen werden. Bei Maxcluster können die SSH Keys auch über das Webhosting Backend hinterlegt werden
- Deployment ins Stagingsystem
- Pushen der gemachten Änderungen in den Branch "Staging"
- Per SSH auf die Vagrant Box PHPStorm: Tools -> Start SSH Session -> Vagrant at...
- In das Verzeichnis "Code" wechseln cd Code
- Mit diesem Befehl das Deployment starten: ./deployer deploy maxcluster-staging
- Nachdem der Vorgang abgeschlossen wurde, sind die Änderungen unter qs.iframe.faehre.de und qs.app.faehre.de sichtbar
- Deployment ins Live-/Produktivsystem
- Pushen der gemachten Änderungen in den Branch "Staging"
- Auschecken des lokalen Branches "Master"
- Mergen des Stagingbranches in den Master:
- Pushen der Änderungen in den Master
- Per SSH auf die Vagrant Box PHPStorm: Tools -> Start SSH Session -> Vagrant at...
- In das Verzeichnis "Code" wechseln cd Code
- Mit diesem Befehl das Deployment starten: ./deployer deploy maxcluster-production
- Nachdem der Vorgang abgeschlossen wurde sind die Änderungen unter app.faehre.de, sowie iframe.faehre.de, in den Android und iOS Apps sowie unter http://www.faehre.de/buchen/buchung sichtbar
Besondere Seiten:
Die folgenden Urls werden genutzt, um eine Test-Version zeigen zu können, ohne dass dieser Stand in den Staging-Branch kommt. So wird der normal laufende Betrieb (Bugfixes, kleinere Ändeurngen) nicht gestört, es kann aber eine größere Neuerung getestet werden. Folgende Urls sind dafür eingerichtet:
NPDG:
http://qs-app-npdg.h2local.de/de/booking
http://qs-iframe-npdg.h2local.de/de/booking
http://qs-mobile-npdg.h2local.de/de/booking
WDR:
http://qs-app-wdr.h2local.de/de/booking
