Normally, the Venmo flow is launched using window.open and the Venmo app intercepts that call and opens the Venmo app instead. If the customer does not have the Venmo app installed, it opens the Venmo website in a new window and instructs the customer to install the app.
In iOS webviews and Safari View Controllers (a webview-like environment which is indistinguishable from Safari for JavaScript environments), this call to window.open will always fail to app switch to Venmo, resulting instead in a white screen. Because of this, an alternate approach is required to launch the Venmo flow.
When useRedirectForIOS is true and the Venmo flow is started in an iOS environment, the Venmo flow will be started by setting window.location.href to the Venmo website (which will still be intercepted by the Venmo app and should be the same behavior as if window.open was called). However, if the customer does not have the Venmo app installed, the merchant page will instead be replaced with the Venmo website and the customer will need to use the browser's back button to return to the merchant's website. Ensure that your customer's checkout information will not be lost if they are navigated away from the website and return using the browser back button.
Due to a bug in iOS's implementation of window.open in iOS webviews and Safari View Controllers, if useRedirectForIOS is not set to true and the flow is launched from an iOS webview or Safari View Controller, the customer will be presented with a blank screen, halting the flow and leaving the customer unable to return to the merchant's website. Setting useRedirectForIOS to true will allow the flow to continue, but the Venmo app will be unable to return back to the webview/Safari View Controller. It will instead open the merchant's site in a new window in the customer's browser, which means the merchant site must be able to process the Venmo payment. If the SDK is configured with allowNewBrowserTab = false , it is unlikely that the website is set up to process the Venmo payment from a new window.
If processing the payment from a new window is not possible, use this flag in conjunction with requireManualReturn so that the customer may start the flow from a webview/Safari View Controller or their Safari browser and manually return to the place that originated the flow once the Venmo app has authorized the payment and instructed them to do so.
|