【发布时间】:2022-06-13 05:56:08
【问题描述】:
我正在尝试使用 Paypal 创建付款结帐流程,并使用 WebView 处理 ExpressJS 后端的请求。 React Native 应用程序读取后端呈现的 html 的 document.title 以确定事务的成功或失败。在 Android 上它可以完美运行,但在 iOS 上 document.title 总是返回为 ""。
反应原生部分:
const INJECTED_JAVASCRIPT =
`document.getElementById('total').value="${total}";
document.getElementById('address').value="${address}";
document.getElementById('firstName').value="${userProfile.firstName}";
document.getElementById('lastName').value="${userProfile.lastName}";
document.getElementById('email').value="${accessStore.auth.userEmail}";
document.getElementById('addressDetails').value="${moreDetails}";
setTimeout(function() {document.f1.submit()}, 1000);`
<WebView
source={{uri: process.env.BACKEND_NODE_URL_PAYMENT}}
onNavigationStateChange={(data) => {
handleResponse(data), console.log(data)
}}
onMessage={(event) => {}}
injectedJavaScript={INJECTED_JAVASCRIPT}
/>
快递部分
app.get('/success', (req, res) => {
var PayerID = req.query.PayerID;
var execute_payment_json = {
"payer_id": PayerID,
};
var paymentId = req.query.paymentId;
paypal.payment.execute(paymentId, execute_payment_json, function (error, payment)
{
if (error) {
console.log(error.response);
throw error;
} else {
res.render('success');
}
});
});
在 EXPRESS JS 中渲染 HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>success</title>
</head>
<body>
<h1>Zahlung erfolgreich!</h1>
</body>
</html>
【问题讨论】:
-
看起来你可能还需要一个参考,根据这个 GitHub 问题评论:github.com/react-native-webview/react-native-webview/issues/…
-
我尝试添加但仍然无法正常工作:(
-
这可能是一个错误。它曾经可以工作,但我现在遇到了同样的问题。使用 react-native-webview 11.15 和 11.17 测试。我不知道哪个版本有效。甚至可能是 iOS 15 引入了这个问题。
-
是的,老实说,没有具体的解决方案。我最终通过使用 .includes() 和 URL 值来解决它
标签: reactjs react-native webview android-webview react-native-webview