The payment step relied on a node-level timeout to release an abandoned checkout. Now that kessai expires a lapsed payment, drive it from the payment's own deadline instead.

PaymentWorkflowBridge::onExpired resumes the pinned step with a dedicated expired result, its own outcome distinct from the payer-driven ones, so the run takes its expiry path when the payer never returns.

The payment interaction gains a payment_timeout setting: a duration (seconds or an ISO 8601 duration like PT20M, parsed through orchestra's Duration), passed to kessai as the created payment's ttl. Empty uses the site default.

The example workflow drops its node timeout for the new setting and routes the expired outcome.

Depends on the kessai expiry event (kessai #3611872). Kernel-tested.

Issue fork orchestra-3611873

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

mably created an issue. See original summary.

mably’s picture

Status: Active » Needs review

Opened merge request !357 against 1.x. Kernel-tested (the bridge resumes the step with the dedicated expired result; the configured payment_timeout becomes the payment deadline). Depends on the kessai expiry event (kessai #3611872), so CI here goes green once that has landed in kessai 1.x-dev.

  • mably committed 6d2bb306 on 1.x
    feat: #3611873 Resume the payment step from kessai's expiry,...
mably’s picture

Status: Needs review » Fixed

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.