如何使用新的支付系统提供准确的价格

igo*_*ors 5 payment facebook facebook-apps

根据此处提供的新支付文档,如果我们想要动态定价,我们需要设置一个FB称之为"用户想要购买x物品并希望以货币CC支付"的脚本,我们的脚本应返回该货币的价格.什么文件不清楚但我们的测试显示FB希望我们将一个项目的价格返回到两位小数.因此,如果FB要求我的脚本"告诉我14美元的美元价格",我想要14令牌花费2美元我需要返回(2/14,2)这是0.14然后FB将这个0.14乘以14和向用户显示他需要支付1.96美元.

那么我该如何让FB向用户展示他需要为14个代币支付2美元?

小智 0

现在我成功地访问了新的支付流程(正如 FB 发布的“重大变更公告”),我可以告诉您我们如何设法解决类似的问题。

情况:
我们向用户提供许多在运行时单独生成的产品,与您的问题类似:例如,其中一个产品可能包含一定数量的固定价格的游戏内货币。另一次,用户可能会免费获得额外数量的货币,从而产生包含+x游戏货币的产品,但价格相同

解决方案:
我们动态地定义产品,即我们调用呈现单个产品的脚本页面。为此,我们提供了一个安全加密的令牌,该令牌作为request_id与 FB.ui 调用一起发送。产品脚本现在解密令牌,并且 - 如果安全检查通过 - 通过动态创建和输出 og:product HTML 来呈现产品...

注意:
请确保生成的产品og:url标签与调用的 url完全匹配,例如,如果您创建调用http://www.example.com/product.php?test=123&token=nkvadkfjgakajdvkaldhjf您的产品元的产品它的 url 必须如下所示:

<meta property="og:url" content= "http://www.example.com/product.php?test=123&token=nkvadkfjgakajdvkaldhjf" />
Run Code Online (Sandbox Code Playgroud)

否则,Facebook 将无法遵循重定向...请记住:每个 og:product 都必须是自引用,从而指向调用它的确切 url。

上述过程的缺点是 FB 无法缓存您的产品,因为每个使用的request_id都必须是唯一的。但无论如何,产品都是单独生成的,所以为什么还要麻烦......

简而言之:
只需动态创建一个产品来满足您的需求并使其指向自身,使用数量1而不是14并将最终价格设置为2 USD

<!DOCTYPE html>
<html>
  <head prefix=
    "og: http://ogp.me/ns#
     fb: http://ogp.me/ns/fb#
     product: http://ogp.me/ns/product#">
    <meta property="og:type"                   content="og:product" />
    <meta property="og:title"                  content="14 tokens" />
    <meta property="og:image"                  content="http://www.example.com/imageUrl.png" />
    <meta property="og:description"            content="You'll get 14 tokens here. Use them to your liking..." />
    <meta property="og:url"                    content="[exact_path_to_this_file_including_all_params]" />
    <meta property="product:price:amount"      content="2"/>
    <meta property="product:price:currency"    content="USD"/>
  </head>
</html>
Run Code Online (Sandbox Code Playgroud)