Flutter Web集成Cashfree支付遇postMessage克隆失败DOMException错误
解决Flutter Web集成Cashfree支付时postMessage克隆错误
错误原因
这个错误是Cashfree Flutter Web SDK在通过postMessage传递数据时,尝试克隆了无法被浏览器结构化克隆算法处理的对象(比如包含函数、循环引用、特殊DOM对象的内容)。
解决方案
- 清理支付请求参数:确保传给Cashfree SDK的所有参数都是可JSON序列化的类型(字符串、数字、布尔值、普通对象/数组),移除或转换参数中包含的函数、Symbol、循环引用等不可序列化内容。
- 升级SDK版本:当前使用的1.0.26版本存在已知的序列化兼容问题,升级到最新稳定版即可修复这类问题。
- 排查环境干扰:检查是否有第三方脚本(如广告、统计工具)干扰
postMessage调用,临时禁用其他脚本验证问题是否消失;同时确保运行环境是支持结构化克隆的现代浏览器(或配置正确的WebView环境)。 - 手动净化请求数据:在调用支付接口前,通过序列化再解析的方式清理不可序列化内容,示例代码:
import 'dart:convert'; // 原始支付请求数据 var rawPaymentData = { "orderId": "YOUR_ORDER_ID", "amount": "100.00", // 其他支付参数 }; // 净化数据:过滤不可序列化内容 var sanitizedData = jsonDecode(jsonEncode(rawPaymentData)); // 使用净化后的数据调用Cashfree支付接口 CashfreeDropout.openDropin(sanitizedData);
内容的提问来源于stack exchange,提问作者Jagan Badiyar
相关产品推荐
相关产品推荐

