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

flosch/stripe-bundle

Symfony bundle integrating the Stripe PHP library, with service configuration and dependency injection for convenient access to Stripe payments, customers, subscriptions, and webhook handling.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The first thing a TPM must surface is a framing error in the intake: despite being routed as a "Laravel/PHP package," flosch/stripe-bundle is a Symfony bundle. It has no Laravel service provider, no facade, no publishable config, and no auto-discovery. Its entire value is registering the Stripe PHP SDK in Symfony's DI container and exposing a configured client. On a Laravel roadmap this is a category mismatch, not a candidate. On a Symfony 3/4/5 codebase it is a reasonable-but-dated convenience. This single fact should reset any discussion of "adopting a payments package."

Integration feasibility. The underlying stripe/stripe-php SDK is the only substantive artifact; the bundle is a thin config-to-SDK wrapper (~50 lines of real logic). Two feasibility gates determine whether the package is even installable: (1) Composer resolution against modern PHP and symfony/framework-bundle — the symfony >= 3 target implies long-EOL constraints that will conflict in a Laravel app (which ships only Symfony components, not FrameworkBundle), often forcing --ignore-platform-reqs, unacceptable for a payments dependency; and (2) Stripe SDK major version, which governs API version pinning. The honest TPM conclusion: a first-party wrapper is roughly 0.5–1 dev-day, while forcing this bundle into Laravel is an open-ended, high-blast-radius spike. Feasibility is effectively poor for the stated stack, plausible for Symfony.

Technical risk. This is revenue-adjacent code with essentially no ecosystem backstop: 29 stars, 0 dependents, no visible CI, test suite, security policy, or release cadence. That combination is a supply-chain and maintenance risk, not a convenience. The bus factor is one; the fork path exists (MIT) but converts a dependency into an internal maintenance obligation. Version drift is the subtlest risk — a stale wrapper encourages unpinned Stripe API versions, and Stripe's rolling deprecations then change webhook/response shapes silently rather than loudly. The bundle also provides no webhook signature verification, no idempotency handling, no retry/backoff — the parts that actually matter in production.

Key questions.

  1. What is the exact stripe/stripe-php constraint, and does it permit a current SDK (StripeClient, explicit API version)?
  2. What are the PHP and symfony/framework-bundle constraints — is anything still receiving security patches?
  3. Is there any CI, test suite, security policy, or documented release process? Any maintained fork?
  4. Does it verify webhook signatures, or only inject an API key?
  5. Is the "Laravel package" framing simply a taxonomy error in our intake, and how many other pipeline items share it?
  6. If we fork, who owns it and what is the support contract?

Integration Approach

Stack fit. The TPM recommendation is do not adopt as a dependency on a Laravel stack. Instead: bind stripe/stripe-php as a container singleton in a first-party service provider, mirror the bundle's config surface (public/secret key, API version, optional client options), and add webhook signature verification — none of which the bundle supplies. For a genuinely Symfony application, adoption is a low-effort win only if the Symfony version is still supported; otherwise wire the SDK directly. The pragmatic middle path: treat the bundle as a reference implementation to copy, not a package to install. That extracts its only value (the wiring pattern) without importing its risk.

Migration path. New Laravel work: zero migration — start SDK-first with an in-house wrapper. Existing Symfony app already on the bundle: define the Stripe client explicitly in config/services.yaml, delete the bundle, and preserve behavior behind the same service id. Existing Laravel app that vendor-patched the bundle in: replace with the first-party provider behind the same internal interface so call sites do not change, then remove the patch.

Compatibility. Before any code: verify PHP version, Symfony framework-bundle version, and Stripe SDK major version. Confirm the SDK's pinned Stripe API version against the account dashboard version — event-shape mismatch is the most common production surprise — and check transitive dependency overlap with Laravel's bundled Symfony components to avoid a Composer dead end discovered mid-upgrade.

Sequencing.

  1. Spike (≤1 day): attempt composer require on a throwaway branch of the real app and record the exact conflict. This artifact alone settles build-vs-buy.
  2. Decision record: document adoption or rejection, citing 0 dependents and maintenance findings so the next team doesn't re-litigate.
  3. Build the wrapper: config file, singleton binding, env-driven keys, explicit API version.
  4. Webhook path: signature verification, idempotency keys, retry semantics.
  5. Contract tests in Stripe test mode, including a replayed webhook.
  6. Cutover behind a feature flag if replacing existing call sites.

Operational Impact

Maintenance. Adopting the bundle means we inherit the maintenance. The code surface is small enough to fork confidently, but every stripe/stripe-php major release becomes our problem with no upstream release to wait for. A first-party wrapper has lower long-term maintenance than a fork of someone else's unmaintained wrapper, because it encodes only our config decisions and stays legible to our own team.

Support. Community-only, effectively unstaffed: 29 stars, 0 dependents, no vendor, no SLA. In payments this is a governance problem, not just a convenience one — expect security review and procurement to push back, and plan the response in advance rather than discovering it late in a release cycle.

Scaling. The bundle contributes no scaling characteristics of its own; throughput is bounded by Stripe's rate limits and our HTTP client. Stateless and horizontally scalable by default. The work that actually matters at scale — connection reuse, retry with backoff, idempotency keys, circuit breaking around Stripe timeouts — is not provided and must be built regardless, which further erodes the bundle's marginal value.

Failure modes.

  • Framework-upgrade lock: EOL Symfony constraints block a PHP or Laravel major upgrade indefinitely.
  • Silent API drift: stale API version changes response/event shapes without erroring.
  • Credential exposure: config-injected keys can leak into debug output, config caching, or logs.
  • Webhook forgery/skip: absent or misconfigured signature verification is the highest-severity failure in any Stripe integration.
  • Transitive CVE exposure: EOL Symfony components with no patch path.
  • Composer resolution failure at the worst time — during an unrelated dependency bump.

Ramp-up. Technically trivial: any PHP developer can read the whole bundle in an afternoon. Organizationally non-trivial: no docs, no community, no Stack Overflow corpus. Onboarding depends entirely on internal documentation we must write. Budget for that explicitly — and prefer the first-party wrapper, where the knowledge is self-evident from our own codebase.

Recommendation. Reject as a dependency for a Laravel stack; reuse as a pattern reference and capture the framework-fit lesson at the intake stage to prevent repeat mismatches. The ~2.3 score is consistent with the evidence: low stars, zero dependents, and a framework-targeting mismatch against the stated stack.

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.
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route