wemakecustom/stripe-bundle
A Symfony bundle that integrates Stripe payments into your application, wrapping the Stripe PHP SDK in configurable services. It simplifies payment processing, webhook handling, and API access through Symfony's service container and configuration system.
Architecture fit — fundamental mismatch. The package is a Symfony 2 bundle, not a Laravel package. It ships as a Bundle subclass with a DependencyInjection/*Extension and container service definitions, registered through Symfony's AppKernel. Laravel has no equivalent bundle/extension lifecycle: providers are registered in config/app.php, and there is no automatic loading of Symfony DI extensions or bundle Resources/config wiring. Nothing in the package's value proposition is Laravel-native, and its actual substance is a thin service-container wrapper around stripe/stripe-php — the SDK, not the wrapper, is where the functionality lives.
Integration feasibility — low. It can technically be pulled into a Laravel composer.json, but the classes it exposes will not be instantiated automatically, and the bundle bootstrap will not run. Making it work means vendoring the source, rewriting the container wiring as a Laravel service provider, and re-implementing the configuration layer that Symfony's Configuration/Extension classes provide. At that point the remaining artifact is a handful of wrapper methods over the SDK, which is cheaper to write than to port.
Technical risk — high. Symfony 2 has been end-of-life since 2019 (later 2.x lines earlier still). The package signals abandonment: 7 stars, 0 dependents, a low composite score (0.345). It almost certainly pins an old stripe/stripe-php and therefore an old Stripe API version. Concretely, that predicts:
PaymentIntent support, so no SCA/3DS2 handling — a revenue problem for any EU/UK card traffic.Key questions to answer before any code is written:
laravel/cashier already covers this.)--ignore-platform-reqs?Stack fit — poor. A Laravel 9/10/11 application on PHP 8.1+ requires symfony/* v5/v6 components and a current stripe/stripe-php. This bundle's constraints will conflict on both axes. Expect a dependency resolution failure on the first composer require; the realistic outcome is a vendored copy with platform requirements bypassed, which trades a Composer error for runtime errors.
Recommended migration path — do not migrate the bundle; migrate the requirement. Three viable routes, in order of preference:
| Option | When to choose | Effort | Risk |
|---|---|---|---|
stripe/stripe-php behind an internal StripeGateway adapter |
Any non-subscription need: charges, PaymentIntents, refunds, webhooks | 2–5 days | Low |
laravel/cashier |
Subscriptions, trials, invoices, customer portal needed | 3–7 days | Low |
| Fork and port the bundle | Only if a Symfony 2 app must keep running while being replaced | 2–4 weeks | High |
The adapter route is the general case: define a narrow interface (charge, refund, createIntent, handleWebhook), implement it against the SDK, and bind it in a service provider. This preserves the only real idea in the bundle — isolating Stripe calls behind a seam — without inheriting the coupling.
Compatibility notes. Watch for PSR-0 vs PSR-4 autoloading, Doctrine entity mappings if the bundle ships persistence, and hard-coded API version strings in the wrapper that will silently override the account default.
Sequencing.
stripe-php + laravel/cashier in a throwaway Laravel app, exercising the target flows against Stripe test mode. Timebox to 3 days.StripeGateway interface from the spike's findings.Maintenance — you would own it. No upstream activity means no CVE response, no PHP minor-version fixes, and no Stripe API-drift updates. Forking converts a dependency into an internal product with a permanent tax; budget ~1–2 engineer-days per quarter just to keep the SDK and API version current, plus incident time when Stripe deprecates an endpoint.
Support — effectively none. Seven stars and zero dependents means no community to escalate to, no Stack Overflow corpus, and no chance Stripe Support will engage on wrapper-specific behavior (they will correctly point at the SDK). Any single engineer who understands the ported code becomes a knowledge silo and a bus-factor risk.
Scaling — neutral to negative. The wrapper adds no throughput value; the constraints are Stripe's rate limits and your webhook processing. Design for it explicitly: queue webhook events, make handlers idempotent on event.id, and decouple fulfillment from the HTTP response. The bundle's era predates most of this guidance, so it will not nudge the team toward correct patterns.
Failure modes to plan for:
symfony/* or Guzzle.Ramp-up. A developer fluent in Stripe and Laravel can reach productivity on the recommended adapter path in under a week, because the SDK is well documented. Ramp-up on a ported Symfony 2 bundle is materially worse — days to weeks — and the resulting knowledge is non-transferable to any other project.
TPM recommendation. Do not adopt. The 0.345 score and near-zero adoption reflect a package whose useful content is entirely upstream in stripe/stripe-php. Spend the one-week spike on laravel/cashier or a 200-line adapter instead, and treat the existence of this bundle in the codebase as a modernization signal rather than an integration target.
How can I help you explore Laravel packages today?