-
Notifications
You must be signed in to change notification settings - Fork 141
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
Swish payment method always triggers an error on mobile #1712
Comments
@sponglord have you been able to check this issue? |
I alerted Adyen to this issue at https://www.adyen.help/hc/en-us/requests/new?ticket_form_id=360000690879.
Hopefully we can send our joint customer an update on this issue soon. |
Hey @rvdsteege , Thanks for the detailed description. We agree that indeed I created a fix increasing the timeout to 1 second, which should hopefully cover all the cases for different devices/operational systems (Android/iOS). This fix should be released early next week. I will leave this Github issue open for now, so we can follow up on it and you can let us know if that fixed your problem! |
Thank you for the update, @ribeiroguilherme. However, I don't think slightly increasing the timeout in #1755 will make much difference: it will still trigger the checkout error when it shouldn't. I made a quick screen recording to illustrate the issue. For demonstration purposes, the page in the video turns red when the error would normally be triggered (after swish-error-triggered.mov |
Based on https://stackoverflow.com/questions/24779312/simplest-cross-browser-check-if-protocol-handler-is-registered you may also have to conclude that there is no reliable way to determine whether an app could be found / opened.
https://www.fortinet.com/blog/threat-research/leaking-browser-url-protocol-handlers It therefore does not seem correct to me to trigger this error after a certain time: adyen-web/packages/lib/src/components/internal/QRLoader/QRLoader.tsx Lines 70 to 77 in ff4c8a2
I don't think you can ever know for sure if the app was indeed not found. This whole implementation needs to be different/better? |
Thanks for the input guys. I spent some time investigating this issue and indeed seems like we can't know for sure if the app is available or not in the device. We need to rethink a bit about this current implementation, but it seems that triggering In the meantime, I suggest to ignore the error on yours |
Hey all 👋 We also experience the Swish issues, and I have made a Pull Request that might solve it. Got any feedback? #1764 |
We've just deployed our app using the latest version and I can confirm that the Swish-trigger-error problem is solved 😄 |
Thanks for raising this issue guys. The fix is available on the 5.27.0 . |
Thank you @DavidVujic and @ribeiroguilherme — we'll update the Adyen integration in our plugin! |
Describe the bug
When an error occurs in drop-in, our Pronamic Pay plugin for WordPress redirects to a failed payment page. The payment status then gets updated accordingly and the error is logged.
For the Swish payment method, this seems to result in an unreasonable amount of failed payments (
60%
according to client) with the following error message:This error seems to be triggered by
redirectToApp()
of the QR loader:adyen-web/packages/lib/src/components/internal/QRLoader/QRLoader.tsx
Lines 70 to 77 in 68e1573
We're thinking the really short timeout of
25
ms might be the culprit. In a test similar toredirectToApp()
, it seems that even the simplest redirect will trigger the error, even though the redirect works perfectly fine:In the case of Swish, the URL being redirected to uses the custom protocol
swish://
to open their app. This means that the browser might also asks for confirmation before opening the Swish app, which will take a little longer to confirm. It is impossible to confirm that this fast.To Reproduce
Steps to reproduce the behavior:
onError
method of the checkout configuration is called with aAdyenCheckoutError
Expected behavior
The drop-in should not trigger an error if the Swish app can be opened. Also, if we would want to leave the QR code shown on mobile when the app is not installed (for example to use an other device to scan the QR code), there is no way to distinguish between a real error (like when the payment expires after 3 minutes in https://github.com/Adyen/adyen-web/blob/v5.23.0/packages/lib/src/components/internal/QRLoader/QRLoader.tsx#L94-L98) and the case that the app could not be opened. If the PayPal popup is cancelled for example, we do not redirect to our failed payment page:
Smartphone (please complete the following information):
I have tested on at least the following device, but assume it affects others too.
The text was updated successfully, but these errors were encountered: