20-02-2026
This commit is contained in:
parent
a8b395e20d
commit
a00c42e770
252 changed files with 28785 additions and 8907 deletions
93
dev/2026-01-22/dhl-cancellation-info.md
Normal file
93
dev/2026-01-22/dhl-cancellation-info.md
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
# DHL Sendungs-Stornierung - Troubleshooting
|
||||
|
||||
## Problem: "RF-UndefinedResource" Fehler
|
||||
|
||||
### Aktuelle Situation:
|
||||
- **Config:** Sandbox-Modus aktiv (`DHL_SANDBOX=true`)
|
||||
- **Base URL:** `https://api-sandbox.dhl.com`
|
||||
- **Sendung:** ID 11, Nr. `0034043333301020021021115`
|
||||
- **Status:** `created` (stornierbar)
|
||||
- **Fehler:** "RF-UndefinedResource"
|
||||
|
||||
### Ursachen:
|
||||
|
||||
#### 1. **Sandbox-Einschränkungen**
|
||||
Im DHL Sandbox-Modus:
|
||||
- Sendungen sind nur für begrenzte Zeit verfügbar
|
||||
- Test-Sendungen werden nach kurzer Zeit automatisch gelöscht
|
||||
- Stornierung ist nur innerhalb weniger Stunden möglich
|
||||
|
||||
#### 2. **Zeitfenster überschritten**
|
||||
- Sendung erstellt: `2026-01-23 13:08:07`
|
||||
- Wenn mehr als 2-3 Stunden vergangen: Nicht mehr stornierbar
|
||||
|
||||
#### 3. **Sandbox vs. Production Mismatch**
|
||||
- Sendung im Sandbox erstellt
|
||||
- Versuch im Production-Modus zu stornieren (oder umgekehrt)
|
||||
|
||||
### Lösungen:
|
||||
|
||||
#### Option 1: Neue Test-Sendung erstellen
|
||||
```bash
|
||||
# Neue Sendung erstellen und SOFORT stornieren (innerhalb von Minuten)
|
||||
# Im DHL Cockpit: Neue Sendung erstellen → Sofort Storno-Button klicken
|
||||
```
|
||||
|
||||
#### Option 2: Production-Modus testen (nur mit echten Credentials!)
|
||||
```env
|
||||
# .env
|
||||
DHL_SANDBOX=false
|
||||
DHL_BASE_URL=https://api-eu.dhl.com
|
||||
DHL_API_KEY=<production_key>
|
||||
DHL_USERNAME=<production_user>
|
||||
DHL_PASSWORD=<production_password>
|
||||
```
|
||||
|
||||
#### Option 3: Status manuell setzen (nur für Entwicklung)
|
||||
```bash
|
||||
php artisan tinker
|
||||
```
|
||||
```php
|
||||
$shipment = Acme\Dhl\Models\DhlShipment::find(11);
|
||||
$shipment->update(['status' => 'canceled']);
|
||||
```
|
||||
|
||||
### Empfehlung:
|
||||
|
||||
**Für Sandbox-Tests:**
|
||||
1. Sendung erstellen
|
||||
2. **SOFORT** (innerhalb von 1-2 Minuten) stornieren
|
||||
3. Nicht länger warten
|
||||
|
||||
**Für Production:**
|
||||
- Stornierung funktioniert zuverlässig innerhalb von 24 Stunden
|
||||
- Sendungen bleiben länger in der API verfügbar
|
||||
|
||||
### Debug-Commands:
|
||||
|
||||
```bash
|
||||
# Prüfe Sendung
|
||||
php artisan tinker --execute="
|
||||
\$s = Acme\Dhl\Models\DhlShipment::find(11);
|
||||
echo 'Status: ' . \$s->status . PHP_EOL;
|
||||
echo 'Created: ' . \$s->created_at . PHP_EOL;
|
||||
echo 'Age: ' . \$s->created_at->diffForHumans() . PHP_EOL;
|
||||
"
|
||||
|
||||
# Prüfe Config
|
||||
php artisan tinker --execute="
|
||||
\$c = (new \App\Http\Controllers\SettingController())->getDhlConfig();
|
||||
echo 'Mode: ' . (\$c['base_url'] == 'https://api-sandbox.dhl.com' ? 'SANDBOX' : 'PRODUCTION') . PHP_EOL;
|
||||
"
|
||||
```
|
||||
|
||||
### Workaround für alte Sandbox-Sendungen:
|
||||
|
||||
Da alte Sandbox-Sendungen nicht mehr storniert werden können, setzen wir den Status manuell:
|
||||
|
||||
```php
|
||||
// Alle alten "created" Sendungen als "failed" markieren
|
||||
Acme\Dhl\Models\DhlShipment::where('status', 'created')
|
||||
->where('created_at', '<', now()->subHours(6))
|
||||
->update(['status' => 'failed']);
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue