Repository navigation
Conversation
rust-le
force-pushed
the
feature/SY-842-webhook-event-processors
branch
2 times, most recently
from
October 16, 2026 11:03
20bdbf9 to
f95dfc9
Compare
The notify endpoint now has a processor for every merchant event it handles: SettlePaymentWebhookEventProcessor settles the payment on PAYMENT.CAPTURE.* and CHECKOUT.ORDER.COMPLETED, RefundPaymentWebhookEventProcessor refunds it, or marks its late capture refunded, on PAYMENT.CAPTURE.REFUNDED and PAYMENT.CAPTURE.REVERSED, as the processors of the old endpoint do. CaptureApprovedOrderWebhookEventProcessor captures the order of a payer who approved it and never came back, through the capture Payment Request still awaiting it. PayPal sends CHECKOUT.ORDER.APPROVED while the payer is coming back, so before sylius_paypal.webhook_approved_order_capture_delay seconds (600 by default) it throws a recoverable exception: answered 503 with Retry-After when the transport is sync, retried after the delay when async. The capture runs inside the notify transaction, so a capture that fails rolls back the stored event and is answered 503; PayPal delivers the approval again and the capture is retried. CHECKOUT.ORDER.PROCESSED and PAYMENT.AUTHORIZATION.* stay ignored; the upgrade notes list the effect of each event.
… 7.2 constructor argument RecoverableMessageHandlingException takes the retry delay as a constructor argument only since Symfony 7.2; on 6.4 the extra argument fails. The exception now returns it from its own getRetryDelay(), which Messenger reads when the method exists.
rust-le
force-pushed
the
feature/SY-842-webhook-event-processors
branch
from
October 19, 2026 11:16
f95dfc9 to
d4e5532
Compare
rust-le
marked this pull request as ready for review
October 19, 2026 12:10
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.
Depends on #814
The notify endpoint from #814 has no processors yet, so it records every PayPal event as ignored.
This adds them: capture events and
CHECKOUT.ORDER.COMPLETEDsettle the payment, refund and reversal events refund it, as the old endpoint does.CHECKOUT.ORDER.APPROVEDcaptures the order of a payer who approved it and never came back, after a delay; until then, or when the capture fails, it is answered503so PayPal delivers it again. The upgrade notes list the effect of each event.