🚚 KurierExpress - Professionelles Kurierportal
📋 Überblick
Komplettes Kurier- und Paketversand-System für Kleinunternehmer - wie DHL/Hermes, aber für kleine Versender.
**Hauptfeatures:**
- 📦 **Paketversand:** Gewicht, Maße, Wert eingeben
- 💰 **Automatische Preisberechnung:** Nach Gewicht, Größe, Entfernung
- 💳 **PayPal-Integration:** Sicher online bezahlen (IPN)
- 📍 **Live-Tracking:** Echtzeit-Sendungsverfolgung
- 📜 **Versandetikett:** Mit Tracking-Nummer
- ⚙️ **Admin-Panel:** Sendungen & Preise verwalten
✨ Features im Detail
Für Kunden:
- ✅ **Registrierung & Login**
- ✅ **Sendung erstellen:**
- Absender & Empfänger-Daten
- Paket-Details (Gewicht, L×B×H, Wert)
- Versandoptionen (Standard/Express, Versicherung, Nachnahme)
- Automatische Preisberechnung
- ✅ **Online bezahlen** (PayPal mit IPN)
- ✅ **Dashboard:** Alle Sendungen im Überblick
- ✅ **Tracking:** Sendung verfolgen
Für Admin/Kurier:
- ✅ **Sendungen verwalten:**
- Status ändern (Erfasst, Abgeholt, Unterwegs, Zugestellt...)
- Standort angeben
- Bemerkungen hinzufügen
- ✅ **Preise anpassen:**
- Gewichts-Staffeln
- Größen-Zuschläge
- Entfernungs-Zuschläge
- ✅ **Statistiken:** Umsatz, offene Sendungen, etc.
Öffentlich:
- ✅ **Tracking ohne Login:** Tracking-Nummer eingeben
- ✅ **Preisübersicht** auf Startseite
💻 Systemanforderungen
- **PHP:** 8.0+
- **MySQL:** 5.7+
- **Extensions:** PDO, PDO_MySQL, cURL (für PayPal IPN)
📥 Installation
Schritt 1: Dateien hochladen
bash
Alle Dateien in Webverzeichnis hochladen
z.B. /public_html/kurier/
Schritt 2: install.php aufrufen
https://ihre-domain.de/install.php
Schritt 3: Datenbank eingeben
- **DB Host:** `localhost`
- **DB Name:** `kurier_db`
- **DB User:** `db_user`
- **DB Password:** `db_passwort`
Schritt 4: Portal konfigurieren
- **Portal-Name:** `KurierExpress` (oder eigener Name)
- **Tracking-Präfix:** `KE` (wird zu KE-A1B2C3D4)
- **PayPal Email:** `ihre@paypal-email.de` (für Zahlungen)
Schritt 5: Admin erstellen
- **Username:** `admin`
- **Password:** `sicheres-passwort`
Schritt 6: Installation abschließen
- **5 Tabellen** werden erstellt
- **Standard-Preise** werden eingefügt
- install.php löscht sich selbst
- **Fertig!**
🗄️ Datenbank-Struktur
5 Tabellen:
**kurier_users:**
- id, username, email, password_hash
- firma, telefon
- created_at
**kurier_admin:**
- id, username, password_hash
- created_at
**kurier_sendungen:**
- id, user_id, tracking_nr
- **Absender:** name, strasse, plz, ort, tel
- **Empfänger:** name, strasse, plz, ort, tel
- **Paket:** gewicht, laenge, breite, hoehe, inhalt, wert
- **Versand:** versandart (standard/express), versicherung, nachnahme
- **Zahlung:** preis, bezahlt, bezahlt_am, paypal_txn_id
- **Status:** erfasst, bezahlt, abgeholt, unterwegs, depot, zustellung, zugestellt, problem
- created_at, updated_at
**kurier_status_historie:**
- id, sendung_id, status, bemerkung, standort, foto
- created_at
**kurier_preise:**
- id, typ (gewicht/groesse/entfernung), von, bis, preis, beschreibung, aktiv
💰 Preissystem
Automatische Berechnung nach:
**1. Gewicht:**
Bis 2 kg → 5,99 €
2-5 kg → 8,99 €
5-10 kg → 12,99 €
10-20 kg → 19,99 €
20-31,5 kg → 29,99 €
**2. Größenzuschlag (längste Kante):**
Bis 60 cm → +0 €
60-120 cm → +5 €
120-200 cm → +10 €
**3. Entfernungszuschlag (PLZ-basiert):**
0-10 km → +3 €
10-50 km → +6 €
50-150 km → +10 €
150-500 km → +20 €
**4. Zusatzoptionen:**
Express → +10 €
Versicherung → +5 € (bis 500€ Warenwert)
**Beispielrechnung:**
- Paket 8kg, 80×40×30cm, 150km Entfernung, Express
- Gewicht: 12,99€ (5-10kg)
- Größe: +5€ (60-120cm)
- Entfernung: +10€ (50-150km)
- Express: +10€
- **Gesamt: 37,99€**
📦 Sendung erstellen (Kunde)
Schritt 1: Daten eingeben
**Absender:**
- Name/Firma
- Straße & Hausnummer
- PLZ & Ort
- Telefon
**Empfänger:**
- Name/Firma
- Straße & Hausnummer
- PLZ & Ort
- Telefon
**Paket:**
- Gewicht (kg)
- Maße (L×B×H in cm)
- Wert (€, optional)
- Inhalt (optional)
**Optionen:**
- Versandart (Standard/Express)
- Versicherung (ja/nein)
- Nachnahme (ja/nein, Betrag)
Schritt 2: Preis berechnen
- Click auf "💰 Preis berechnen"
- System berechnet automatisch
- Preis-Aufschlüsselung wird angezeigt
Schritt 3: Sendung erstellen
- Click auf "✅ Sendung erstellen & bezahlen"
- Tracking-Nummer wird generiert
- Weiterleitung zur Bezahlung
Schritt 4: Bezahlen
**PayPal-Button:**
- Click auf "Jetzt mit PayPal bezahlen"
- PayPal öffnet sich
- Zahlung durchführen
- Automatische Rückmeldung via IPN
**Nach Zahlung:**
- Status: "Bezahlt"
- Sendung ist aktiv
- Tracking verfügbar
📍 Tracking-System
Öffentliches Tracking (ohne Login):
1. **tracking.php** aufrufen
2. **Tracking-Nummer eingeben:** z.B. KE-A1B2C3D4
3. **Sendungsstatus sehen:**
- Aktuelle Position
- Absender & Empfänger
- Paket-Details
- Vollständiger Verlauf
Status-Historie:
✅ Zugestellt (25.01.2026 14:30 Uhr)
📍 Empfängeradresse
Paket wurde zugestellt
🚛 Zur Zustellung (25.01.2026 08:00 Uhr)
📍 Depot München
Fahrer ist unterwegs
🏢 Im Depot (24.01.2026 18:00 Uhr)
📍 Depot München
Paket ist im Depot angekommen
🛣️ Unterwegs (24.01.2026 10:00 Uhr)
📍 Autobahn A8
Paket ist unterwegs
🚚 Abgeholt (24.01.2026 09:00 Uhr)
📍 Absenderadresse
Paket wurde abgeholt
✅ Bezahlt (23.01.2026 16:30 Uhr)
Zahlung via PayPal erhalten
📦 Erfasst (23.01.2026 16:25 Uhr)
Sendung wurde erfasst
⚙️ Admin-Panel
Login:
URL: /admin-login.php
Username: admin (bei Installation festgelegt)
Password: (bei Installation festgelegt)
Funktionen:
**1. Dashboard:**
- Statistiken (Sendungen, Offen, Unbezahlt, Umsatz)
- Schnellzugriff
**2. Sendungen verwalten:**
**Filter:**
- Alle
- Offen (nicht zugestellt/problem)
- Unbezahlt
**Pro Sendung:**
- Tracking-Nr
- Kunde
- Route (Von → Nach)
- Status
- Bezahlt (✅/❌)
- Preis
- Erstellt am
**Status ändern:**
- Click auf "✏️ Status"
- Neuen Status wählen:
- 📦 Erfasst
- ✅ Bezahlt
- 🚚 Abgeholt
- 🛣️ Unterwegs
- 🏢 Im Depot
- 🚛 Zur Zustellung
- ✅ Zugestellt
- ⚠️ Problem
- Standort angeben (z.B. "Depot München")
- Bemerkung (optional)
- Speichern
**3. Preise anpassen:**
Tabelle mit allen Preisen:
- Typ (Gewicht/Größe/Entfernung)
- Von/Bis-Bereich
- Beschreibung
- Preis (editierbar)
- Status (Aktiv/Inaktiv)
**Ändern:**
- Preis direkt in Tabelle eingeben
- 💾 Click zum Speichern
- Sofort aktiv!
💳 PayPal-Integration
Setup:
**1. PayPal Business Account:**
- Erstellen auf paypal.com
- Email notieren
**2. IPN aktivieren:**
- PayPal Dashboard → Einstellungen → Website-Zahlungen
- IPN-Benachrichtigungen → Ein
- IPN-URL: `https://ihre-domain.de/paypal-ipn.php`
**3. Portal konfigurieren:**
- Bei Installation PayPal Email eingeben
- ODER manuell in config.php ändern
Ablauf:
1. **Kunde erstellt Sendung**
2. **Preis wird berechnet**
3. **Kunde click "Mit PayPal bezahlen"**
4. **PayPal öffnet sich** (mit vorausgefüllten Daten)
5. **Kunde bezahlt**
6. **PayPal sendet IPN an Server**
7. **paypal-ipn.php verarbeitet:**
- Prüft Zahlung
- Setzt `bezahlt = 1`
- Ändert Status auf "bezahlt"
- Fügt Historie hinzu
8. **Sendung ist aktiv**
Sicherheit:
- IPN-Verifikation mit PayPal-Server
- Transaction-ID wird gespeichert
- Doppel-Zahlungen verhindert
📁 Dateistruktur
kurier-portal-v2/
│
├── config.php Konfiguration (von install.php)
├── functions.php Hilfsfunktionen
├── install.php Installation
├── style.css Design (Lila/Pink Gradient)
│
├── index.php Startseite
├── login.php Login & Registrierung
├── logout.php Logout
├── dashboard.php Kunden-Dashboard
├── neue-sendung.php Sendung erstellen (HERZSTÜCK!)
├── bezahlen.php PayPal-Zahlung
├── paypal-ipn.php PayPal IPN Handler
├── tracking.php Öffentliches Tracking
│
├── admin-login.php Admin Login
├── admin-logout.php Admin Logout
├── admin.php Admin-Panel
│
└── uploads/ Für Fotos (später)
└── index.php Schutz
🎨 Design
- **Farbschema:** Lila/Pink Gradient (wie DHL aber moderner)
- **Responsive:** Mobile-optimiert
- **Modern:** Cards, Badges, Timeline
- **Icons:** Emojis für bessere UX
🔧 Konfiguration
config.php:
php
define("DB_HOST", "localhost");
define("DB_NAME", "kurier_db");
define("DB_USER", "db_user");
define("DB_PASS", "db_password");
define("DB_PREFIX", "kurier_");
define("SITE_NAME", "KurierExpress");
define("TRACKING_PREFIX", "KE");
define("PAYPAL_EMAIL", "pay@pal.de");
define("PAYPAL_MODE", "live");
**Änderbar:**
- SITE_NAME: Portalnamen anpassen
- TRACKING_PREFIX: z.B. "DHL", "KX", "PKT"
- PAYPAL_EMAIL: Ihre PayPal-Email
🐛 Troubleshooting
Problem: PayPal IPN funktioniert nicht
**Lösung:**
1. IPN-URL in PayPal prüfen
2. cURL-Extension installiert?
bash
php -m | grep curl
3. Server erreichbar von außen?
4. HTTPS aktiviert?
Problem: Preis wird nicht berechnet
**Lösung:**
1. Alle Felder ausgefüllt?
2. Preise in DB vorhanden? (Install korrekt?)
3. Admin-Panel → Preise prüfen
Problem: Tracking nicht gefunden
**Lösung:**
- Tracking-Nummer korrekt? (inkl. Präfix)
- Sendung in DB vorhanden?
- Groß-/Kleinschreibung egal
Problem: Session-Fehler
**Lösung:**
- Cookies erlauben
- Cache leeren
- Inkognito-Modus testen
🔒 Sicherheit
Implementiert:
- ✅ **PDO Prepared Statements** (SQL Injection)
- ✅ **htmlspecialchars()** (XSS)
- ✅ **password_hash()** (Bcrypt)
- ✅ **session_regenerate_id()** (Session Fixation)
- ✅ **PayPal IPN Verification**
- ✅ **HTTPS empfohlen**
Empfehlungen:
1. **HTTPS verwenden** (Let's Encrypt kostenlos)
2. **Starke Passwörter**
3. **Regelmäßige Backups**
4. **PHP aktuell halten**
5. **PayPal IPN-Logs prüfen**
📊 Workflow-Beispiel
Typischer Ablauf:
**Tag 1 - 16:00 Uhr:**
Kunde:
1. Registriert sich
2. Erstellt Sendung (München → Berlin, 5kg, Express)
3. Preis: 28,99€
4. Bezahlt mit PayPal
→ Status: "Bezahlt"
**Tag 2 - 09:00 Uhr:**
Admin/Kurier:
1. Sieht neue Sendung im Admin-Panel
2. Holt Paket ab
3. Ändert Status auf "Abgeholt"
4. Standort: "München Zentrum"
→ Kunde sieht Update im Tracking
**Tag 2 - 14:00 Uhr:**
Admin/Kurier:
1. Status → "Unterwegs"
2. Standort: "Autobahn A9"
**Tag 2 - 18:00 Uhr:**
Admin/Kurier:
1. Status → "Im Depot"
2. Standort: "Depot Berlin"
**Tag 3 - 08:00 Uhr:**
Admin/Kurier:
1. Status → "Zur Zustellung"
2. Standort: "Berlin Mitte"
**Tag 3 - 14:30 Uhr:**
Admin/Kurier:
1. Paket zugestellt
2. Status → "Zugestellt"
3. Foto von Unterschrift (optional)
→ Kunde erhält Benachrichtigung
💡 Tipps
Für Betreiber:
1. **Preise anpassen:**
- Je nach Konkurrenz
- Regionale Unterschiede
- Spezial-Angebote
2. **Marketing:**
- Social Media
- Google Ads
- Lokale Werbung
3. **Kundenbindung:**
- Schnelle Zustellung
- Gutes Tracking
- Freundlicher Service
Für Admins:
1. **Status regelmäßig aktualisieren**
2. **Standort immer angeben**
3. **Bei Problemen Kunde kontaktieren**
4. **Fotos bei Zustellung machen**
Für Kunden:
1. **Maße genau angeben** (sonst Nachberechnung)
2. **Telefon für Rückfragen**
3. **Tracking-Nummer speichern**
🚀 Erweiterungen (Zukünftig)
**Mögliche Features:**
- [ ] PDF-Versandetikett generieren
- [ ] QR-Code auf Etikett
- [ ] SMS-Benachrichtigungen
- [ ] Foto-Upload bei Zustellung
- [ ] Route planen (Google Maps API)
- [ ] Mehrere Kuriere verwalten
- [ ] Kundenbewertungen
- [ ] Rabatt-Codes
- [ ] Bulk-Upload (CSV)
- [ ] API für Shops
📞 Support
**Bei Problemen:**
1. README durchlesen (diese Datei)
2. Troubleshooting checken
3. Datenbank prüfen
4. PayPal-IPN-Logs prüfen
🎯 Best Practices
Preisgestaltung:
- **Wettbewerbsfähig:** Mit DHL/Hermes vergleichen
- **Transparent:** Keine versteckten Kosten
- **Flexibel:** Admin kann anpassen
Tracking:
- **Aktuell halten:** Mindestens 2x täglich updaten
- **Standort angeben:** Kunde weiß wo Paket ist
- **Bemerkungen nutzen:** z.B. "Empfänger nicht angetroffen"
Zahlung:
- **Schnell:** Zahlung sofort nach IPN bestätigen
- **Sicher:** PayPal-Verifizierung nutzen
- **Transparent:** Kunde sieht Preis vor Zahlung
📄 Lizenz
Proprietär - Alle Rechte vorbehalten
🎉 Viel Erfolg mit Ihrem Kurierportal!
**Version:** 2.0
**Stand:** Januar 2026
**Sprache:** Deutsch 🇩🇪
**KOMPLETT FERTIG - PRODUKTIONSBEREIT!** 🚀
📝 Changelog
Version 2.0 (Aktuell)
**Features:**
- ✅ Komplettes Versand-System
- ✅ Gewicht, Maße, Wert-Eingabe
- ✅ Automatische Preisberechnung
- ✅ PayPal-Integration (IPN)
- ✅ Live-Tracking
- ✅ Admin-Panel
- ✅ Status-Historie
- ✅ Responsive Design
**Technisch:**
- ✅ PHP 8.0+ kompatibel
- ✅ PDO Prepared Statements
- ✅ Session-Sicherheit
- ✅ PayPal IPN-Verifikation
- ✅ Sauberer Code
**ALLES FUNKTIONIERT!** 🎯