Framework-Specific Setup
WebView Keyboard Handling
When embedding the checkout page inside a mobile WebView, the WebView often shrinks when the keyboard opens, which results in a poor user experience. Input fields or the Pay button may get hidden, forcing the user to scroll in awkward ways. To ensure a smooth experience, configure the WebView so that the keyboard pans over the WebView instead of shrinking it. This allows the WebView to remain in place, keeps input fields properly focused, and ensures that critical actions like completing payment stay visible. For Example in Flutter, you can configure the Scaffold to prevent the WebView from shrinking.Google Pay Integration
Chrome Custom Tab (CCT) Integration
Chrome Custom Tabs provide a seamless way to display web content within your Android app while maintaining the native look and feel. For Google Pay integration on Android, we strongly recommend using CCT instead of WebView for better performance, security, and native user experience.WebView Integration with Google Pay
Note: While CCT is the recommended approach for Google Pay on Android, if you must use WebView instead, refer to the Google Pay Android WebView guide for complete integration details.Android & iOS Requirements
Android
If your app wants to check if other apps are installed or can handle specific intents (like deep links or custom schemes) before launching them, you need to declare those intents inside the<queries>
tag in your app’s AndroidManifest.xml
.
This is mandatory starting Android 11 (API 30) for privacy reasons.
Without this, calls like PackageManager.queryIntentActivities()
or launching those intents may not work as expected.
iOS
If your app wants to check whether other apps are installed that support certain custom URL schemes before opening them (usingcanOpenURL
), you must declare those schemes inside the LSApplicationQueriesSchemes
array in your Info.plist
.
Without this, canOpenURL
will always return false for those schemes (except for some system schemes).
This is required since iOS 9 for privacy reasons.
Summary
Platform | Requirement |
---|---|
Android | Declare intent filters inside <queries> tag in AndroidManifest.xml |
iOS | Declare URL schemes inside LSApplicationQueriesSchemes in Info.plist |
Example
Android (AndroidManifest.xml)
iOS (Info.plist)
If deep links are not handled as described, your app may not open apps like Cash App or klarna from within the WebView.