我正在调整一个 Unity 项目以在网络播放器中运行,以便与 Facebook 的 Canvas 集成,特别是 FB 应用内购买系统。转换几乎完成了,就在几周前,我已经验证了 IAP 选项下的每个可能的选择都运行良好,并且可以正确解决交易。然而,异步支付选项突然开始失败,并出现一条奇怪的错误消息,似乎与任何 Unity 代码或设置为托管游戏的 Web 服务器无关。
当玩家选择异步支付选项并在 FB Pay 对话框中单击确认时,对话框不会关闭,并且会向调试控制台输出错误:
TypeError: undefined is not an object (评估 'window.parent.require("GamePaymentProviderIFrameFlow").processIFrame')
重定向.php
这是 Safari 的错误输出,其他浏览器给出了类似的消息,指示“processIFrame”无法识别,因为“window.parent.require(...)”正在返回未定义的引用。
现在我不确定“redirect.php”实际上在哪里,但从我收集到的信息来看,它似乎正在寻找并且未能找到一个名为“GamePaymentProviderIFrameFlow”的模块。我找不到任何关于这是否是作为 Facebook Unity SDK 的一部分发生的事情或 Facebook 的服务器上发生的事情的任何信息。我确实发现“require”调用很可能是 Node.js 的一部分,因此不会在播放器的浏览器中运行,而是在服务器上运行。
我正在使用 Unity 版本 4.3.0f4 和 Facebook Unity SDK 版本 6.2.2。我当时没有触及任何关于支付系统的事情,因为它工作正常,虽然我知道这不能保证,但 Unity 中似乎根本没有发生错误。我能想到的唯一可能性是,由于 Facebook API 的一些变化,一些 FB 与 FB Unity SDK 的通信已经开始失败。但是,如果这是真的,除了等待 FB 的补丁之外,我不知道是否有任何合理的方法可以解决此问题。
有没有其他人遇到过这个或类似的事情,或者可以就这个话题提供任何其他建议?