webgriffe/payum-lock-request-extension-bundle
Symfony bundle providing a Payum extension that locks payment requests, helping prevent duplicate or concurrent processing of the same payment. Integrates into Payum flows to guard request handling with a lock, reducing risks of double charges and race conditions.
LockRequest extension into Symfony's DI container, giving you a supported, config-driven way to serialize capture/authorize operations per payment. The core product promise it underwrites is "a customer is never charged twice for one order" — a trust and safety requirement, not a nice-to-have.Consider it when all of the following hold:
Look elsewhere when:
For executives: Duplicate charges are one of the most expensive failure modes in commerce — each one costs a refund, a support contact, sometimes a chargeback fee and a dent in trust, and they're invisible until customers complain. This is a small, MIT-licensed Symfony component that makes a specific class of duplicate-payment bug structurally harder on our existing payment stack. The adoption cost is low (configuration and a Redis/DB lock store we likely already run); the payoff is risk reduction on our highest-trust transaction. The caveat is dependency quality: it's a narrow, zero-community-traction package from a credible Symfony shop, so we adopt it deliberately — pinned, code-reviewed, and covered by our own integration tests — rather than treating it as a strategic platform bet. Recommendation: approve as a tactical reliability control, not as the foundation of a payments re-architecture.
For engineering: This bundle is thin Symfony DI wiring for Payum's LockRequest extension. It gives you configurable, per-payment locking around capture/authorize without bespoke lock code in controllers or handlers. Adopt on the condition that you (a) pick and document the lock backend and TTL semantics, (b) decide and test the degraded-mode behavior when the lock store is unavailable, (c) pin the version and add a contract test that proves two concurrent captures yield one charge, and (d) confirm it actually applies to the gateways you use — it's a no-op for stateless redirect flows. Treat provider-side idempotency keys as the primary defense and this as defense-in-depth. If we're planning to leave Payum within the next two quarters, skip it and put the effort into provider idempotency instead.
How can I help you explore Laravel packages today?