Issue #3622782: Offer the payment accounts a step can charge, not the gateway plugins
Closes [#3622782].
kessai now records the account a payment was taken against rather than the provider, so a site holding two contracts at one provider holds two accounts and the gateway plugin id names neither.
The defect
PaymentInteraction's "Gateway override" select was built from the gateway plugin list. That offers ids kessai refuses, and it cannot name a second account at all.
It matters more here than anywhere else: the gateway is per-step configuration, so this form is exactly where a site chooses between two accounts at one provider — and the choice was not on offer.
The change
The select lists what kessai says a payment can be taken through, through getAvailableGateways() on PaymentClientInterface, and the description says what an account is. PaymentInteraction already held the payment client, so this drops the gateway plugin manager rather than swapping it.
Checked and deliberately not changed
VariableResolverdefaults a missing gateway variable tomanual, which is the account kessai ships, so it keeps working.- The
manualentries inorchestra.schema.ymlare the workflow versioning mode, unrelated to payments. - The changed description is translated in
modules/orchestra_payment/translations/fr.po, which is the catalog whose project carries the string, and the English it replaces is removed from there rather than left as an entry no file holds.
Depends on kessai
This calls getAvailableGateways(), added in kessai 3621924. Until that merges, kessai 1.x does not have it and this branch cannot go green — a red pipeline here is that dependency, not this code.
Rebased onto 1.x at 92938f32; the two commits that landed while this was written do not touch orchestra_payment. phpcs Drupal,DrupalPractice over the module is clean, and phpstan is green on both core versions against the merged kessai.
The translations job caught the French on the first run: I had checked the project-root catalog, found the string absent and taken the whole form to be untranslated, when it and its siblings live in orchestra_payment's own catalog. Fixed in the right one.
AI-Generated: Yes (Claude Code was used to help draft this issue summary and to write the code on the merge request. I reviewed the work myself before posting it.)