使用Flutter Paystack和WebView Flutter时取消按钮点击无响应求助
解决Flutter WebView集成Paystack支付时取消按钮无响应问题
- 启用JavaScript支持
Paystack的支付页面依赖JavaScript实现交互逻辑,必须在WebView配置中开启JS支持:
WebView( initialUrl: "你的Paystack支付链接", javascriptMode: JavascriptMode.unrestricted, // 关键配置 // 其他必要配置 )
- 拦截取消导航请求
Paystack点击取消按钮后会跳转到预设的取消回调URL,通过navigationDelegate拦截该请求并处理后续逻辑:
navigationDelegate: (NavigationRequest request) { // 替换为你的取消回调URL特征,比如包含"/cancel"或你的回调域名 if (request.url.contains("/cancel") || request.url.contains("your-cancel-callback.com")) { // 执行取消后的操作:关闭WebView、更新本地状态等 Navigator.pop(context); return NavigationDecision.prevent; // 阻止默认跳转行为 } return NavigationDecision.navigate; },
- 监听JavaScript消息(可选场景)
如果Paystack通过JS事件触发取消通知,可配置javascriptChannels接收消息:
javascriptChannels: <JavascriptChannel>{ JavascriptChannel( name: "PaystackCancelHandler", onMessageReceived: (JavascriptMessage message) { // 处理取消事件 Navigator.pop(context); }, ), },
若为自定义Paystack集成页面,需在网页中添加触发代码:
// 支付取消时调用 window.PaystackCancelHandler.postMessage("payment_cancelled");
- 检查用户代理设置(可选)
部分支付网关对用户代理有要求,可设置标准浏览器用户代理:
userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
内容的提问来源于stack exchange,提问作者DAVE chintan
相关产品推荐
相关产品推荐

