FirefoxOS - 来自特权打包网络应用程序的 fxpay 小额支付

FirefoxOS - fxpay micro payment from privileged packaged web app

首先,我在 firefox 0S 2.0 模拟器上进行了所有测试

我有一个网站是游戏门户网站。

我制作了一个包含所有要求的特权打包应用程序。作为 launch_path 我拿了一些“index.html”文件,在这个文件里面我写了所有的基本信息,特别是这个header 中的一个:

<meta http-equiv="refresh" content="5;url=http://url10.infinitgame.com?webview=1">

就此而言,它工作正常。这意味着我可以在 firefox OS 桌面中启动我的应用程序并进入我的 webportal

所以接下来我按照一些文档中的说明打包了 fxpay 库,并将其添加到我的游戏 webportal 服务器中。我已经按照教程制作了所有内容,并且它与假冒产品完美配合。

在此之后我做了一个 "real product"(创建一个 Bango 帐户,选择国家,最后创建真正的产品)。然后我关闭了 javascript 代码中的假冒产品。现在我找不到我的产品,并且收到错误消息:

-"using default adapter"
-"using Firefox Marketplace In-App adapter"
-"using custom adapter"
-"receipts fetched from mozApps:" 0
-"receipts fetched from localStorage:" 0 
-"Number of receipts installed: 0" 
-"about to fetch real products for app" "http%3A%2F%2Furl10.infinitgame.com"
-"opening" "GET""to" "https://marketplace.firefox.com/api/v1/payments/http%3A%2F%2Furl10.infinitgame.com/in-app/?active=1"
-"BAD_API_RESPONSE" "status:" 404 "for URL:" "https://marketplace.firefox.com/api/v1/payments/http%3A%2F%2Furl10.infinitgame.com/in-app/?active=1"

-"BAD_API_RESPONSE" "response:" "{"detail":"Not found"}"
-"Error getting products:" "BAD_API_RESPONSE".

我也在网上看到,必须先发布应用程序才能使用生产付款。但是我发现很多关于 firefoxOS 的矛盾信息,因为社区很小。

这是我的manifest.webapp

{
    "version": "1.0.0",
    "name": "T-Games",
    "description": "T-games service de malade",
    "launch_path": "/index.html",
    "type": "privileged",
    "icons": {
        "16": "/img/icon-16.png",
        "48": "/img/icon-48.png",
        "128": "/img/icon-128.png"
    },
    "developer": {
        "name": "Serial Screener",
        "url": "http://url0.infinitgame.com"
    },
    "permissions": {
        "systemXHR": {
            "description": "Required to access payment API"
        }

    },
    "chrome": { "navigation": true },
    "origin": "app://url10.infinitgame.com",
    "csp" : "default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'"

}

这是我的 index.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>T-Games</title>
        <meta name="description" content="TGames, service de jeux">
        <meta name="viewport" content="width=device-width">    
        <meta http-equiv="refresh" content="5;url=http://url10.infinitgame.com?webview=1">    

    </head>
    <body>
        <p>Loading...</p>
        <script type="text/javascript" src="fxpay.min.js"></script>
  </body>
</html>

感谢您的时间和支持。

托米

确实,您的应用必须得到完全批准,并且 public 在 API 将 return 您的真实产品之前。在 Developer Hub 上,您可以点击应用侧边栏中的 Status 以查看它是否为 public。非 public 应用程序可能会导致您看到 BAD_API_RESPONSE (404)。

另一个问题是,根据您的清单,您的应用程序已打包并且来源为 app://url10.infinitgame.com。但是,控制台日志表明您正在 运行 从源 http://url10.infinitgame.com 的 Web 下载该应用程序。这也会导致 BAD_API_RESPONSE (404),因为您的产品是在 app: 来源下注册的,而不是 http: 来源。

如果我没理解错的话,您是从打包的应用程序中重定向到 http: URL。如果是这种情况,您需要 运行 打包应用程序中的所有 fxpay 代码,然后执行类似 window.postMessage 的操作以将结果传递给 http: URL。您还必须切换到使用 iframe 而不是重定向,以便您可以 运行 JavaScript 从顶级打包应用 window.

不要求您使用打包的应用程序通过 fxpay 库进行应用程序内支付。从最近的版本开始,使用托管应用程序就可以了。也许那样会更容易。