Sylius Systempay Plugin
Open-source Sylius plugin that integrates the Systempay (Lyra) payment gateway into Symfony / Sylius e-commerce stores.
Sylius Systempay Plugin is an open-source payment plugin that plugs the Systempay gateway (operated by Lyra Network) into any Sylius-based e-commerce store. It exposes Systempay as a first-class Sylius payment method, handles the hosted-payment redirect flow, processes the asynchronous IPN webhook to confirm orders, and ships the configuration UI directly inside the Sylius admin.
Sylius is the reference open-source headless-commerce framework on top of Symfony, but it does not natively support Systempay — a gateway widely used by French and European merchants (BNP Paribas, Banque Populaire, Caisse d’Épargne, Crédit Agricole, Crédit Mutuel, La Banque Postale, Société Générale…). This plugin fills that gap with a production-ready, Sylius-idiomatic integration.
Stack
| Layer | Tech |
|---|---|
| Language | PHP 8.1+ (79% of the codebase) |
| Framework | Symfony / Sylius |
| Templating | Twig |
| Frontend assets | JavaScript, Webpack Encore |
| Payment SDK | lyracom/rest-php-sdk ^4.0 |
| Persistence | Doctrine ORM + database migrations |
| Tooling | PHPUnit, PHPSpec, Behat, PHPStan, ECS / PHPCS, Makefile, Docker Compose |
| CI | GitHub Actions |
What the plugin does
- Registers Systempay as a Sylius payment method with full admin configuration (shop ID, API keys, HMAC, environment toggle TEST / PRODUCTION).
- Overrides the Sylius shop checkout flow to redirect the customer to the Systempay hosted payment page with a correctly signed request.
- Exposes a secure webhook endpoint that validates the Lyra signature and transitions the Sylius order / payment state machine on success, failure or cancellation.
- Ships Doctrine migrations and a Twig / form translation bundle (admin form translations) out of the box.
- Provides a typical Sylius plugin layout (
src/,tests/,migrations/,bin/,composer.json,webpack.config.js, full QA toolchain) so it can be installed as a path repository inside any Sylius project.
Integration model
The plugin is meant to be cloned into ProjectDir/src/Plugins/sylius-systempay-plugin and wired through:
-
composer.json— declare thelyracom/rest-php-sdkdependency and a PSR-4 autoload entry forSylius\SystempayPlugin\pointing at the plugin’ssrc/. -
config/bundles.php— registerSylius\SystempayPlugin\SyliusSystempayPlugin. -
routes/sylius_shop.yaml— import@SyliusSystempayPlugin/Resources/config/shop_routing.yamlunder the locale prefix to override the checkout complete action. -
routes.yaml— import@SyliusSystempayPlugin/Resources/config/webhook_routing.yamlto expose the IPN endpoint. -
php bin/console doctrine:migrations:migrate— apply the bundled migrations.
My role
I am the author and maintainer of the plugin: design of the Sylius integration (payment method, gateway factory, checkout override, webhook controller), wiring of the Lyra REST SDK, Doctrine schema and migrations, admin form & translations, and the full QA / CI setup (PHPUnit, PHPSpec, Behat, PHPStan, ECS, GitHub Actions).