我们正在使用 .NET 7 Blazor Client 用 C# 开发一个应用程序。我们正在使用名为 Adyen 的外部支付系统及其直接支付组件。它通过指定 div 标签的 ID 通过 AJAX 加载到其中一个页面。其中一种支付方式是 Swish(瑞典的一种支付解决方案),它通过 URI swish:// 在手机上打开外部应用程序。一切正常,只是当此应用程序打开时,Blazor 页面会重新加载。
Blazor 的另一个问题是我们指定 Swish 应用程序在完成交易后将用户引导至的返回 URL。尽管地址与打开 Swish 的选项卡完全相同,但这会在新选项卡中打开,从而产生两个完全相同的选项卡。
我们已联系 Adyen 支持人员,他们确认这种情况不应该发生。我们通过使用完全相同的代码在 .NET MVC 中创建页面进行测试,并且页面没有重新加载,表明问题与 Blazor 有关。
我们已经对此进行了测试:
iOS Safari iOS 浏览器 安卓浏览器 安卓火狐
以 f.e. 开头的 URI如果在
swish://
视图中处理不当,/redirect/
可能会导致页面重新加载。我需要更多信息来重现此问题,您能否分享一个最小的可运行代码片段,我可以在其中重现此问题?
我会检查以下一些内容来查明原因:
您是否在 Adyen Drop-in/Components 中使用 Blazor 的 Javascript Interoperability (
[JSImport]/[JSExport]
)?
您是否预渲染 Razor 组件,请参阅文档。如果您的应用程序正在预渲染,则无法执行某些操作,例如调用 JavaScript (JS)。
在您的
Route templates/Route views
中(如果您正在使用 NavigatoTo
),您能否尝试将其从 Blazor 的路由中排除,以便它不会重新加载。请参阅 documentation NavigateTo
并尝试使用 forceLoad
属性。 (我不建议将此作为解决方案,但它可以帮助您缩小问题范围)
指定
returnUrl
时,很可能会由于您处理重定向链接的方式而打开两个选项卡 (target='_blank'
)。看看这是否是预期的行为。
这就是我目前在没有任何代码片段的情况下所能做的,请告诉我这是否对您有帮助