我们正在将支付系统与我们的应用程序集成。它在 iOS 上完美运行,但在 Android 中导航回应用程序不起作用。我们想在我们的应用程序内打开支付系统网页。为此,我们在以下位置设置了此配置capacitor.config.json
:
{
"server": {
"allowNavigation": ["sis-t.redsys.es", "*.redsys.es"]
}
}
Run Code Online (Sandbox Code Playgroud)
现在,集成系统有点棘手。我们需要一个触发帖子的表单组件:
{
"server": {
"allowNavigation": ["sis-t.redsys.es", "*.redsys.es"]
}
}
Run Code Online (Sandbox Code Playgroud)
在我们的代码中app.component.ts
,有以下代码:
<form ngNoForm #myFormPost action="https://sis-t.redsys.es:25443/sis/realizarPago" method="post">
<input type="hidden" name="Ds_SignatureVersion" [value]="dsSignatureVersion" />
<input type="hidden" name="Ds_MerchantParameters" [value]="dsMerchantParameters" />
<input type="hidden" name="Ds_Signature" [value]="dsSignature" />
</form>
Run Code Online (Sandbox Code Playgroud)
所有这些都有效,因为它打开了支付系统应用程序。现在,该系统允许我们设置重定向页面以便导航回我们的应用程序。我们已经定了capacitor://localhost/store?r=ko
。正如文档中所述,iOS 的方案是capacitor://
,Android 的方案是http://
。因此,当我们完成操作并尝试通过单击 iOS 上的按钮返回应用程序时,它会完美地返回到应用程序,但 Android 则不会。
我们尝试在 iOS 中将 url 设置为 ,capacitor://localhost/store?r=ko
在 Android 中设置为http://localhost/store?r=ko
,但是在 Android 中,它会尝试打开浏览器,这是我们不希望的。
我们尝试将 设为androidScheme
,capacitor
但它破坏了 http 请求。我们还尝试将AndroidManifest.xml
属性更改android:launchMode
为本期singleTop
所述。我们尝试将文档中所述更改为以下内容:strings.xml
<?xml version='1.0' encoding='utf-8'?>
<resources>
<string name="app_name">app</string>
<string name="title_activity_main">app</string>
<string name="package_name">com.app</string>
<string name="custom_url_scheme">com.app</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
并将回调 url 设置为com.app://localhost/store?r=ko
空。
我们尝试了一些带有深层链接的配置,但由于我们位于应用程序内部,因此它不会导航到该应用程序,因为我们不是来自外部站点。
也许您可以创建一个代理 GET 后端端点来接收 dsSignature、dsMerchantData 和 dsSignatureVersion 作为查询参数。然后您应该将您的请求从后端重定向到 Redsys。
使用此方法深层链接可以正常工作,因为初始 URL 是外部 GET 站点。
归档时间: |
|
查看次数: |
2594 次 |
最近记录: |