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 Laravel Laravel Package

cartalyst/stripe-laravel

Laravel integration for the Stripe PHP SDK, providing a service provider, configuration file, and a Stripe facade for convenient access to Stripe's API—customers, charges, subscriptions, webhooks, and more—from within your Laravel application.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

What we are actually evaluating. Despite a description that still says "Laravel 8 integration," the current line (v17.0.0, released 2025-02-28) targets Laravel 12. Functionally the package is a thin Laravel adapter over stripe/stripe-php: a service provider, a Stripe facade, a publishable config file for API keys, and multi-account/connection support. It adds no payment logic of its own — no subscription lifecycle, no webhook plumbing, no dunning, no proration. That framing drives everything below: the decision is not "buy a payments platform," it is "buy a few hundred lines of container wiring and inherit an upstream cadence."

Architecture fit. High in principle. It composes through the service container and Composer and adds no runtime, no daemon, no schema, and no network surface of its own. Any Laravel service already using framework config and facade idioms absorbs it with near-zero architectural change. Because the facade passes through to the full Stripe PHP API, the wrapper imposes no capability ceiling — customers, charges, subscriptions, invoices, and payment intents are all reachable.

Integration feasibility. Mechanically trivial: one Composer constraint, a published config file, and env/secret-sourced credentials. Real feasibility is gated by our own platform position. On Laravel 12 this is a constraint bump; below Laravel 12 it is inapplicable and reframes as a framework-upgrade project, not a payments-integration project. The second gate is credential handling — the package's model is config-file-driven, so we must confirm keys flow from a secrets manager or environment and never from a committed config.

Technical risk.

  1. Lock-in is low, and that is the headline. Because the wrapper is thin and passes through to stripe-php, exit cost is a mechanical refactor: instantiate StripeClient directly, replace facade calls. This is a genuinely favorable risk profile and should be weighed against alternatives that own more surface.
  2. Documentation drift (medium). Stale top-level docs on an actively released package signal inattentive collateral maintenance, and it means release notes are a summary, not a changelog. Treat the resolved composer.json and the changelog as source of truth.
  3. Double cadence tracking (medium-high). We inherit two upstream clocks: Laravel majors (tracked in lockstep, evidenced by the v17 Laravel 12 release) and stripe-php majors plus Stripe's dated API versions. Neither is optional. This is the dominant recurring cost, not the initial integration.
  4. Maintenance continuity (unknown). 337 stars and zero listed dependents is a modest adoption signal for a package sitting on the payment path. Maintainer count, issue responsiveness, and a security disclosure policy were not supplied and must be closed before adoption. The low "opportunity" score reinforces that this is commodity glue, not a differentiated or heavily invested dependency.
  5. Payment-path blast radius (high consequence, low likelihood). The wrapper is not where breakage is likely, but it is where breakage surfaces. Failures manifest as failed charges or mispriced subscriptions, not as stack traces.
  6. PCI posture governance (medium). Server-side-only usage keeps us in SAQ-A territory. If any team uses the exposed SDK to accept raw card data or create tokens server-side, scope expands materially. That is a policy guardrail, not a package feature.

Key questions.

  • What is the exact supported matrix in v17 — Laravel 12 only, or 11 + 12? Which PHP floor and ext-* requirements?
  • What is the v16 → v17 breaking-change list beyond the framework constraint (facade signatures, config keys, renamed methods)?
  • Which stripe-php major does the current line pin, and how quickly does the package follow stripe-php majors?
  • Is the Stripe API version pinned in config, or does it inherit the account default?
  • Who maintains it, at what cadence, and is there a documented security disclosure process?
  • Does the package provide any webhook signature verification, retry, or idempotency handling — or is all of that ours? (Assume the latter; confirm.)

Integration Approach

Stack fit. Standard Laravel application or service, Composer with a committed lockfile, credentials in env/secrets. Fit is high wherever the framework version matches. The gating question is not "does it fit" but "are we on Laravel 12, and is this the only payments abstraction the team will use?"

Migration path.

  1. Resolve the support matrix first — read composer.json for framework and PHP constraints rather than inferring from the release note. Confirm additive versus 12-only before planning anything else.
  2. Read the full changelog and any upgrade guide for v16 → v17 and enumerate breaks. Do not treat "Support for Laravel 12" as the complete change set.
  3. Pin the Stripe API version explicitly in config and record it. This is the single highest-leverage configuration decision: it prevents account-level upgrades from silently changing charge and subscription behavior underneath us.
  4. Publish and diff config against any prior integration; confirm keys, API version, and any newly required options.
  5. Branch-isolate the constraint bump, regenerate the lockfile, and review the lockfile diff rather than accepting a wholesale composer update.
  6. Run the suite plus targeted payment-path smoke tests in Stripe test mode (or stripe-mock): customer creation, charge, subscription lifecycle, refund, and error/decline paths.

Compatibility. Verify the PHP floor and extension requirements against every runtime in the fleet. Confirm the transitive pin on stripe-php does not conflict with the existing lockfile — if any other service uses stripe-php directly, both must land on compatible majors, and that coordination is the real compatibility risk here, not the Laravel constraint.

Sequencing. Laravel/PHP runtime first → package major second → stripe-php/API-version alignment third → cleanup of deprecated facade usage last. Roll out to one non-critical service, hold one release cycle, then propagate. Keep the prior major resolvable so rollback is a constraint revert.

Adoption policy. Standardize on this wrapper as the single payments entry point, or standardize on stripe-php directly. Mixed usage across services doubles the upgrade surface for no benefit and is the most likely way this decision degrades.

Operational Impact

Maintenance. Initial integration is measured in hours; the recurring cost is cadence tracking across two upstreams (Laravel majors, stripe-php majors plus Stripe API versions). Budget one planned upgrade per Laravel major and one per stripe-php major as recurring capacity. Pin the constraint deliberately, let dependency automation open PRs, and never auto-merge majors on the payment path.

Support. Unevaluated, and the largest unquantified risk. Modest stars, zero listed dependents, stale top-level docs, and no supplied maintainer or security-policy data. Close this before adoption: identify maintainers, confirm recent issue response, and require a disclosure channel. Mitigate structurally by keeping the wrapper at arm's length — no business logic inside facade calls, all Stripe access behind our own thin service layer — so a fork or a swap to stripe-php is a contained change rather than an archaeology exercise.

Scaling. Negligible from the package itself; it is application-layer glue with no state. The real scaling concerns are ours and unaddressed by the wrapper: Stripe rate limits (notably stricter in test mode), queueing non-interactive Stripe calls, idempotency keys on retries, and webhook ingestion with signature verification. The package ships none of that.

Failure modes. (a) Silent API drift — an unpinned Stripe API version changes charge or subscription semantics after an account upgrade; mitigation is the explicit pin plus contract tests. (b) Framework-major lockstep — a Laravel upgrade blocks until the wrapper releases, forcing the payment path to gate a platform upgrade; mitigation is a maintained fork path and low exit cost. (c) Maintainer abandonment — no release for the next Laravel major; mitigation is the arm's-length service layer and a pre-scoped swap to stripe-php. (d) Credential leakage — keys committed in a published config; mitigation is secrets-manager sourcing and pre-commit scanning. (e) Test/production divergence — behavior only validated against test-mode rate limits and objects; mitigation is a small production canary with reconciliation.

Ramp-up. Low. A Laravel-fluent engineer is productive in under a day — publish config, set env vars, inject the facade, make a first call. The learning investment is not the wrapper; it is the surrounding discipline the wrapper does not provide: idempotency, webhook verification, currency/minor-unit handling, error taxonomy for declines, and reconciliation. Plan onboarding around those, and treat fluency with the Stripe dashboard and test clocks as part of the deliverable.

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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource