Aller au contenu principal

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

ComposantFichierRôle
DpdApisrc/CoreBundle/Api/DpdApi.phpClient API REST DPD
DpdServicesrc/CoreBundle/Services/DpdService.phpLogique métier d'expédition
DpdControllersrc/AppBundle/Controller/DpdController.phpDashboard et routes web
Configurationapp/config/parameters.yml.distParamè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

CodeSignification
-1Erreur générale
-3Paramètres invalides
-5Authentification échouée
-10Dépôt inconnu
-11Code client inconnu
-21Expédition non trouvée
-22Expédition déjà confirmée
-30Service 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

  1. Vider le cache : php bin/console cache:clear
  2. Vérifier le service : php bin/console debug:container mz.dpd.api
  3. Tester la connexion API manuellement