A Sylius plugin for integrating Monetico payment gateway into your e-commerce store.
- 💳 Complete Monetico payment gateway integration
- 🔒 Secure payment processing with MAC signature validation
- 🎨 Beautiful payment redirect page with loading animation
- 🌍 Support for both production and sandbox environments
- ✅ Full Sylius 2.0 Payment Request system compatibility
- 🔔 Automatic payment notification handling
- 📱 Responsive design
- PHP 8.2 or higher
- Sylius 2.0 or higher
- Install the plugin using Composer:
composer require lake-dynamics/sylius-monetico-plugin- Enable the plugin in your
config/bundles.php:
return [
// ...
LakeDynamics\SyliusMoneticoPlugin\LakeDynamicsSyliusMoneticoPlugin::class => ['all' => true],
];- Import the plugin configuration in
config/packages/_sylius.yaml:
imports:
- { resource: "@LakeDynamicsSyliusMoneticoPlugin/config/config.yaml" }- Import the plugin routes in
config/routes.yaml:
lake_dynamics_sylius_monetico:
resource: "@LakeDynamicsSyliusMoneticoPlugin/config/routes/shop.yaml"- Clear the cache:
bin/console cache:clear- Log in to the Sylius admin panel
- Go to Configuration > Payment methods
- Click Create
- Fill in the general information:
- Code:
monetico(or your preferred code) - Name:
Monetico - Enabled: Check this box
- Code:
- Select Monetico Payment Gateway as the gateway
- Configure the Monetico settings:
- TPE (Terminal Payment Electronic): Your Monetico TPE number
- Company ID (Société): Your Monetico company identifier
- Production Key: Your Monetico encryption key
- Use Production Environment: Check for production, uncheck for sandbox/test
To encrypt sensitive payment configuration data:
bin/console sylius:payment:generate-keyYou'll receive the following credentials from Monetico:
- TPE: Your terminal identifier (e.g.,
1234567) - Company ID: Your company code (e.g.,
mycompany) - Production Key: A 40-character hexadecimal key for MAC signature generation
- Customer Checkout: Customer selects Monetico as payment method
- Payment Initiation: System creates a PaymentRequest with ACTION_CAPTURE
- Field Preparation: Plugin prepares payment fields and generates MAC signature
- Redirect: Customer is redirected to Monetico payment page via auto-submit form
- Payment Processing: Customer completes payment on Monetico's secure portal
- Notification: Monetico sends payment result to your notification URL
- Validation: Plugin validates MAC signature and updates payment status
- Completion: Order is marked as paid or failed based on result
- MAC Signature: All data exchanged with Monetico is signed using HMAC SHA1
- Encryption: Payment credentials are encrypted in database
- Validation: All incoming notifications are validated before processing
- HTTPS: Production environment requires HTTPS
Payment Fields Sent to Monetico:
- TPE: Terminal identifier
- societe: Company identifier
- montant: Amount in EUR format (e.g., "10.50EUR")
- reference: Unique payment reference
- date: Payment date in GMT
- MAC: HMAC SHA1 signature
- texte-libre: Base64-encoded payment metadata (order ID, payment ID, payment request hash)
- contexte_commande: Base64-encoded customer and billing data
- url_retour_ok: Success return URL
- url_retour_err: Error return URL
Valid Payment Status:
paiement: Successful payment (production)payetest: Successful payment (test/sandbox)
# PHPUnit
vendor/bin/phpunit
# Behat (non-JS)
vendor/bin/behat --strict --tags="~@javascript&&~@mink:chromedriver"
# PHPStan
vendor/bin/phpstan analyse -c phpstan.neon -l max src/
# Coding Standards
vendor/bin/ecs check# Initialize environment
make init
# Initialize database
make database-init
# Load fixtures
make load-fixtures
# Run tests
make phpunit
make behat
make phpstan
make ecsProblem: Notification validation fails
Solution:
- Verify your Production Key is correct (40 hex characters)
- Ensure your server time is synchronized (GMT)
- Check Monetico dashboard for the correct key
- Verify notification URL is accessible from external networks
Problem: Auto-submit form doesn't work
Solution:
- Check browser console for JavaScript errors
- Verify payment fields are properly generated
- Ensure Monetico URL is accessible
- Check if Content Security Policy allows form submission
Problem: Monetico can't reach your notification endpoint
Solution:
- Ensure your server is accessible from external networks
- Verify URL in admin matches:
https://yourdomain.com/payment/monetico/notify - Check firewall rules allow Monetico IPs
- Configure this URL in your Monetico backend for server-to-server notifications
Sandbox Testing:
- Use sandbox credentials from Monetico
- Uncheck "Use Production Environment" in payment method config
- Payment URL:
https://p.monetico-services.com/test/paiement.cgi
Production:
- Use production credentials from Monetico
- Check "Use Production Environment"
- Payment URL:
https://p.monetico-services.com/paiement.cgi - Requires HTTPS
- Documentation: Monetico Documentation
- Sylius Docs: docs.sylius.com
- Issues: GitHub Issues
This plugin is licensed under the MIT License - see the LICENSE file for details.
Developed by LakeDynamics
Monetico is a trademark of Groupe BPCE.