rikazarai / sylius-mondial-relay-plugin
Plugin Sylius 2.1 pour l'intégration Mondial Relay avec sélection de points relais et impression d'étiquettes
Installs: 3
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:sylius-plugin
Requires
- php: ^8.3
- ext-json: *
- ext-simplexml: *
- ext-soap: *
- sylius/sylius: ^2.1
- symfony/framework-bundle: ^7.3
- symfony/http-client: ^7.3
Requires (Dev)
- behat/behat: ^3.14
- friends-of-behat/mink: ^1.11
- friends-of-behat/mink-browserkit-driver: ^1.6
- friends-of-behat/mink-extension: ^2.7
- friends-of-behat/page-object-extension: ^0.3
- friends-of-behat/suite-settings-extension: ^1.0
- friends-of-behat/symfony-extension: ^2.4
- friends-of-behat/variadic-extension: ^1.4
- phpunit/phpunit: ^11.0
- symfony/browser-kit: ^7.3
- symfony/debug-bundle: ^7.3
This package is auto-updated.
Last update: 2025-08-27 13:48:44 UTC
README
Plugin Sylius moderne pour l'intégration de Mondial Relay avec sélection de points de retrait et impression d'étiquettes.
Développé par @RiKaZaRai 🚀
✨ Fonctionnalités
- 🎯 Sélection de points relais avec interface utilisateur moderne
- 🗺️ Cartographie interactive (OpenStreetMap ou Google Maps)
- 🏷️ Impression d'étiquettes d'expédition automatique
- 💰 Calcul de prix configurable par tranches de poids
- 🌐 Support multilingue (FR/EN)
- 📱 Interface responsive compatible mobile
- ⚡ API moderne avec support HTTP Client de Symfony
- 🧪 Compatible Sylius 2.1, Symfony 7.3, PHP 8.4
📋 Prérequis
- PHP 8.3+
- Sylius 2.1+
- Symfony 7.3+
- Extension SOAP de PHP
- Compte marchand Mondial Relay
🚀 Installation
1. Installation via Composer
composer require rikazarai/sylius-mondial-relay-plugin
2. Enregistrer le plugin
Ajoutez le plugin à config/bundles.php
:
<?php return [ // ... RiKaZaRai\SyliusMondialRelayPlugin\RiKaZaRaiSyliusMondialRelayPlugin::class => ['all' => true], ];
3. Configuration
Créez le fichier config/packages/rikazarai_sylius_mondial_relay.yaml
:
rikazarai_sylius_mondial_relay: wsdl: '%env(MONDIAL_RELAY_WSDL)%' merchant_id: '%env(MONDIAL_RELAY_MERCHANT_ID)%' private_key: '%env(MONDIAL_RELAY_PRIVATE_KEY)%' map_provider: open_street_map # ou 'google' google_api_key: '%env(GOOGLE_API_KEY)%' # requis si map_provider: google enable_ticket_printing: true
Sylius Mondial Relay Plugin
Plugin Sylius moderne pour l'intégration de Mondial Relay avec sélection de points de retrait et impression d'étiquettes.
Développé par @RiKaZaRai 🚀
✨ Fonctionnalités
- 🎯 Sélection de points relais avec interface utilisateur moderne
- 🗺️ Cartographie interactive (OpenStreetMap ou Google Maps)
- 🏷️ Impression d'étiquettes d'expédition automatique
- 💰 Calcul de prix configurable par tranches de poids
- 🌐 Support multilingue (FR/EN)
- 📱 Interface responsive compatible mobile
- ⚡ API moderne avec support HTTP Client de Symfony
- 🛠️ Configuration via interface admin (plus de fichiers .env !)
- 🧪 Compatible Sylius 2.1, Symfony 7.3, PHP 8.4
- 🔧 Test de connexion API intégré
- 🏢 Multi-canal - Configuration par boutique
📋 Prérequis
- PHP 8.4+
- Sylius 2.1+
- Symfony 7.3+
- Extension SOAP de PHP
- Compte marchand Mondial Relay
🚀 Installation
1. Installation via Composer
composer require rikazarai/sylius-mondial-relay-plugin
2. Enregistrer le plugin
Ajoutez le plugin à config/bundles.php
:
<?php return [ // ... RiKaZaRai\SyliusMondialRelayPlugin\RiKaZaRaiSyliusMondialRelayPlugin::class => ['all' => true], ];
3. Routing
Ajoutez les routes dans config/routes.yaml
:
rikazarai_sylius_mondial_relay_plugin: resource: "@RiKaZaRaiSyliusMondialRelayPlugin/Resources/config/routing.yaml" # Routes d'administration rikazarai_sylius_mondial_relay_admin: resource: "@RiKaZaRaiSyliusMondialRelayPlugin/Resources/config/admin_routing.yaml" prefix: /admin
4. Modification de l'entité Shipment
Dans votre entité src/Entity/Shipping/Shipment.php
:
<?php namespace App\Entity\Shipping; use Doctrine\ORM\Mapping as ORM; use Sylius\Component\Core\Model\Shipment as BaseShipment; use RiKaZaRai\SyliusMondialRelayPlugin\Model\PickupPointTrait; #[ORM\Entity] #[ORM\Table(name: 'sylius_shipment')] class Shipment extends BaseShipment { use PickupPointTrait; }
5. Migration de base de données
php bin/console doctrine:migrations:diff php bin/console doctrine:migrations:migrate
6. Configuration Webpack (optionnel)
Ajoutez les assets JavaScript dans votre configuration Webpack :
// webpack.config.js (shop) Encore // ... .addEntry('rikazarai-mondial-relay', './vendor/rikazarai/sylius-mondial-relay-plugin/src/Resources/public/js/mondial-relay.js')
⚙️ Configuration
Configuration via Interface Admin (Recommandé) 🆕
- Connectez-vous à l'administration Sylius
- Allez dans "Configuration" → "Mondial Relay"
- Remplissez vos identifiants Mondial Relay :
- Identifiant marchand (ex: BDTEST13)
- Clé privée
- Informations expéditeur (nom, adresse, etc.)
- Testez la connexion avec le bouton dédié
- Choisissez votre fournisseur de cartes :
- OpenStreetMap (gratuit)
- Google Maps (nécessite une clé API)
- Sauvegardez ✨
Avantages de la configuration admin :
- 🔒 Plus sécurisé - Pas de clés dans les fichiers
- 👥 Multi-utilisateurs - Chaque admin peut configurer
- 🖥️ Interface graphique - Plus simple à utiliser
- 🏢 Multi-canal - Configuration différente par boutique
- 🧪 Test intégré - Vérification automatique des identifiants
Configuration Legacy (.env)
Si vous préférez l'ancienne méthode, ajoutez à votre fichier .env
:
MONDIAL_RELAY_WSDL=https://api.mondialrelay.com/Web_Services.asmx?WSDL MONDIAL_RELAY_MERCHANT_ID=votre_id_marchand MONDIAL_RELAY_PRIVATE_KEY=votre_cle_privee GOOGLE_API_KEY=votre_cle_google_maps # optionnel
🎛️ Tarification
Le plugin utilise un système de tranches de prix par poids. Configuration par défaut :
- Jusqu'à 500g : 3,90€
- Jusqu'à 1kg : 4,90€
- Jusqu'à 2kg : 5,90€
- Jusqu'à 5kg : 6,90€
- Jusqu'à 10kg : 8,90€
- Jusqu'à 20kg : 12,90€
- Jusqu'à 30kg : 16,90€
Ces tarifs sont configurables dans l'administration Sylius lors de la création de la méthode d'expédition.
📖 Utilisation
1. Création de la méthode d'expédition
- Allez dans l'administration Sylius : Configuration → Méthodes d'expédition
- Créez une nouvelle méthode
- Sélectionnez "Mondial Relay" comme calculateur
- Configurez les tranches de prix selon vos besoins
2. Processus de commande
- Le client sélectionne "Mondial Relay" comme mode de livraison
- Une interface apparaît pour rechercher des points relais
- Le client saisit son code postal et recherche
- Une liste et une carte des points relais s'affichent
- Le client sélectionne son point relais préféré
- Les informations sont sauvegardées avec la commande
3. Gestion des commandes
- Dans l'administration, accédez aux détails d'une commande
- Si la commande utilise Mondial Relay et a un point relais sélectionné
- Un bouton "Imprimer l'étiquette Mondial Relay" apparaît
- Cliquez pour générer et imprimer l'étiquette
🗺️ Fournisseurs de cartes
OpenStreetMap (Gratuit, par défaut)
- ✅ Gratuit et open source
- ✅ Aucune clé API requise
- ✅ Respect de la vie privée
Google Maps
- 🔑 Clé API Google requise
- ✅ Interface familière pour les utilisateurs
- ✅ Recherche avancée avec suggestions de lieux
- ⚠️ Payant au-delà du quota gratuit
🧪 Tests
# Tests unitaires vendor/bin/phpunit # Tests Behat vendor/bin/behat
🔧 Développement
Structure du projet
src/
├── Controller/ # Contrôleurs API et admin
├── DependencyInjection/ # Configuration bundle
├── Entity/ # Entités Doctrine
├── EventListener/ # Gestionnaires d'événements
├── Form/ # Types de formulaires
├── Menu/ # Menu builders
├── Migrations/ # Migrations base de données
├── Model/ # Traits et modèles
├── Service/ # Services (API client, etc.)
├── ShippingCalculator/ # Calculateur de frais
├── Twig/ # Extensions Twig
└── Resources/
├── config/ # Configuration YAML
├── public/ # Assets JavaScript/CSS
├── translations/ # Traductions FR/EN
└── views/ # Templates Twig
API Endpoints
GET /mondial-relay/pickup-points/search?zipcode={code}
- Recherche de points relaisPOST /mondial-relay/pickup-points/select
- Sélection d'un point relaisGET /mondial-relay/pickup-points/map/{zipcode}
- Interface carteGET /admin/orders/{token}/mondial-relay/print-ticket
- Impression d'étiquettes
🤝 Contribution
Les contributions sont les bienvenues ! Merci de :
- Fork le projet
- Créer une branche pour votre fonctionnalité (
git checkout -b feature/amazing-feature
) - Commiter vos changements (
git commit -m 'Add amazing feature'
) - Pousser vers la branche (
git push origin feature/amazing-feature
) - Ouvrir une Pull Request
🐛 Signaler un bug
Si vous trouvez un bug, merci d'ouvrir une issue avec :
- Une description détaillée du problème
- Les étapes pour reproduire
- Votre environnement (PHP, Sylius, Symfony versions)
- Les logs d'erreur si disponibles
📝 Licence
Ce plugin est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
🙏 Remerciements
- Merci à la communauté Sylius pour ce framework fantastique
- Inspiré du plugin original de Sherlockode
- Mondial Relay pour leur API
🔗 Liens utiles
- Site officiel Mondial Relay
- Créer un compte Mondial Relay
- Documentation API Mondial Relay
- Documentation Sylius
- Sylius Plugin Store
📊 Statistiques
Développé avec ❤️ par @RiKaZaRai pour la communauté Sylius
🚀 Version 2.0 avec interface d'administration intégrée !
Ajoutez les routes dans config/routes.yaml
:
rikazarai_sylius_mondial_relay_plugin: resource: "@RiKaZaRaiSyliusMondialRelayPlugin/Resources/config/routing.yaml"
6. Modification de l'entité Shipment
Dans votre entité src/Entity/Shipping/Shipment.php
:
<?php namespace App\Entity\Shipping; use Doctrine\ORM\Mapping as ORM; use Sylius\Component\Core\Model\Shipment as BaseShipment; use RiKaZaRai\SyliusMondialRelayPlugin\Model\PickupPointTrait; #[ORM\Entity] #[ORM\Table(name: 'sylius_shipment')] class Shipment extends BaseShipment { use PickupPointTrait; }
7. Migration de base de données
php bin/console doctrine:migrations:diff php bin/console doctrine:migrations:migrate
8. Configuration Webpack (optionnel)
Ajoutez les assets JavaScript dans votre configuration Webpack :
// webpack.config.js (shop) Encore // ... .addEntry('rikazarai-mondial-relay', './vendor/rikazarai/sylius-mondial-relay-plugin/src/Resources/public/js/mondial-relay.js')
🎛️ Configuration
Calcul des prix
Le plugin utilise un système de tranches de prix par poids. Configuration par défaut :
- Jusqu'à 500g : 3,90€
- Jusqu'à 1kg : 4,90€
- Jusqu'à 2kg : 5,90€
- Jusqu'à 5kg : 6,90€
- Jusqu'à 10kg : 8,90€
- Jusqu'à 20kg : 12,90€
- Jusqu'à 30kg : 16,90€
Ces tarifs sont configurables dans l'administration Sylius lors de la création de la méthode d'expédition.
Cartes
Le plugin supporte deux fournisseurs de cartes :
OpenStreetMap (gratuit, par défaut)
rikazarai_sylius_mondial_relay: map_provider: open_street_map
Google Maps (nécessite une clé API)
rikazarai_sylius_mondial_relay: map_provider: google google_api_key: '%env(GOOGLE_API_KEY)%'
📖 Utilisation
1. Création de la méthode d'expédition
- Allez dans l'administration Sylius : Configuration → Méthodes d'expédition
- Créez une nouvelle méthode
- Sélectionnez "Mondial Relay" comme calculateur
- Configurez les tranches de prix selon vos besoins
2. Processus de commande
- Le client sélectionne "Mondial Relay" comme mode de livraison
- Une interface apparaît pour rechercher des points relais
- Le client saisit son code postal et recherche
- Une liste et une carte des points relais s'affichent
- Le client sélectionne son point relais préféré
- Les informations sont sauvegardées avec la commande
3. Gestion des commandes
- Dans l'administration, accédez aux détails d'une commande
- Si la commande utilise Mondial Relay et a un point relais sélectionné
- Un bouton "Imprimer l'étiquette Mondial Relay" apparaît
- Cliquez pour générer et imprimer l'étiquette
🧪 Tests
# Tests unitaires vendor/bin/phpunit # Tests Behat vendor/bin/behat
🤝 Contribution
Les contributions sont les bienvenues ! Merci de :
- Fork le projet
- Créer une branche pour votre fonctionnalité
- Commiter vos changements
- Pousser vers la branche
- Ouvrir une Pull Request
🐛 Signaler un bug
Si vous trouvez un bug, merci d'ouvrir une issue avec :
- Une description détaillée du problème
- Les étapes pour reproduire
- Votre environnement (PHP, Sylius, Symfony versions)
- Les logs d'erreur si disponibles
📝 Licence
Ce plugin est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
🙏 Remerciements
- Merci à la communauté Sylius pour ce framework fantastique
- Inspiré du plugin original de Sherlockode
- Mondial Relay pour leur API
🔗 Liens utiles
- Site officiel Mondial Relay
- Documentation API Mondial Relay
- Documentation Sylius
- Sylius Plugin Store
Développé avec ❤️ par @RiKaZaRai pour la communauté Sylius