Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Stripe Bundle Laravel Package

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.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

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:

  • No PaymentIntent support, so no SCA/3DS2 handling — a revenue problem for any EU/UK card traffic.
  • No idempotency-key plumbing, raising double-charge risk on retries.
  • Webhook handling without modern signature-verification ergonomics.
  • No PHP 8 compatibility guarantees; old Guzzle transitive pins will collide with current Laravel.

Key questions to answer before any code is written:

  1. What is the actual required capability — one-off charges, subscriptions, webhooks, or all three? (If subscriptions: laravel/cashier already covers this.)
  2. Which Stripe API version does the pinned SDK target, and does the account already have a version pinned that would conflict?
  3. Is there an existing Symfony 2 application this must live inside, or is this a greenfield Laravel build? The answer changes the recommendation entirely.
  4. Which PHP/Laravel versions are in scope, and does a Composer solve even resolve without --ignore-platform-reqs?
  5. License and provenance — who owns the fork if we need patches?
  6. Is there any behavior in the wrapper (e.g., plan/coupon models, Doctrine entities) we actually need, or is it purely pass-through?

Integration Approach

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.

  1. Confirm scope and success criteria (which Stripe objects, which flows).
  2. Spike: current stripe-php + laravel/cashier in a throwaway Laravel app, exercising the target flows against Stripe test mode. Timebox to 3 days.
  3. Freeze the StripeGateway interface from the spike's findings.
  4. Build webhook endpoint with signature verification and idempotent event processing (queue-backed).
  5. Backfill contract tests against Stripe test clocks/fixtures; assert on error-code mapping, not on wrapper internals.
  6. Only if a Symfony 2 app exists: run the bundle in place, dual-write nothing, and cut over by feature flag once the Laravel path is proven.
  7. Decommission: remove the dependency, delete vendored code, document the API version pin.

Operational Impact

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:

  • Silent API drift — a hard-coded API version keeps working until Stripe deprecates an endpoint; failures arrive as production 4xx, not as build errors.
  • SCA/3DS2 gaps — European and UK cards decline at authentication, appearing as a conversion drop rather than an error spike. This is the highest business-impact risk.
  • Duplicate charges — absent idempotency keys, retried requests double-charge; refunds and support load follow.
  • Webhook forgery or replay — missing or hand-rolled signature verification, or non-idempotent handlers.
  • Dependency deadlock — a transitive security patch in a Laravel dependency becomes unapplicable because the bundle pins an old symfony/* or Guzzle.
  • Opaque error mapping — Stripe decline codes flattened into generic exceptions, making retry-vs-fail decisions guesswork.

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator
equipc/laravel-email-database-log
adedsec/nova-translated-labels