网络支付的承诺
本系列的第一篇和第二篇文章概述了PaySwarm如何设计用于像发送和接收电子邮件一样轻松地传输和接收资金。文章还解释了如何将传统上只对银行、华尔街和大型企业可用的工具提供给所有人,这将有助于改革我们的金融体系。目标不仅仅是实现一键支付,而且还包括:促进众筹创新,帮助网络开发者通过网络谋生,促进初创企业的融资轮次,以及推动能够实现更加平等社会的举措。
这是关于使用 PaySwarm 规范发送和接收资金的系列文章的最后一篇。本文将回顾前两篇文章中的一些概念,并介绍购买请求、数字合同和数字收据的概念。本教程将继续解释如何通过 PaySwarm 进行购买,以及如何下载数字销售收据。本文提供了代码示例和流程视频。
回顾:身份
如第一篇文章所述,Web Keys 规范提供了一个基于公钥密码学的简单、去中心化的网络身份解决方案。它使网络应用程序能够发送经过加密和可验证的消息。
消息使用用于链接数据的 JavaScript 对象表示法 (JSON-LD) 进行标记。顾名思义,JSON-LD 是一种在 JSON 中表达链接数据的方式。HTML 文档和 JSON-LD 文档都描述事物,并链接到网络上的其他文档。JSON-LD 文档的主要优势在于,机器可以轻松地提取并对其中包含的信息执行基本推理,而不会给作者带来很大负担。
Web Keys 与 JSON-LD 结合使用,为 PaySwarm 用于执行网络支付的底层身份和消息机制提供了支持。
回顾:资产和清单
如第二篇文章所述,PaySwarm 使得可以在网络上以去中心化的方式列出产品和服务以供出售。该规范允许内容创作者和开发者控制他们自己的产品描述和价格,以及选择将此责任委托给应用程序商店或大型零售网站。第二篇文章详细阐述了用于描述在网络上出售的产品和服务的两个基本概念:资产和清单。
资产是对产品或服务的描述。资产示例包括网页、电子书、杂货、演唱会门票、遛狗服务、捐赠、在特定无线电频段上进行传输的权利以及已执行工作的发票。一般来说,任何有价值的东西都可以建模为资产。
清单是对以特定条款出售资产的描述。这些条款包括:出售的资产、与购买相关的许可、支付资产的个人或组织列表以及清单的有效期。
购买请求、合同和收据
到目前为止,本系列已经介绍了去中心化的身份机制、安全且可验证的消息机制以及在网络上发布产品和服务以供出售的去中心化机制。本文介绍了购买请求、合同和收据。
当客户请求购买时,会向 PaySwarm 权威机构发送购买请求。它包含有关买方希望购买的资产和清单的详细信息。购买请求可以通过两种方式授权
第一种方式是让供应商向客户提供购买请求,以便客户将其提供给他们的 PaySwarm 权威机构。一旦客户提交了购买请求,他们就可以使用 PaySwarm 权威机构提供的界面查看潜在的合同,并决定是否同意其条款。
客户可以通过使用在个人电脑或手机等设备上运行的软件对其进行数字签名来授权购买请求。然后,此软件可以将购买请求传输到他们的 PaySwarm 权威机构以进行处理。这种方法允许客户使用需要代表他们进行购买的创新型第三方应用程序。
合同是表达参与交易的所有方之间协议的电子文档。它包含由资产提供者数字签名的资产,以及由供应商数字签名的清单。合同可以通过两种方式完成
完成合同的第一种方式是,当将经授权的购买请求提交给 PaySwarm 权威机构时。如果付款处理能够顺利进行,则该购买的合同将完成并由 PaySwarm 权威机构记录在案。
完成合同的第二种方式需要客户在将合同提交给 PaySwarm 权威机构之前对其进行数字签名。这种方法允许客户使用 PaySwarm 权威机构未托管的界面来全面查看合同条款。如果客户同意合同,他们的软件将对其进行数字签名。然后,可以使用各种不同的机制将数字签名的合同传输到他们的 PaySwarm 权威机构。当客户无法访问互联网,但他们购买的供应商可以访问互联网时,这尤其有用。例如,当客户使用 PaySwarm 启用的没有数据计划的手机在店内进行零售购买时。手机可以从供应商那里通过 NFC 接收合同,在手机上对其进行数字签名,并将签名的合同通过 NFC 传回给供应商。然后,供应商将合同交付给客户的 PaySwarm 权威机构,并执行付款处理。
收据是成功购买的结果。通常,PaySwarm 权威机构会向供应商提供收据,其中包含证明特定客户的资产销售成功完成的必要最少信息。为了更全面地查看购买情况,供应商或客户可以从他们的 PaySwarm 权威机构请求完整的合同。合同将作为购买凭证提供给买方,并用于离线存储。它将包含证明购买发生的全部详细信息,即使处理购买的 PaySwarm 权威机构和/或供应商倒闭或关闭,也是如此。
下面的视频展示了一种用于处理购买请求、合同和收据的基于浏览器的机制
本教程的其余部分将演示如何执行基于控制台的购买,其中客户构建、签名并将购买请求传输到 PaySwarm 权威机构以进行处理。本教程将使用payswarm.js 节点模块中的代码。具体来说,它引用了资产购买示例。付款处理器将是PaySwarm 开发人员沙箱,资产托管服务将是PaySwarm 开发人员清单服务。
执行购买
本教程假定您已阅读本系列的第一篇和第二篇文章。在这些文章中,通过 PaySwarm 权威机构创建了一个身份,并将 Web Key 与该身份关联起来,以便创建数字签名。已注册的 Web Key 将用于对本教程中显示的购买请求进行数字签名。资产和清单也发布到PaySwarm 开发人员清单服务。
执行购买的第一步是检索指示要出售的资产的清单。payswarm.js 库中的 getJsonLd()
函数可用于根据 URL 检索清单数据
var url =
'http://listings.dev.payswarm.com/mozhacks/html5-me-song#listing';
payswarm.getJsonLd(url, {cache: true}, function(listing) {
// do something with the listing
});
上面的代码只是以 JSON-LD 格式从给定 URL 提取清单。数据可以在页面上以 HTML+RDFa 的形式表达,然后将其转换为 JSON-LD 并返回给应用程序。然后,可以使用清单数据来构建购买请求、对其进行数字签名并将它们交付给 PaySwarm 权威机构以进行处理。所有这些都在下面通过调用 payswarm.js 库中的 purchase()
函数来完成
// purchase the asset under the terms of the listing by
// digitally signing a purchase request and sending it
// to the PaySwarm Authority
payswarm.purchase(listing, {
// the Web Service that will process the purchase request
transactionService: 'https://dev.payswarm.com/transactions',
// the identity that is performing the purchase
customer: 'https://dev.payswarm.com/i/IDENTITY',
// this financial account will be the source for
// the payment funds
source: 'https://dev.payswarm.com/i/IDENTITY/accounts/ACCOUNT',
// the private key information used to digitally sign
// the purchase request
privateKeyPem: publicKey.privateKeyPem,
// the public key ID that will be associated with the
// digitally signed purchase request
publicKey: publicKey.id,
// log details of the transaction to the console
verbose: true
}, function(err, receipt) {
// if err is null, the purchase was successful
// do something with the receipt
console.log('Receipt:', receipt);
// the transaction ID can be used to download
// the complete contract
console.log('Transaction ID:', receipt.contract.id);
});
上面的代码使用上一步中检索的清单数据构建了一个购买请求。购买请求还包括将为购买提供资金的财务账户。然后使用买方的公钥对其进行数字签名。然后将签名的购买请求通过 HTTP POST 发送到 PaySwarm 权威机构上的交易处理 Web 服务。如果合同中的资产、清单、许可和付款详细信息均有效,PaySwarm 权威机构将处理付款并返回一个数字签名的收据。收据将包含销售的交易 ID,然后可以使用该 ID 检索销售的完整合同。
下载合同
可以下载合同并将其存储以用作购买凭证。payswarm.js 库提供了一个实用程序,可以通过发出简单的命令来下载交易
./bin/payswarm url https://dev.payswarm.com/transactions/1.24.f3d
下面的视频演示了使用 payswarm.js 库的基于控制台的购买的示例
结论
这是关于构建支持 PaySwarm 的网站和 Web 应用程序的三部分系列的最后一篇文章。PaySwarm 的主要目标之一是让 Web 上的资金传输和接收像发送和接收电子邮件一样容易。这不仅仅是关于一键式支付;它也是关于使用开放标准为大众带来新的强大工具,这些工具将促进竞争和创新。
如果你想及时了解 Web 支付的最新动态,请加入 Web 支付社区邮件列表。
关于 Manu Sporny
W3C Web 支付 的创始人。 RDFa 和 JSON-LD 工作组主席。 PaySwarm、JSON-LD 和 HTML5+RDFa 规范的主要编辑。 创建了世界上第一个商业 PaySwarm 支付处理器 Meritora 的公司创始人。 领导将金融和支付融入 Web 的核心架构。 许多与标准相关的作品,其重点是使世界成为所有人的更美好的地方。 其他账户:@manusporny、+Manu Sporny、LinkedIn 和 博客。
关于 Robert Nyman [荣誉编辑]
Mozilla Hacks 的技术布道者和编辑。 关于 HTML5、JavaScript 和开放 Web 的演讲和博客。 Robert 是 HTML5 和开放 Web 的坚定支持者,自 1999 年以来一直在瑞典和纽约市从事 Web 前端开发工作。 他还定期在 http://robertnyman.com 上发布博客,喜欢旅行和结识新朋友。
一条评论