使用 fxpay 简化应用内支付

对于在 Firefox OSFirefox 桌面版 上构建 Web 应用程序的开发者来说,使用 Mozilla 的 fxpay 库可以轻松地支持支付。除了接受信用卡之外,Mozilla 的支付系统还允许用户在许多国家直接从手机账单中扣款,使其成为移动商务的理想选择。

自我们 首次介绍 fxpay 以来,该库已修复了许多错误并添加了新功能。根据开发者的反馈,我们还决定提供一个支持 原生 Promise (在旧版浏览器上 使用垫片)的新接口,以提高灵活性和更好的错误处理。本文将介绍如何检索产品、处理支付以及从收据中恢复产品。

如果您已直接使用 mozPay API 设置应用内支付,请考虑移植到 fxpay,以便享受 Mozilla 托管的产品带来的便利以及桌面支付等其他功能。至少,请确保您的 JWT 库已修补,以解决最新的安全漏洞。

让我们开始吧!在 安装 fxpay 库 后,您可以开始使用一些 假产品 测试它。

fxpay.configure({fakeProducts: true});
fxpay.getProducts()
  .then(function(products) {
    products.forEach(function(product) {
      addBuyButtonForProduct(product);
    });
  })
  .catch(function(error) {
    console.error('error getting products: ' + error);
  });

这将检索一些预先配置的假产品,您可以用它们进行尝试。一旦您在 Firefox Marketplace 开发者中心 配置了真实的产品,您可以删除此配置值以使用真实产品。

在上面调用的示例函数中,您可以像这样为每个产品显示一个购买按钮

function addBuyButtonForProduct(product) {
  var button = document.createElement('button');
  button.textContent = 'Buy ' + product.name;
  button.addEventListener('click', function () {
 
    fxpay.purchase(product.productId)
      .then(function(purchasedProduct) {
        console.log('product purchased! ', 
                    purchasedProduct);
      })
      .catch(function(error) {
        console.error('error purchasing: ' + error);
      });
 
  });
  document.body.appendChild(button);
}

fxpay 库在后台使用 Mozilla 的 Web 服务 完成所有支付处理,因此当 Promise 解决时,就可以安全地提供产品。目前,fxpay 还会在用户的设备上安装收据。当用户稍后返回您的应用程序时,您将需要检查是否有任何收据,以便恢复他们的购买。

以下是对产品获取代码的重写,用于恢复已购买的产品

fxpay.getProducts()
  .then(function(products) {
    products.forEach(function(product) {
    
      if (product.hasReceipt()) {
        product.validateReceipt()
          .then(function(restoredProduct) {
            console.log('restored product from receipt:', 
                        restoredProduct);
          })
          .catch(function(error) {
            console.error('error validating receipt: ' + 
                          error);
          });
      } else {
        addBuyButtonForProduct(product);
      }
    
    });
  });

我们希望这个新接口让应用内支付的实验比以前更加容易。您永远无法确定哪种商业模式适合您的应用程序,所以为什么不尝试一些想法呢?

完整的 fxpay 使用指南在 MDN 上

关于 kumar303

Kumar 负责为各种项目(例如支持 Firefox 附加组件 的项目)开发 Mozilla Web 服务和工具。他还在许多 随机开源项目 上进行开发。

更多由 kumar303 撰写的文章...


4 条评论

  1. Anders

    这在普通网页上有效吗?如果没有,为什么?

    2015 年 5 月 7 日 下午 12:23

  2. Kumar McMillan

    您好 Anders。这在普通网页上有效。我们在 Chrome 上进行了测试,但没有进行广泛的测试。我们目前“正式”不支持其他浏览器,因为我们希望保持我们的 QA 范围精简。

    2015 年 5 月 7 日 下午 1:20

    1. Anders

      它确实有效。演示
      http://output.jsbin.com/ranajavure
      所以我现在可以使用 fxpay 用于我的网店?

      2015 年 5 月 7 日 下午 3:44

  3. Kumar McMillan

    当然,我认为可以。我们目前的重点是应用程序,因此要出售真实的商品以换取真金白银,您需要提交一个应用程序以供 Firefox Marketplace 审批。

    2015 年 5 月 8 日 上午 11:13

本文的评论已关闭。