paymentsuite/free-payment-bundle
Adds a free payment method to PaymentSuite, letting Symfony/PHP e-commerce apps complete zero-total orders without touching a real gateway. Lightweight and easy to configure, it's a handy fallback for testing, promotions, or fully discounted carts.
Architecture fit
[READ-ONLY] subtree split of the PaymentSuite/FreePayment component published so Composer can install it outside the monorepo. There is no ServiceProvider, no publishable config, and nothing for Laravel package discovery to find; this is the single most important architectural fact for a Laravel TPM to internalize before scoping any work.PaymentMethodInterface, PaymentBridgeInterface, PaymentMethodWrapper, plus the DI service tags that let the payment router discover the method.paymentsuite/payment-core. That is a poor conceptual fit for Laravel's container and pipeline-oriented cashier/gateway ecosystem.Integration feasibility
composer require paymentsuite/free-payment-bundle paymentsuite/payment-core, register in bundles.php, import routing, enable under config/packages/paymentsuite.yaml. Straightforward if versions align.payment-core and a Symfony HTTP kernel to obtain behavior equivalent to "return success." The cost/benefit is inverted — the same semantics reimplemented natively are roughly 150–300 lines.Technical risk
php and symfony/* constraints that block installation on PHP 8.2+/Symfony 6/7 without --ignore-platform-reqs or a fork. This is a kill/continue signal, not a nuisance to work around.Key questions
composer.json constraints for php, symfony/*, and paymentsuite/payment-core?payment-core?Stack fit
Migration path
payment-core, Symfony DI, event dispatcher, HTTP kernel) will cost more than the behavior is worth.FreePaymentMethod implementing your existing payment contract, returning a synthetic successful result tagged provider: 'free', guarded by a config flag (PAYMENT_FREE_ENABLED, default false) and a hard server-side abort_unless($order->total()->isZero(), 422) assertion.Compatibility
composer why-not paymentsuite/free-payment-bundle as the first action; it is the cheapest kill/continue signal available.composer.json pins payment-core to a version whose own constraints conflict with your Symfony minor.Sequencing
PaymentMethod and PaymentBridge implementations; confirm zero-amount validation and state transitions in source.Maintenance
Support
Scaling
Failure modes
--ignore-platform-reqs becomes permanent and masks other version conflicts.Ramp-up
Recommendation: Do not adopt as a dependency on a Laravel stack — reimplement a guarded zero-amount payment method against your own contract. On an existing Symfony/PaymentSuite application, adopt only behind a default-off feature flag, after a compatibility spike and an explicit read of the amount-validation path.
How can I help you explore Laravel packages today?