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
Happy flow payments
Payment cancellation
Declined payment followed by a successful authorisation
E2E test coverage
Amazon Pay E2E test cases have been improved in #136 in the test repository related to this fix.
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 wherehandledDeclineFlow()
function returns an error. In this case, plugin removesamazonCheckoutSessionId
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.