0

我正在尝试启动支付对话框以在我们的应用程序中购买游戏货币。但是,无论我尝试什么,对话框都不会出现,也没有错误消息或任何东西。

我将列出我试图根除问题的所有事情的列表。

  1. 如果我从我们的网页运行该应用程序,则会出现一个带有 API 错误代码:1151 的弹出窗口。如果在 Facebook 中运行,则不会出现此弹出窗口,也不会出现任何内容。

  2. 付款回调 URL 已设置,服务器端代码也已设置。这已经过手动测试,但我们的日志显示没有来自 facebook 本身的调用。

  3. 我尝试在 Actionscript 中从我们的应用程序中启动它,并调用 JavaScript 函数,两者的行为相同。

  4. 我也试过 buy_credits 来排除回调(因为这显然不需要回调函数),这也有同样的问题。

  5. 我刚刚通过设置直接 URL 调用并将其粘贴到我的浏览器中成功调用它,以便验证服务器端代码是否正常工作。

在这个阶段,我想知道这是否是对话框显示模式的问题。上周我设置了应用请求,但无法让请求对话框显示在 iframe 中。它目前仅用作弹出窗口。这是完全相同的问题,没有错误消息,只是什么都不会发生。由于支付对话框使用页面显示模式,可能与 iframe 显示模式有问题。但是,我找不到其他有此问题的人。

我不再相信这是代码问题,因为我尝试了大量示例,它们的行为都相同,包括直接取自 Facebook 开发人员页面的代码,以及 Stack Overflow 中的其他用户。我会在这里发布以防万一,但我确定它必须是 facebook 上的应用程序设置或 index.html 中的某种设置。

作为:

   order_info =
   {
      title:'Test Product',
      description:'Test product description',
      price:'123'
   };

   Facebook.ui(
      "pay.prompt",
      {order_info: order_info, purchase_type: "item"},
      payCallback);

JS:

function make_purchase()
{
    var obj = {
    method: 'pay',
    action: 'buy_item',
    order_info: {'item_id': '1a'},
    dev_purchase_params: {'oscif': true}
    };

    FB.ui(obj, js_callback);
}

var js_callback = function(data) 
{
    if (data['order_id']) {
    }
};

任何帮助将不胜感激。

4

1 回答 1

1

我设法解决了这个问题。万一有人想知道,我正在使用 embedSWF 将我们游戏的 flash 对象嵌入到网页中,将其更改为添加一个 Object 标签解决了这个问题。我目前不知道为什么嵌入它会导致对话框不出现,但是当我发现时我会再次在这里发布。

于 2013-04-11T10:31:10.880 回答