mediaarea/kj-payment-stripe-bundle
Stripe payment bundle for the KJ PHP framework from mediaarea. Adds Stripe checkout and payment processing to KJ applications so you can accept card payments with minimal setup. A small, low-adoption package, so review the source and documentation carefully before relying on it in production.
Architecture fit
The package is a Symfony bundle, not a Laravel package. It ships a Bundle subclass, DI extension, and container service definitions, and it is explicitly designed as a driver for a sibling abstraction (KJPaymentBundle) rather than a standalone Stripe integration. That makes adoption a two-package commitment: you inherit a payment-gateway abstraction layer plus one concrete gateway implementation, and the abstraction is the part with the lock-in risk.
For a Laravel codebase this is a category mismatch — Laravel uses Symfony components but has no bundle registration, compiler passes, or bundles.php. Making it work would mean hand-porting service definitions into a service provider. MediaArea's core competency is media metadata tooling (MediaInfo); payments appear to be incidental to an internal application rather than a supported product surface.
Integration feasibility
Low. Signal quality is the dominant issue: 0 stars, 0 dependents, score 0. There is no evidence of third-party production use, no fork ecosystem, and therefore no informal support network. Feasibility is further gated on:
stripe/stripe-php v3–v7 and predate PaymentIntents, SCA/3DS2, and mandatory webhook signature verification.getContainerExtension()), which were removed or deprecated in Symfony 5.3+/6.x.^5.6 || ^7.0, conflicting with modern runtimes.Technical risk
| Risk | Severity | Notes |
|---|---|---|
| Abandonware | High | Single org, non-core domain, no release cadence |
| Payment correctness | High | SCA/3DS2, idempotency keys, partial refunds, webhook verification likely absent |
| Transitively unpatched deps | High | Pinned Stripe SDK / Guzzle will drift out of security support |
| Container incompatibility | Medium | Blocks Symfony/PHP upgrades on any host app |
| Bus-factor | High | No named, responsive maintainer |
Payments carry asymmetric blast radius: an unmaintained integration is a PCI-adjacent liability, not a convenience library.
Key questions
composer.json constraints for PHP, Symfony, and stripe/stripe-php?KJPaymentBundle itself maintained, and what is its release history?Stack fit
stripe/stripe-php directly behind our own PaymentGateway interface, or Laravel Cashier if subscription billing is in scope. Both are maintained, documented, and idiomatic.Migration path
composer audit, and run static analysis (PHPStan/Psalm) against the current runtime.PaymentGateway port and an adapter that delegates to the bundle. Every call site moves to the port; the bundle becomes an implementation detail.stripe/stripe-php v15+ in a sandbox account, covering the actual operations in use (auth, capture, refund, webhook).KJPaymentBundle.Compatibility
Expect hard blockers on Symfony ≥5.3 and PHP ≥8.0 due to container semantics and syntax. Stripe SDK major-version conflicts are likely to be unresolvable without forking — a fork is the realistic compatibility strategy, and a fork means we own it.
Sequencing
Vendor-risk assessment and inventory of actual gateway operations → containment wrapper → Stripe SDK reimplementation → parity validation → cutover. Do not sequence this as "adopt bundle, then abstract later"; the abstraction must precede any new dependency.
Maintenance
Effectively zero upstream maintenance. With no dependents, there is no pressure on the maintainer to keep pace with Stripe API versions or Symfony releases. Any fork we create becomes a permanent internal liability requiring an owner, a release process, and a scheduled Stripe API-version review (Stripe ships breaking changes on a rolling cadence).
Support
No SLA, no triage, no documented escalation. Support burden transfers entirely to our team, including Stripe-side incident diagnosis where the bundle obscures request/response detail. Onboarding documentation is the README, which for a 0-star package is typically installation-only.
Scaling
Negligible compute footprint — it is a thin HTTP client over Stripe, so throughput is bounded by Stripe's rate limits and our webhook consumer, not the bundle. The scaling concern is correctness at scale: without idempotency keys, retries under load produce duplicate charges; without webhook signature verification, replay is possible.
Failure modes
Ramp-up
Engineer-level ramp-up on the bundle itself is a day; the real cost is learning the KJPaymentBundle abstraction and then re-learning the Stripe integration when we replace it. For net-new work, ramp-up on stripe/stripe-php or Cashier is comparable and carries no abandonment risk.
Recommendation: Do not adopt. If already present, contain behind a first-party interface and schedule replacement with the maintained Stripe SDK. The 0-star/0-dependent profile combined with payment-domain risk makes this a build-vs-adopt decision where building the thin adapter ourselves is strictly cheaper than owning a fork.
How can I help you explore Laravel packages today?