sylius/payum-bundle
Sylius PayumBundle integrates the Payum payment abstraction with Sylius, enabling configurable payment gateways, secure capture and authorization workflows, and seamless checkout payment processing for Symfony-based e-commerce stores.
sylius/payum-bundle is a Symfony bundle with hard dependencies on Sylius\Bundle\ResourceBundle and Sylius\Bundle\CoreBundle; it cannot be installed into a Laravel application container. Frame the evaluation as "are we adopting Sylius for commerce?" — if the answer is no, this package drops out of the decision entirely and the real candidate is payum/payum core.offline/invoice gateway is configuration and roadmap sequencing rather than re-architecture. This de-risks single-provider dependency and makes "add a PSP" a scoping conversation, not a rebuild.PaymentRequest abstraction and moving away from Payum as the long-term payment model. Adopting it buys speed now at the cost of a known future migration — a trade worth making explicitly rather than by default.Adopt when:
[READ-ONLY] subtree split of the Sylius monorepo and arrives as a transitive dependency of sylius/sylius — you don't install it, you inherit it. The 11 stars and 0 dependents are artifacts of the split workflow, not signals of neglect; don't read them as adoption risk, and don't read them as health either.Look elsewhere when:
payum/payum core with an Eloquent StorageInterface if you genuinely need a uniform multi-gateway abstraction — but budget it as a multi-week build (credential encryption, gateway config UI, token lifecycle, state transitions), not an install.Operational rule for engineering: consume this via your sylius/sylius version constraint. Never pin sylius/payum-bundle independently — the split package tracks the monorepo and independent pinning invites version drift against core.
For executives: Payments are not something we build from scratch. This is Sylius's own integration with Payum, an established payment abstraction library, and it already covers the items that usually blow up a commerce budget: multiple payment providers behind one interface, authorize-then-capture, refunds from the admin console, and keeping card data out of our systems so PCI scope stays small. Two honest caveats. First, it only has value if we run commerce on Sylius — it is a Symfony bundle and cannot be dropped into a Laravel application; the low star count is a monorepo packaging artifact, not a neglect signal. Second, it is a bridge, not a permanent foundation: Sylius is replacing Payum with its own payment abstraction, so we adopt it to ship fast and ring-fence a migration estimate for a future Sylius major. The real risks to manage are strategic — framework lock-in and Payum's end-of-life path — not the package's quality.
For engineering: You get a gateway registry, per-payment-method gateway configuration, a payment state machine with authorize/capture/refund actions, and admin capture and refund operations out of the box. Use it as-is; do not fork it. It ships with sylius/sylius — do not install or pin the split package separately, or you will drift from core. Before we commit, two spikes: (1) confirm every PSP on our list has a maintained Payum gateway factory, including refund and 3DS behaviour; (2) prove credential encryption and key rotation before any live traffic. Then build token lifecycle and webhook idempotency, and test replay and out-of-order delivery — Payum's action-pipeline model is steep and few engineers can debug a stuck payment state machine at 2 a.m., so name an owner now. If we are Laravel-first, the recommended shape is Sylius as a payments service behind an internal API with a strangler boundary, not a shared runtime — Laravel and Symfony can coexist in one PHP version but not one application container. Finally, put the Payum-to-PaymentRequest transition in the upgrade plan today, while the codebase is small.
How can I help you explore Laravel packages today?