Native WebView vs external browser
SFSafariViewController (iOS) and Chrome Custom Tabs (Android) do not let you intercept redirects to your return URLs. They are not suitable for this use case without setting up a deep link.React Native
Dependency:react-native-webview
React Native
Flutter
Dependency:webview_flutter
pubspec.yaml
Flutter
iOS (Swift / WKWebView)
iOS (Swift)
iOS (Swift)
Android (Kotlin / WebView)
Android (Kotlin)
Android (Kotlin)
PaymentActivity in your AndroidManifest.xml:
AndroidManifest.xml
After return detection
The flow is identical across platforms:1
Close the WebView
Pop or dismiss the WebView component to go back to the previous screen.
2
Show a verification screen
Display a loading indicator — “Verifying payment…” — while your backend is queried.
3
Call your backend
Your backend calls the
confirm endpoint with the token stored at invoice creation.4
Display the result
Based on the returned
status: confirm the order (completed), inform the user (notcompleted), or invite them to wait (pending).Related pages
- Redirect the customer — web popup pattern and overview of opening modes
- Verify the status — call
confirmafter the redirect - Common pitfalls — blocked iframe and other frequent errors
