Skip to content

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

Merged
merged 11 commits into from
Jul 29, 2025

Conversation

kashif-m
Copy link
Contributor

@kashif-m kashif-m commented Jul 22, 2025

Type of Change

  • New feature

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:

  1. Adyen OFFER_CLOSED webhook:

    • Added OfferClosed to WebhookEventCode enum
    • Handle OfferClosed events as Expired status in AttemptStatus
    • Maps OFFER_CLOSED events to PaymentIntentExpired webhook
  2. Added Expired status support:

    • Added to both AttemptStatus and IntentStatus enums
    • Database migration for new enum values
    • Add PaymentExpired event type for outgoing webhooks
  3. Fixed next_action for terminal payments

    • Prevents showing QR codes/redirects data 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

curl --location --request POST 'http://localhost:8080/payments' \
    --header 'Content-Type: application/json' \
    --header 'Accept: application/json' \
    --header 'api-key: dev_W8rGDzCct9xjU2Rqd8xxZubP9rRJ4u1Y42J1im7qplUxjOgWmJS4ZPq9lRfvOCnd' \
    --data-raw '{"amount":4500,"currency":"BRL","confirm":true,"profile_id":"pro_HvmsPUKxoCtI58mtCUhg","capture_on":"2022-09-10T10:11:12Z","connector":["adyen"],"customer_id":"cus_HXi1vEcMXQ74qsaNq57p","email":"[email protected]","return_url":"https://google.com","payment_method":"bank_transfer","payment_method_type":"pix","payment_method_data":{"bank_transfer":{"pix":{"pix_key":"test","cpf":"test","cnpj":"test","expiry_date":"2025-07-22T14:58:00Z"}}},"billing":{"address":{"line1":"1467","line2":"Harrison Street","line3":"Harrison Street","city":"San Fransico","state":"California","zip":"94122","country":"BR","first_name":"joseph","last_name":"Doe"},"phone":{"number":"8056594427","country_code":"+91"},"email":"[email protected]"},"metadata":{"Force-PSP":"Adyen","udf1":"value1","new_customer":"true","login_date":"2019-09-10T10:11:12Z"},"browser_info":{"user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","accept_header":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","language":"en-US","color_depth":32,"screen_height":1117,"screen_width":1728,"time_zone":-330,"java_enabled":true,"java_script_enabled":true,"ip_address":"127.0.0.1"},"customer_acceptance":{"acceptance_type":"online","accepted_at":"1963-05-03T04:07:52.723Z","online":{"ip_address":"127.0.0.1","user_agent":"amet irure esse"}},"session_expiry":60}'

Response

{"payment_id":"pay_8P2b5MuSkplj8d3U06Nj","merchant_id":"merchant_1753193103","status":"requires_customer_action","amount":4500,"net_amount":4500,"shipping_cost":null,"amount_capturable":4500,"amount_received":null,"connector":"adyen","client_secret":"pay_8P2b5MuSkplj8d3U06Nj_secret_px8ZGtda34okt5ngtFdb","created":"2025-07-22T14:57:52.108Z","currency":"BRL","customer_id":"cus_HXi1vEcMXQ74qsaNq57p","customer":{"id":"cus_HXi1vEcMXQ74qsaNq57p","name":"John Nether","email":"[email protected]","phone":"6168205362","phone_country_code":"+1"},"description":null,"refunds":null,"disputes":null,"mandate_id":null,"mandate_data":null,"setup_future_usage":null,"off_session":null,"capture_on":null,"capture_method":null,"payment_method":"bank_transfer","payment_method_data":{"bank_transfer":{"pix":{"pix_key":"test","cpf":"test","cnpj":"test","source_bank_account_id":null,"destination_bank_account_id":null,"expiry_date":"2025-07-22T14:58:00.000Z"}},"billing":null},"payment_token":null,"shipping":null,"billing":{"address":{"city":"San Fransico","country":"BR","line1":"1467","line2":"Harrison Street","line3":"Harrison Street","zip":"94122","state":"California","first_name":"joseph","last_name":"Doe"},"phone":{"number":"8056594427","country_code":"+91"},"email":"[email protected]"},"order_details":null,"email":"[email protected]","name":"John Nether","phone":"6168205362","return_url":"https://google.com/","authentication_type":"no_three_ds","statement_descriptor_name":null,"statement_descriptor_suffix":null,"next_action":{"type":"qr_code_information","image_data_url":"data:image/png;base64,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","display_to_timestamp":1753196280000,"qr_code_url":"https://test.adyen.com/hpp/generateQRCodeImage.shtml?url=TestQRCodeEMVToken","display_text":null,"border_color":null},"cancellation_reason":null,"error_code":null,"error_message":null,"unified_code":null,"unified_message":null,"payment_experience":null,"payment_method_type":"pix","connector_label":null,"business_country":null,"business_label":"default","business_sub_label":null,"allowed_payment_method_types":null,"ephemeral_key":{"customer_id":"cus_HXi1vEcMXQ74qsaNq57p","created_at":1753196272,"expires":1753199872,"secret":"epk_7b539192a86b4d3baf83c0dcc93da9a6"},"manual_retry_allowed":null,"connector_transaction_id":"BGC4GRDTH5V3NDV5","frm_message":null,"metadata":{"udf1":"value1","Force-PSP":"Adyen","login_date":"2019-09-10T10:11:12Z","new_customer":"true"},"connector_metadata":null,"feature_metadata":null,"reference_id":"BGC4GRDTH5V3NDV5","payment_link":null,"profile_id":"pro_HvmsPUKxoCtI58mtCUhg","surcharge_details":null,"attempt_count":1,"merchant_decision":null,"merchant_connector_id":"mca_c5mj7ZUwHtsNKo5EfexQ","incremental_authorization_allowed":null,"authorization_count":null,"incremental_authorizations":null,"external_authentication_details":null,"external_3ds_authentication_attempted":false,"expires_on":"2025-07-22T14:58:52.108Z","fingerprint":null,"browser_info":{"language":"en-US","time_zone":-330,"ip_address":"127.0.0.1","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","color_depth":32,"java_enabled":true,"screen_width":1728,"accept_header":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","screen_height":1117,"java_script_enabled":true},"payment_method_id":null,"payment_method_status":null,"updated":"2025-07-22T14:57:53.084Z","split_payments":null,"frm_metadata":null,"extended_authorization_applied":null,"capture_before":null,"merchant_order_reference_id":null,"order_tax_amount":null,"connector_mandate_id":null,"card_discovery":null,"force_3ds_challenge":false,"force_3ds_challenge_trigger":false,"issuer_error_code":null,"issuer_error_message":null,"is_iframe_redirection_enabled":null,"whole_connector_response":null}

Wait for it to expire
Receive incoming webhooks for OFFER_CLOSED

2. Verify outgoing webhook
{"merchant_id":"merchant_1753397156","event_id":"evt_019841219a907f8084065fb9d9e2842e","event_type":"payment_expired","content":{"type":"payment_details","object":{"payment_id":"pay_GE6MyVzON0EXIcyOFh5p","merchant_id":"merchant_1753397156","status":"expired","amount":4500,"net_amount":4500,"shipping_cost":null,"amount_capturable":0,"amount_received":null,"connector":"adyen","client_secret":"pay_GE6MyVzON0EXIcyOFh5p_secret_44s26p5R8wAp9cXOQ3Qt","created":"2025-07-25T10:26:23.600Z","currency":"BRL","customer_id":"cus_J2NWO1RbnwNdiEO6KdIt","customer":{"id":"cus_J2NWO1RbnwNdiEO6KdIt","name":null,"email":"[email protected]","phone":null,"phone_country_code":null},"description":null,"refunds":null,"disputes":null,"mandate_id":null,"mandate_data":null,"setup_future_usage":null,"off_session":null,"capture_on":null,"capture_method":null,"payment_method":"bank_transfer","payment_method_data":{"bank_transfer":{"pix":{"pix_key":"test","cpf":"test","cnpj":"test","source_bank_account_id":null,"destination_bank_account_id":null,"expiry_date":"2025-07-25T10:28:00.000Z"}},"billing":null},"payment_token":null,"shipping":null,"billing":{"address":{"city":"San Fransico","country":"BR","line1":"1467","line2":"Harrison Street","line3":"Harrison Street","zip":"94122","state":"California","first_name":"joseph","last_name":"Doe"},"phone":{"number":"8056594427","country_code":"+91"},"email":"[email protected]"},"order_details":null,"email":"[email protected]","name":null,"phone":null,"return_url":"https://google.com/","authentication_type":"no_three_ds","statement_descriptor_name":null,"statement_descriptor_suffix":null,"next_action":null,"cancellation_reason":null,"error_code":null,"error_message":null,"unified_code":null,"unified_message":null,"payment_experience":null,"payment_method_type":"pix","connector_label":null,"business_country":null,"business_label":"default","business_sub_label":null,"allowed_payment_method_types":null,"ephemeral_key":null,"manual_retry_allowed":false,"connector_transaction_id":"BXSX5X9VLW5PB2V5","frm_message":null,"metadata":{"udf1":"value1","Force-PSP":"Adyen","login_date":"2019-09-10T10:11:12Z","new_customer":"true"},"connector_metadata":null,"feature_metadata":null,"reference_id":"pay_GE6MyVzON0EXIcyOFh5p_1","payment_link":null,"profile_id":"pro_zJpGj6xSodQqoBYltbzl","surcharge_details":null,"attempt_count":1,"merchant_decision":null,"merchant_connector_id":"mca_PTFqfuKnofhHIFDFLBsu","incremental_authorization_allowed":null,"authorization_count":null,"incremental_authorizations":null,"external_authentication_details":null,"external_3ds_authentication_attempted":false,"expires_on":"2025-07-25T10:27:23.600Z","fingerprint":null,"browser_info":{"language":"en-US","time_zone":-330,"ip_address":"127.0.0.1","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","color_depth":32,"java_enabled":true,"screen_width":1728,"accept_header":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","screen_height":1117,"java_script_enabled":true},"payment_method_id":"pm_uHViByM1aRfvzf4cCKYH","payment_method_status":"inactive","updated":"2025-07-25T10:29:38.062Z","split_payments":null,"frm_metadata":null,"extended_authorization_applied":null,"capture_before":null,"merchant_order_reference_id":null,"order_tax_amount":null,"connector_mandate_id":null,"card_discovery":null,"force_3ds_challenge":false,"force_3ds_challenge_trigger":false,"issuer_error_code":null,"issuer_error_message":null,"is_iframe_redirection_enabled":null,"whole_connector_response":null}},"timestamp":"2025-07-25T10:29:38.064Z"}

It should have

  • event_type as payment_expired
  • status as expired
  • next_action should be null
3. Verify payments retrieve

cURL

curl --location --request GET 'http://localhost:8080/payments/pay_8P2b5MuSkplj8d3U06Nj?force_sync=true' \
    --header 'Accept: application/json' \
    --header 'api-key: dev_W8rGDzCct9xjU2Rqd8xxZubP9rRJ4u1Y42J1im7qplUxjOgWmJS4ZPq9lRfvOCnd'

Response

{"payment_id":"pay_cqxjoA0Drk0NBgmCpbQf","merchant_id":"merchant_1753397156","status":"expired","amount":4500,"net_amount":4500,"shipping_cost":null,"amount_capturable":0,"amount_received":null,"connector":"adyen","client_secret":"pay_cqxjoA0Drk0NBgmCpbQf_secret_S3VytS4Ym1KOhpKRQvtV","created":"2025-07-24T22:51:17.081Z","currency":"BRL","customer_id":"cus_J2NWO1RbnwNdiEO6KdIt","customer":{"id":"cus_J2NWO1RbnwNdiEO6KdIt","name":null,"email":"[email protected]","phone":null,"phone_country_code":null},"description":null,"refunds":null,"disputes":null,"mandate_id":null,"mandate_data":null,"setup_future_usage":null,"off_session":null,"capture_on":null,"capture_method":null,"payment_method":"bank_transfer","payment_method_data":{"bank_transfer":{"pix":{"pix_key":"test","cpf":"test","cnpj":"test","source_bank_account_id":null,"destination_bank_account_id":null,"expiry_date":"2025-07-24T22:54:00.000Z"}},"billing":null},"payment_token":null,"shipping":null,"billing":{"address":{"city":"San Fransico","country":"BR","line1":"1467","line2":"Harrison Street","line3":"Harrison Street","zip":"94122","state":"California","first_name":"joseph","last_name":"Doe"},"phone":{"number":"8056594427","country_code":"+91"},"email":"[email protected]"},"order_details":null,"email":"[email protected]","name":null,"phone":null,"return_url":"https://google.com/","authentication_type":"no_three_ds","statement_descriptor_name":null,"statement_descriptor_suffix":null,"next_action":null,"cancellation_reason":null,"error_code":null,"error_message":null,"unified_code":null,"unified_message":null,"payment_experience":null,"payment_method_type":"pix","connector_label":null,"business_country":null,"business_label":"default","business_sub_label":null,"allowed_payment_method_types":null,"ephemeral_key":null,"manual_retry_allowed":false,"connector_transaction_id":"BD7QBLW3MDSQNS65","frm_message":null,"metadata":{"udf1":"value1","Force-PSP":"Adyen","login_date":"2019-09-10T10:11:12Z","new_customer":"true"},"connector_metadata":null,"feature_metadata":null,"reference_id":"pay_cqxjoA0Drk0NBgmCpbQf_1","payment_link":null,"profile_id":"pro_zJpGj6xSodQqoBYltbzl","surcharge_details":null,"attempt_count":1,"merchant_decision":null,"merchant_connector_id":"mca_PTFqfuKnofhHIFDFLBsu","incremental_authorization_allowed":null,"authorization_count":null,"incremental_authorizations":null,"external_authentication_details":null,"external_3ds_authentication_attempted":false,"expires_on":"2025-07-24T22:52:17.081Z","fingerprint":null,"browser_info":{"language":"en-US","time_zone":-330,"ip_address":"127.0.0.1","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36","color_depth":32,"java_enabled":true,"screen_width":1728,"accept_header":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","screen_height":1117,"java_script_enabled":true},"payment_method_id":"pm_EN1YZr7i5sD4qHXH2uV5","payment_method_status":"inactive","updated":"2025-07-24T22:55:13.196Z","split_payments":null,"frm_metadata":null,"extended_authorization_applied":null,"capture_before":null,"merchant_order_reference_id":null,"order_tax_amount":null,"connector_mandate_id":null,"card_discovery":null,"force_3ds_challenge":false,"force_3ds_challenge_trigger":false,"issuer_error_code":null,"issuer_error_message":null,"is_iframe_redirection_enabled":null,"whole_connector_response":null}

Checklist

  • I formatted the code cargo +nightly fmt --all
  • I addressed lints thrown by cargo clippy
  • I reviewed the submitted code

@kashif-m kashif-m requested review from a team as code owners July 22, 2025 15:19
Copy link

semanticdiff-com bot commented Jul 22, 2025

Review changes with  SemanticDiff

Changed Files
File Status
  crates/router/src/core/payments/transformers.rs  98% smaller
  crates/router/src/core/revenue_recovery/transformers.rs  90% smaller
  crates/router/src/types.rs  90% smaller
  crates/hyperswitch_connectors/src/connectors/chargebee/transformers.rs  89% smaller
  crates/hyperswitch_connectors/src/connectors/recurly/transformers.rs  89% smaller
  crates/hyperswitch_connectors/src/utils.rs  83% smaller
  crates/router/src/compatibility/stripe/webhooks.rs  82% smaller
  crates/router/src/core/payments/retry.rs  80% smaller
  crates/router/src/core/payments/operations/payment_get.rs  80% smaller
  crates/router/src/core/payments/operations/payment_response.rs  80% smaller
  crates/router/src/connector/utils.rs  79% smaller
  crates/hyperswitch_domain_models/src/router_data.rs  78% smaller
  crates/hyperswitch_connectors/src/connectors/paypal/transformers.rs  78% smaller
  crates/router/src/core/payments.rs  78% smaller
  crates/router/src/core/payments/operations/payment_attempt_record.rs  78% smaller
  crates/router/src/core/payments/operations/payment_capture_v2.rs  78% smaller
  crates/router/src/core/payments/operations/payment_confirm_intent.rs  78% smaller
  crates/router/src/core/payments/operations/payment_update_intent.rs  78% smaller
  crates/router/src/core/payments/operations/proxy_payments_intent.rs  78% smaller
  crates/router/src/core/payments/payment_methods.rs  76% smaller
  crates/router/src/core/routing/helpers.rs  68% smaller
  crates/router/src/core/payments/helpers.rs  65% smaller
  crates/common_enums/src/enums.rs  63% smaller
  crates/api_models/src/webhooks.rs  61% smaller
  api-reference/v1/openapi_spec_v1.json  58% smaller
  api-reference/v2/openapi_spec_v2.json  58% smaller
  crates/hyperswitch_connectors/src/connectors/adyen/transformers.rs  39% smaller
  crates/hyperswitch_domain_models/src/revenue_recovery.rs  22% smaller
  crates/router/src/compatibility/stripe/payment_intents/types.rs  3% smaller
  crates/router/src/compatibility/stripe/setup_intents/types.rs  3% smaller
  crates/router/src/core/payments/operations/payment_session_intent.rs  3% smaller
  crates/router/src/types/transformers.rs  3% smaller
  crates/common_enums/src/transformers.rs  0% smaller
  migrations/2025-07-24-214849_add_expired_to_intent_and_attempt_status_and_event/down.sql Unsupported file format
  migrations/2025-07-24-214849_add_expired_to_intent_and_attempt_status_and_event/up.sql Unsupported file format

@kashif-m kashif-m self-assigned this Jul 22, 2025
@@ -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())?;
Copy link
Contributor Author

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

@kashif-m kashif-m linked an issue Jul 22, 2025 that may be closed by this pull request
Copy link
Contributor

@deepanshu-iiitu deepanshu-iiitu left a 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

@kashif-m kashif-m requested review from a team as code owners July 24, 2025 23:10
@hyperswitch-bot hyperswitch-bot bot added the M-database-changes Metadata: This PR involves database schema changes label Jul 24, 2025
@hyperswitch-bot hyperswitch-bot bot added the M-api-contract-changes Metadata: This PR involves API contract changes label Jul 24, 2025
jarnura
jarnura previously approved these changes Jul 25, 2025
Copy link
Contributor

@sai-harsha-vardhan sai-harsha-vardhan left a 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

@likhinbopanna likhinbopanna added this pull request to the merge queue Jul 29, 2025
Merged via the queue into main with commit 4587564 Jul 29, 2025
16 of 20 checks passed
@likhinbopanna likhinbopanna deleted the 8638-feature-add-payment_expired-outgoing-webhook branch July 29, 2025 08:47
pixincreate added a commit that referenced this pull request Jul 29, 2025
…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
pixincreate added a commit that referenced this pull request Aug 1, 2025
…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)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
M-api-contract-changes Metadata: This PR involves API contract changes M-database-changes Metadata: This PR involves database schema changes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEATURE] add payment_expired outgoing webhook
6 participants