Adyen / adyen-magento2

Adyen Payment plugin for Magento2
MIT License
155 stars 211 forks source link

[ECP-9352] Implement onError handler on Amazon Pay component #2768

Closed candemiralp closed 2 weeks ago

candemiralp commented 1 month ago

Description

If an Amazon Pay payment is declined on Amazon Pay hosted page and Amazon Pay payment component can't handle the decline flow, there is no way to proceed further on the checkout. Besides this issue, payment cancellation on Amazon Pay hosted page triggers a payment attempt on the plugin since the return URL contains amazonCheckoutSessionId, which always fails.

This PR introduces a fix to these two issues.

As a solution to the first issue related to decline flow handling, we've implemented onError callback to handle cases where handledDeclineFlow() function returns an error. In this case, plugin removes amazonCheckoutSessionId parameter from the query parameters of the URL and remounts the Amazon Pay payment component. This allows shoppers to pay with Amazon Pay again. On the other hand, if decline flow is available for the given Amazon Pay session, the shopper will be redirected to Amazon Pay hosted payment page to update the payment method.

To tackle the second issue related to payment cancellation on hosted payment page, cancelUrl parameter has been added. Now, shoppers are being redirected to the cart page instead of checkout if the payment is cancelled.

Tested scenarios

E2E test coverage Amazon Pay E2E test cases have been improved in #136 in the test repository related to this fix.

sonarcloud[bot] commented 2 weeks ago

Quality Gate Passed Quality Gate passed

Issues
0 New issues
0 Accepted issues

Measures
0 Security Hotspots
0.0% Coverage on New Code
0.0% Duplication on New Code

See analysis details on SonarCloud