Garmaine Staff asked 2 years ago

I am currently building a pizza ordering app using Xamarin.forms intended for both iOS and Android, and whilst trying to integrate with the payment provider I have encountered a very sticky situation.

Essentially the payment provider (Elavon) provides me a Hosted Payments Page(HPP) where I can send the user to complete their transaction, great. The issue is that when the user cancels a transaction or successfully completes the page will redirect to a page of my choosing, but I have no way of knowing (from Xamarin) when the transaction is complete/cancelled.

So in order to jump out of the WebView I need to call a JavaScript function from the redirected page, that will in turn invoke some C# in Xamarin to exit webview and navigate to an appropriate page.

I have successfully implemented the HybridWebView from Microsoft docs in the past, here: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/custom-renderer/hybridwebview

Ideally I could navigate to a local html page in each of the platform projects as in this example, but I do not think this is possible with just a Url, which is all the HPP accepts (Additionally file locations are different on Android/iOS).

I intended to simply navigate to a webpage that I host in Asp Net core where I can call the invokeCSharpAction method, pass string data back to xamarin, and depending on string value navigate accordingly in Xamarin.

The problem with this approach is that on the web page I get an "Uncaught Reference Error" on the "invokeCSharpAction" and the function in Xamarin is NOT getting called.

Does anyone know if it is possible to invoke a C# action in Xamarin from a web page that is NOT local to the device?

Thanks in advance to anyone who has any ideas, I'm fresh out.