介绍 fxpay 用于应用内支付

一段时间前,Mozilla 宣布了navigator.mozPay() 用于在Firefox OS 上接受支付。这是我们帮助开发者在网络上进行商业化的第一步。它解决了处理支付的问题,但其他方面呢?今天,我们宣布提前预览fxpay,这是一个库,它提供了作为开发者在应用中销售数字产品所需的其他功能。这个小型 JavaScript 库(11kB 压缩后)在支付处理的基础上提供了一些不错的附加功能

  • 使用应用内产品目录,无需托管自己的服务器
  • 通过一个简单的 JavaScript 回调安全地验证每次支付
  • 收据 中恢复之前的购买

如果您需要与现有系统集成,mozPay() API 非常有用,但是从头开始构建产品目录需要大量的努力。如果您有为应用添加收入的想法,为什么不快速添加一些产品,看看哪些产品能卖出去呢?

fxpay 库旨在帮助您尽快开始销售。因为它与Firefox Marketplace API 相互作用,因此您无需在自己的服务器上管理代码 - 您可以在Firefox Marketplace 上输入产品详细信息,并在应用中调用一些 JavaScript 函数进行销售。

首先:一个警告

fxpay 处于早期实验阶段。我们正在寻求您的帮助,使其成为一个简洁、直观的库,这意味着 API 可能快速更改。下面有一节详细介绍了如何参与。

提供一些产品供出售

在运行 bower install fxpay (安装详细信息) 之后,使用getProducts() 在您的应用中显示一些产品供出售。

// First, let's test with some fake products.
fxpay.configure({fakeProducts: true});

fxpay.getProducts(function(error, products) {
  if (error) {
    console.error(error);
  } else {
    products.forEach(function(product) {
      addBuyButtonForProduct(product);
    });
  }
});

此处的代码将为每个产品添加一个购买按钮,以便点击按钮即可开始购买。以下是一个简单的示例

function addBuyButtonForProduct(product) {
  var button = document.createElement('button');
  button.textContent = 'Buy ' + product.name;
  button.addEventListener('click', function () {

    fxpay.purchase(product.productId,
                   function(error, product) {
      if (error) {
        console.error(error);
      } else {
        console.log(product.name + ' bought!');
      }
    });

  });
  document.body.appendChild(button);
}

就是这样。调用fxpay.purchase() 会引导用户通过mozPay() 进行支付,并在 Firefox Marketplace 服务器上验证结果。如果您在没有错误的情况下收到回调,则表示购买已验证,资金将在完成购买后转入您的账户。可以安全地交付产品。

试用

使用Firefox OS 模拟器 上的应用管理器 安装应用,然后点击您自定义的购买按钮。由于这是一个使用假产品的测试,您将看到一个支付模拟 屏幕。点击“继续”,您的购买回调将触发,使您能够使产品交付代码正常工作。

恢复购买

当用户完成购买时,一个便携式的收据 会在幕后安装到他们的设备上。这是一个经过加密签名的 JSON 对象,证明拥有该产品。每次用户返回您的应用时,您都应该检查是否有任何收据,以便您可以恢复他们已购买的产品。fxpay 库为您执行验证,但您必须为每个产品恢复 时定义一个回调,如下所示

fxpay.init({
  onerror: function(error) {
    console.error('init error:', error);
  },
  onrestore: function(error, product) {
    if (error) {
      console.error('onrestore error:', error);
    } else {
      console.log(product.name + ' restored');
    }
  }
});

就像购买回调一样,如果您没有收到错误,则表示收据有效;用户拥有该产品,因此您应该使其可用。您可能只需要在应用启动时运行init() 一次。

发布您的应用

当您使用假产品使所有内容正常运行后,下一步是将您的应用提交到Firefox Marketplace 开发人员中心,以便用户可以安装它。提交过程在文档 中有详细介绍;它包括输入银行账户详细信息以接收付款以及提交您希望出售的产品的真实名称和价格。

当您的所有产品都就位且您的应用已获批准后,请设置 {fakeProducts: false},您在这里看到的相同代码将开始使用真实产品。getProducts() 函数将使用您的应用的来源 来检索已配置的产品。

示例应用

fxpay 库附带一个示例应用,您可以从应用管理器 中安装并试用。

参与

您是否有包含应用内支付的应用想法?试试看。我们宣布了fxpay 的早期版本,以便我们可以使其能够很好地为您(开发者)工作。如果有什么问题或感觉别扭,或者您有任何让库更好的想法,请与我们联系!

更进一步

Mozilla 的支付团队很小(但很强大!)。此版本缺少许多功能,但我们想开始收集早期反馈。以下是一些我们希望在下一次添加的功能想法

支持更多应用类型

目前,fxpay 仅限于移动设备上的特权打包应用。请参见所有先决条件。我们正在努力为其他应用类型(如托管应用和桌面应用)开放访问权限。

收据恢复

如果用户丢失了设备或删除了应用,他们将丢失其应用内购买收据。这些收据已在 Marketplace 服务器上备份,但用户还没有界面来重新安装它们。我们正在努力找出在bug 1045228 中执行此操作的方法。

准确的产品价格

价格点和货币因移动网络而异,但未经认证的应用无法可靠地检测用户的网络。目前,您无法在自定义购买按钮旁边显示价格。即使只是一个手动货币选择器,我们也希望为此提供一些解决方案。请参见bug 1063758

产品资产

fxpay 的第一个版本最适合本地内容,例如解锁游戏中的关卡。如果应用要分发远程内容(如 MP3 文件作为铃声),则无法安全地保护该文件的内容。我们将考虑如何在bug 1063059 中添加对它的支持。

我们还计划做很多其他事情!

关于 kumar303

Kumar 参与了 Mozilla Web 服务和工具的开发,以支持各种项目,例如那些支持Firefox 附加组件 的项目。他还参与了大量随机开源项目 的开发。

更多来自 kumar303 的文章…


一条评论

  1. Viking KARWUR

    太棒了!
    将尝试示例应用!谢谢!

    2014 年 9 月 17 日 下午 4:53

此文章的评论已关闭。