PRE-3684: Deprecate Payum - #332
Merged
adumont-payplug merged 1 commit intoSep 22, 2026
Merged
adumont-payplug merged 1 commit into
adumont-payplug merged 1 commit into
Conversation
adumont-payplug
force-pushed
the
feature/PRE-3684_deprecate_payum
branch
from
September 22, 2026 09:47
d19ba58 to
559f0b3
Compare
adumont-payplug
merged commit Sep 22, 2026
4e12a0a
into
feature/PRE-3440_multi_shop_configuration
6 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
So the conclusion holds — these actions never execute — but for a different reason than the ticket
gives: there is no
payum.gateway_factory_builderfor anypayplug*factory, becausePayPlugSyliusPayPlugExtension::load()does not loadconfig/services/gateway.xml, the only fileholding those tags. With no gateway to attach to, the tagged actions are collected and then never
run. That is the wording used throughout, so the next person to read it gets the real mechanism.
Deprecated
Action\CaptureAction,StatusAction,NotifyAction,ConvertPaymentAction— each now names itslive replacement in
src/Command/Handler/instead of the bare/** @deprecated */they carriedAction\Api\ApiAwareTrait::setApi()Gateway\AbstractGatewayFactory::populateConfig()config/services/gateway.xmlDeliberately NOT deprecated — three places where the obvious wider annotation would have been wrong:
ApiAwareTraititselfController\OneClickActionis a routed controller that uses the trait for its$payPlugApiClientproperty, assigning it fromPayPlugApiClientFactory. OnlysetApi(), the PayumApiAwareInterfaceentry point, is dead. The trait carries a note saying so.AbstractGatewayFactorythe classFACTORY_NAME,FACTORY_TITLEandBASE_CURRENCY_CODE, referenced throughout the plugin. OnlypopulateConfig()is annotated.api_client.*block inclient.xml#[Autowire]d into seven services. Per the PRE-3682 correction on the ticket, untouched.Why deprecate rather than delete.
gateway.xml's own header offers it as an opt-in escapehatch, so a host application could be importing it and removal would be a BC break.
Removal target.
UPGRADE.mdgains a "Deprecations" section listing everything above, statingremoval in early 2027, and making clear that an application which does not import
gateway.xmlitself is affected in no way and has nothing to migrate.
CHANGELOG.mdwas left alone: its top section is still## [2.0.0] - Unreleasedwhile2.2.0and2.3.0-rc0are tagged, so a### Deprecatedentry there would have landed under a misleadingheading. Happy to add one if you'd rather.
Motivation: the dead code actively misleads. The PRE-3630 spike spent real effort tracing a
wrong-account bug through
payum.http_client→payum.api.http_client→Gateway::execute()→ApiAwareTrait::setApi()before establishing that none of it runs. Thesleep(10)inNotifyAction::execute()was likewise documented as load-bearing; it is dead, and now says so.Related issue(s): PRE-3684 — follow-up 3/4
from the PRE-3630 spike, parent epic
PRE-3440
Base branch: targets
feature/PRE-3440_multi_shop_configuration, matching the sibling tickets(#329, #330).
Type of Change
No runtime code changed.
trigger_deprecation()was deliberately not used: the code never executes,so a runtime notice could never fire. PHPDoc
@deprecatedonly.Checklist
Code Quality
new baseline entries (
phpstan-deprecation-rulesis not installed, so@deprecatedcostsnothing statically)
Testing
one Markdown section. The existing suite is unchanged and green, 601 tests, 1128 assertions.
coverage gate to measure on this diff
Also verified, since "no behaviour change" is the whole claim of this PR:
bin/console lint:containerpasses on a real Sylius application with the plugin installedconfig/services/gateway.xmlstill parses as well-formed XML (it is only ever loaded by a hostapplication that opts in, so a syntax error there would not surface in our own CI)
Security & Ops