Skip to main content

Architecture

Webhook events

The Adyen App implements the following Saleor sync webhooks related to transactions:

Furthermore, it's also prepared to handle async Adyen webhooks.

The Adyen App follows the flow described in detail in the Saleor Payment App documentation.

Limitations

This section contains known limitations of this App.

Maximum timeout for Adyen calls is 15 seconds

Saleor synchronous webhooks have a maximum response time limit of 20 seconds. The app restricts the Adyen response time to 15 seconds to allow graceful error handling. If Adyen surpasses this limit, the App will return a FAILURE status with an appropriate error message (Timeout Error).

Maximum timeout for Saleor API calls is 5 seconds

The app restricts Saleor API response time to 5 seconds for TransactionInitializeSession and TransactionProcessSession subscriptions. If Saleor API surpasses this limit, the App will gracefully continue processing.

If such timeout happens, the created TransactionItem will not have the metadata from Adyen on additionalDetails object, which includes payment method type, credit card brand, etc.

Granted refunds vs manual refunds

There are differences in how refunds are handled depending on wether an OrderGrantedRefund was created in Saleor and a refund via transactionRequestRefundForGrantedRefund mutation was requested, or a "manual refund" sent via transactionRequestAction mutation was requested. The differences is in how lineItems are reported to Adyen

Manual refund

A manual refund is initiated using the transactionRequestAction mutation.

When manual refund is requested, the app will send lineItems to Adyen if the amount is equal to or greater than Order's total gross amount. In other cases app will not send lineItems to Adyen.

Granted refund

Added in Saleor 3.15

A granted refund is initiated using the transactionRequestRefundForGrantedRefund mutation.

When granted refund is requested, app will map grantedRefund.lines.orderLines to lineItems reported to Adyen. Additionally, if grantedRefund.shippingCostIncluded is set to true, the app will include a shipping line in the lineItems sent to Adyen.