Intégration DPD
L'intégration DPD permet la création d'expéditions, la génération d'étiquettes PDF et le suivi des colis via l'API REST DPD/BRT.
Composants
| Composant | Fichier | Rôle |
|---|---|---|
DpdApi | src/CoreBundle/Api/DpdApi.php | Client API REST DPD |
DpdService | src/CoreBundle/Services/DpdService.php | Logique métier d'expédition |
DpdController | src/AppBundle/Controller/DpdController.php | Dashboard et routes web |
| Configuration | app/config/parameters.yml.dist | Paramètres de connexion |
Configuration
Paramètres requis dans parameters.yml :
dpd:
api_url: "https://api.dpd.fr"
user_id: "..."
password: "..."
customer_code: "..."
departure_depot: "..."
operating_mode: "..."
:::important Pattern d'injection
Symfony ne permet pas d'accéder aux paramètres imbriqués (%dpd.api_url%). Le service reçoit le tableau complet %dpd% et extrait les clés en PHP. Ce pattern est cohérent avec les autres intégrations transporteur (Geodis, etc.).
:::
Flux de données
Fonctionnalités du dashboard
- Liste des expéditions avec DataTables (pagination côté serveur)
- Filtres avancés (magasin, dates, tracking, n° commande)
- Création d'expéditions par lot
- Téléchargement des étiquettes PDF
- Relance des expéditions échouées
- Synchronisation du tracking
Codes d'erreur API
| Code | Signification |
|---|---|
| -1 | Erreur générale |
| -3 | Paramètres invalides |
| -5 | Authentification échouée |
| -10 | Dépôt inconnu |
| -11 | Code client inconnu |
| -21 | Expédition non trouvée |
| -22 | Expédition déjà confirmée |
| -30 | Service indisponible |
Phases d'intégration
Phase 1 — API et services backend
- Client API REST (
DpdApi) - Service m étier (
DpdService) - Sauvegarde des étiquettes PDF
- Mise à jour des
SaleProduct
Phase 2 — Interface utilisateur
- Dashboard DPD avec DataTables
- Routes AJAX pour la création et le suivi
- Intégration dans le flow "Processing Not Printed"
- Filtres et recherche par transporteur
Phase 3 (optionnelle)
- Impression par lot automatisée
- Commande de synchronisation automatique du tracking
- Notifications email
- Webhooks
- Dashboard statistique
Dépannage
ParameterNotFoundException pour %dpd.api_url%
Le service doit recevoir %dpd% (tableau complet), pas des clés individuelles. Vérifier que services.yml passe bien %dpd% et que le constructeur de DpdApi accepte array $config.
Dashboard inaccessible
- Vider le cache :
php bin/console cache:clear - Vérifier le service :
php bin/console debug:container mz.dpd.api - Tester la connexion API manuellement