订单

订单管理区块链订单加密货币订单订单类型订单确认方式订单状态

介绍了 Spell 的订单管理系统。

订单是 Spell 的核心功能,指的是发起收款的相关操作。注册用户可以通过 Web 界面或 API 请求来进行如下操作:

  • 创建一个订单
  • 查询一个或多个订单
  • 取消一个订单
  • 删除一个订单

注:订单创建后,该订单的信息不可被再次修改。


订单类型

目前,Spell 提供了两种订单类型:预置收款单自定义转账(暂未开放)。

用户在 Web 界面创建订单时,部分字段不可用:

  • 组编号group_no(仅API可用)
  • 订单号order_no(自动生成)
  • 通知地址notify_url(仅API可用)
  • 跳转地址return_url(仅API可用)
  • 超时时间timeout(默认 30 分钟)

预置收款单 Pre-configured Invoice

预配置收款单是用户体验最好的收款订单类型,适用于支付任何商品和服务。

订单信息由收款方(商户/个人)进行预配置,创建后产生唯一支付链接,如:spell.im/pay/[orderId]。付款方(用户)访问支付页面,可在链接中点击支付按钮,从而调起浏览器中安装的钱包插件完成支付。支付完成后POST请求通知地址,配置过跳转地址的收款单将会在支付成功后跳转到该地址。

收款单仅可被支付一次,支付完成后订单生命周期结束,订单数据不会再发生变更。

自定义转账 Transfer

自定义支付类似于普通的转账,适用于捐赠、慈善捐款、发红包等场景。

收款方(商户/个人)仅指定收款地址(区块链网络、币种可选),创建后生成唯一链接,如:spell.im/pay/[orderId]。付款方(用户)访问支付页面,选择区块链网络(如未指定)和币种(如未指定),填写金额,然后点击转账按钮,调起浏览器中安装的钱包插件完成转账。

自定义转账的订单可被重复支付。


订单确认方式

由于区块链转账的去中心化特性,转账操作并不依赖由任何中心化机构发起,因此 Spell 通过相关技术能力来进行订单支付状态的确认:

  • ID确认:将订单 ID 作为额外数据进行编译后加入区块链的转账信息中,支付完成后通过匹配订单 ID 进行支付确认。
  • 尾额确认:在订单金额后添加一个尾额(tail),当用户发起区块链转账时,将订单金额+尾额作为定位订单的方式来进行支付确认。

订单状态

订单状态是订单信息中唯一在创建后可变的参数,该状态表示了订单在其生命周期中所处的阶段:

  1. 待支付(状态码0):订单创建成功,等待用户完成区块链转账操作。
  2. 支付成功(状态码1):区块链中监听到符合订单信息的转账,订单状态转为支付成功。
  3. 已超时(状态码2):订单创建后,用户在指定时间内未完成区块链转账操作,订单自动变更为超时。
  4. 已取消(状态码3):订单创建后,且未超时,商户/个人取消订单,订单状态转为取消。

    注意:已取消、已超时的订单将不能被支付。取消或超时后即使用户手动完成满足要求的区块链转账,订单状态也不再会被改变。