ets/payment-ogone-bundle
Ogone payment provider for JMSPaymentCoreBundle, letting Symfony apps process payments through the Ogone gateway via JMSPaymentCore. Install and usage docs included.
Architecture fit. Despite being filed here as a Laravel/PHP package, this is a Symfony bundle, not a Laravel package. It is a provider plugin for JMSPaymentCoreBundle (JMS PaymentCore), meaning it plugs into that bundle's provider/action abstraction rather than exposing standalone services. There is no service provider, no Laravel package manifest, and no framework-agnostic entry point. For a Laravel codebase, "install and use" is not an available option — you would be porting the provider's request-building and response-verification logic into your own payment layer, at which point you are really just using this repo as a reference implementation.
Integration feasibility. Two chained dependencies must both be viable: this bundle and JMSPaymentCoreBundle. JMS PaymentCore is a legacy Symfony 2/3-era library with negligible recent activity, so the realistic integration target is a Symfony application already on (or pinned to) that stack. Composer constraints, autoloading conventions, and the bundle registration pattern all assume Symfony's kernel, not Laravel's container. The underlying gateway is the Ogone e-Commerce form-post/redirect API — Ogone became Ingenico, now Worldline, and this API is the legacy surface that Worldline maintains but actively steers customers away from in favour of Direct/Connect.
Technical risk. High, concentrated in a few areas:
Key questions to answer before committing:
Stack fit. Poor for Laravel, plausible-but-aging for Symfony. Concretely:
PaymentGateway interface, and bind it in a service provider. Do not attempt to bridge Symfony bundles into Laravel — the container, event, and config layers do not map.Migration path. The pragmatic route is an anti-corruption layer: define your own OgoneGateway contract (create payment, parse notification, verify signature, map status), implement it either by delegating to this bundle or by porting its logic. This makes the bundle swappable, lets you test against a fake, and means a future move to Worldline Direct or a maintained SDK is a contained change rather than a rewrite of checkout.
Compatibility. Audit composer.json before anything else: PHP constraint, Symfony constraint, PaymentCore constraint, and whether the package is installable at all on a current runtime. Confirm the signature algorithm against the merchant account configuration in the Worldline back office — mismatch here is the most common first-integration failure.
Sequencing.
Maintenance. Assume you own it. The upstream signals — dead CI and code-quality badges, 12 stars, no dependents, sporadic tagging — indicate a low-ceremony, best-effort project. Budget for forking and vendoring if you adopt it; plan for the possibility that a future Worldline API change is never reflected upstream.
Support. There is no commercial support path. Worldline support will not diagnose issues in a third-party bundle, and the bundle's maintainers are not a support organisation. Your internal team is the escalation tier, which means at least one person must be able to read the source and reason about signatures and status codes.
Scaling. Transaction volume itself is not the constraint — a redirect flow scales trivially. The operational scaling concerns are elsewhere: idempotency on retries (double-charge risk), reliable processing of asynchronous notifications (duplicates, out-of-order arrival, missed callbacks), and reconciliation between your order state and Worldline settlement files. None of that is provided by a thin provider plugin; it is your responsibility.
Failure modes to instrument for:
Ramp-up. A mid-level developer familiar with payments can audit and sandbox this in roughly one to two weeks; less if the abstraction layer already exists. The real cost is domain ramp-up — PSD2/SCA rules, 3DS transaction states, and Worldline-specific status semantics — not the code volume. Given the small footprint, the realistic recommendation is: do not adopt as a dependency, adopt as a reference, and build the thin adapter yourself so the eventual Worldline API migration is a swap rather than a project.
How can I help you explore Laravel packages today?