Facebook 支付对象 returns 价格错误

Facebook payment object returns wrong price

我们的 Unity 网络托管 WebGL 应用程序实现了 Facebook 支付 API。自 2017 年 7 月 13 日起,我们注意到某些产品的价格发生了变化,现在与产品 html 中所述的价格不同。我们这边没有任何变化。

示例产品对象:

<!DOCTYPE html>
  <html>
     <head prefix=
        "og: http://ogp.me/ns# 
         fb: http://
         ogp.me/ns/fb# 
         product: https://ogp.me/ns/product#">
      <meta property="og:type"                   content="og:product" />
      <meta property="og:title"                  content="10000 Gold Coins" />
      <meta property="og:image"                  content="https://[HOST_URL]/Icon.png" />
      <meta property="og:description"            content="10000 Gold Coins!" />
      <meta property="og:url"                    content="https://[HOST_URL]/Coins10000.html" />
      <meta property="product:price:amount"      content="2.99"/>
      <meta property="product:price:currency"    content="USD"/>    
      <meta property="product:price:amount"      content="2.99"/>
      <meta property="product:price:currency"    content="EUR"/>
      <meta property="product:price:amount"      content="2.49"/>
      <meta property="product:price:currency"    content="GBP"/>
      <meta property="product:price:amount"      content="3.99"/>
      <meta property="product:price:currency"    content="AUD"/>
      <meta property="product:price:amount"      content="3490"/>
      <meta property="product:price:currency"    content="KRW"/>
      <meta property="product:price:amount"      content="11.9"/>
      <meta property="product:price:currency"    content="ILS"/>
      <meta property="product:price:amount"      content="3.99"/>
      <meta property="product:price:currency"    content="CAD"/>
      <meta property="product:price:amount"      content="314.9"/>
      <meta property="product:price:currency"    content="JPY"/>
      <meta property="product:price:amount"      content="189.9"/>
      <meta property="product:price:currency"    content="RUB"/>
      <meta property="product:price:amount"      content="23.9"/>
      <meta property="product:price:currency"    content="HKD"/>
      <meta property="product:price:amount"      content="2.99"/>
      <meta property="product:price:currency"    content="CHF"/>
      <meta property="product:price:amount"      content="11.9"/>
      <meta property="product:price:currency"    content="PLN"/>
    </head>
  </html>

调用该对象的Unity代码:

FB.Canvas.Pay("http://[HOST_URL]/Coins10000.html", callback: FBProductCallback);

上述产品对用户显示为仅需 1.99 美元(而不是 2.99 美元)。

我的问题如下:Facebook方面有什么变化吗?还有其他人看到这些变化吗?最重要的是,我们如何解决这个问题?

附带说明:我们还测试了精简版支付(在 Facebook 上直接 "hosted" 支付产品),但它们不支持多种货币。

好吧,我在 Facebook 上打开错误报告后设法找到了问题。

我们的代码只是使用 http 协议而不是 https 调用文件 URL。由于某种我不知道的原因,这返回了产品的缓存版本,导致定价与我们配置的不同。

为需要调试 Facebook 产品问题的任何人提供的额外有用工具:

  1. 在浏览器中打开开发人员工具 window 并转到控制台。
  2. 导航到游戏所在的 iframe 运行:

  3. 在控制台中输入以下代码:

    var obj = {
        method:'pay',
        action:'purchaseitem',
        product:'YOUR_PRODUCT_URL'
    };
    
    FB.ui(obj, function(data) {
        console.log(data);
    });
    

这样您就可以看到 Facebook canvas.

中包含哪些不同的 URL

祝你好运!