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

Jms Payment Bridge Laravel Package

payum/jms-payment-bridge

Bridge between Payum and the JMS Payment library, adding gateway factories and actions so JMS payment gateways can run inside Payum's unified payment workflow. Useful for projects already on JMS Payment that want Payum's abstraction layer.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Payum models payments as Gateways composed of Actions operating on Requests (Capture, Authorize, Notify, Refund, Cancel), resolved through a GatewayFactory and a token/instruction registry. JMS Payment (JMSPaymentCoreBundle plus the plugin bundle) models the same domain differently: a PaymentInstruction entity advanced by a state machine and executed by gateway plugins implementing a plugin interface (purchase, authorize, completePurchase), wired through the Symfony service container with controller-driven callbacks. The bridge's purpose is to translate the second into the first. That translation is inherently lossy — the libraries disagree on request granularity, on where state lives (Payum token vs. Doctrine-mapped PaymentInstruction), and on how asynchronous notifications enter the system. It fits only if you accept a Payum-shaped façade over JMS internals, not a genuine abstraction.

Integration feasibility. Composer-visible facts: last release 2016-05-31, one star, zero dependents. Expect constraints pinned to PHP 5.x/7.0-era Symfony (2.x) and Payum 0.x/1.x. Any modern target (Symfony 5/6/7, PHP 8.x, Payum 1.7+) will hit unsatisfiable requirements. The only realistic path is a code transplant — fork the handful of adapter classes into the application rather than composer require. Note also that the framing of this package as Laravel-oriented does not survive contact with its dependency graph; it is Symfony-centric.

Technical risk. High, from three compounding layers of dormancy: the bridge (2016), JMSPaymentCoreBundle (dormant since roughly 2015-2016), and the individual JMS gateway plugins, several of which wrap API generations that gateways have retired (PayPal NVP/Express Checkout, Authorize.Net AIM). There is no meaningful test signal to assess completeness — refunds, partial captures, voids and multi-currency are likely unsupported or untested. Security exposure is structural: payment code that will never receive a CVE fix, running on a PHP runtime that is itself end-of-life.

Key questions. Which Payum version and which JMS plugin set does it actually cover? What PHP/Symfony constraints does composer.json carry? Does the bridge map Notify/IPN flows, or only synchronous purchase? Where is idempotency handled across token replay? Is there a test suite, and does it exercise a mock gateway? Who is the effective maintainer, and is the repository archived? Most importantly: is our objective to run JMS plugins, or to get off them?

Integration Approach

Stack fit. Fits only a legacy Symfony 2.x application already running JMSPaymentCoreBundle with PaymentInstruction persisted via Doctrine, and only as a transition shim. It is not a fit for greenfield work or modern Symfony; Payum's Omnipay bridge or a direct gateway SDK is the better path there.

Migration path. Treat it as step 1 of a three-step exit: (1) wrap existing JMS plugins behind Payum gateways so call sites move onto the Payum API; (2) replace each bridged gateway with a native Payum or Omnipay-backed gateway, one plugin at a time, behind the same gateway name; (3) delete the bridge and the JMS bundle. Step 2 must be funded up front — step 1 alone buys nothing.

Compatibility. Validate by pinning the fork against a locked PHP 7.4 or 8.0 runtime and exercising each gateway against sandbox credentials before committing. Expect to patch service definitions and Symfony HTTP-foundation/EventDispatcher calls. Budget for constraint surgery; assume composer update will not resolve cleanly.

Sequencing. Audit the plugin inventory and call sites first — a day or two that produces the real cost estimate — then prototype on the highest-volume gateway only, then decide. Do not run this concurrently with a gateway contract renegotiation or a PCI re-scope.

Operational Impact

Maintenance. Effectively zero upstream. Assume we own the code from day one: vendor/fork it, assign an internal owner, and set a deprecation date. Every Payum or Symfony bump becomes our patch to write.

Support. None. One star and zero dependents means no community, no issue triage, no Stack Overflow corpus, no upstream escalation path. Incidents get debugged from source.

Scaling. The bridge is thin and will not be the bottleneck; the JMS plugins and their synchronous gateway HTTP calls will be. Expect no queueing, retry, or circuit-breaking semantics — those must be layered around the Payum gateway if required.

Failure modes. The dangerous one is silent semantic loss: a Payum Refund request the adapter quietly no-ops, or a Notify that never reaches the state machine, leaving orders paid but unfulfilled. Others include composer resolution failure surfacing during an unrelated upgrade, PHP runtime EOL, retired gateway endpoints, and state divergence between Payum tokens and JMS PaymentInstruction rows during any dual-write period.

Ramp-up. Low ceiling, high friction. The bridge is small enough to read in an afternoon, but understanding it requires fluency in two payment abstractions plus the specific JMS plugin internals. Estimate two to three days for a senior PHP engineer to evaluate and one to two weeks to safely replace — roughly the same effort as going straight to a supported Payum gateway.

Recommendation. Do not adopt as a strategic dependency. Use it only as time-boxed scaffolding inside an existing JMS-based application with a committed exit plan and a named owner; otherwise reject it and integrate a maintained gateway directly.

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.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast