-
Notifications
You must be signed in to change notification settings - Fork 3.9k
feat(connector): [Adyen] receive incoming webhooks for pix expiry #8720
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(connector): [Adyen] receive incoming webhooks for pix expiry #8720
Conversation
@@ -2634,136 +2638,142 @@ where | |||
} else { | |||
let mut next_action_response = None; | |||
|
|||
let bank_transfer_next_steps = bank_transfer_next_steps_check(payment_attempt.clone())?; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note: all this diff is due to adding a tab space
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
connector changes look good
crates/hyperswitch_connectors/src/connectors/adyen/transformers.rs
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Outgoing webhook even type should also say payment_expired, we can't use payment_cancelled @kashif-m
…acilitapay-webhooks * 'main' of github.com:juspay/hyperswitch: fix(connector): [Worldpay] handle multiple ddc submission for CompleteAuthorize (#8741) feat(connector): [Adyen] receive incoming webhooks for pix expiry (#8720) feat(connector): [FISERV] Added GooglePay Payment Method - Connector Decryption Flow (#8658) feat(connector): [BLUECODE] Added Template Code (#8756) chore(version): 2025.07.29.0
…rver * 'main' of github.com:juspay/hyperswitch: (25 commits) chore: `xof` currency to cybersource cards (#8799) chore(version): 2025.08.01.0 feat(core): Implement UCS based upi for paytm and phonepe (#8732) feat(connector): [katapult]add template code for katapult (#8783) feat(router): introduce `feature` and `feature_data` to gsm (#7771) feat(connector): [cybersource] add changes for field CybersourceConsumerAuthInformation (#8768) feat(authentication): added authentication sync api (#8596) feat(connector): [facilitapay] fix refunds, add webhook and void support (#8778) feat(connector): [payload] add recurring payments (#8597) chore(version): 2025.07.31.0 feat(connector): [Flexiti]Add support for flexiti connector (#8743) chore(router): events enhancement for kafka (#8780) ci(cypress): Making a mandate payment with large customer user agents (#8790) fix(openapi): update create_platform endpoint in api-reference docs (#8782) chore(version): 2025.07.30.0 fix(connector): [GLOBALPAY] Added Tokenization Flow for CITs (#8568) feat(routing): Add api-refs for new decision engine endpoints (#8709) fix: replace xtrim with xdel to support older redis version (#8515) fix(connector): [Worldpay] handle multiple ddc submission for CompleteAuthorize (#8741) feat(connector): [Adyen] receive incoming webhooks for pix expiry (#8720) ...
Type of Change
Description
This PR implements payment expiration handling for QR code-based payments through Adyen's OFFER_CLOSED webhook and fixes next_action display for terminal payment states.
Changes:
Adyen
OFFER_CLOSED
webhook:OfferClosed
toWebhookEventCode
enumOfferClosed
events asExpired
status in AttemptStatusOFFER_CLOSED
events toPaymentIntentExpired
webhookAdded
Expired
status support:AttemptStatus
andIntentStatus
enumsPaymentExpired
event type for outgoing webhooksFixed next_action for terminal payments
Motivation and Context
QR code payments (like PIX) have expiration times. When they expire, Adyen sends OFFER_CLOSED webhooks, but Hyperswitch wasn't handling these properly. Additionally, cancelled payments were still showing actionable
next_action
content.How did you test it?
1. Create a Pix Payment (with expiry)
cURL
Response
Wait for it to expire
Receive incoming webhooks for OFFER_CLOSED
2. Verify outgoing webhook
It should have
next_action
should be null3. Verify payments retrieve
cURL
Response
Checklist
cargo +nightly fmt --all
cargo clippy