Skip to main content
简而言之
一笔支付订单代表一次预期的法币收款。当您使用一次性虚拟账户通道时,每笔订单都由一个专用银行账户支持,该账户仅对一次付款有效。支付订单端点让您能够在主钱包层级列出并跟踪每一笔订单,或将范围限定到特定的子地址。

前提条件

在使用支付订单 API 之前,请确保您已具备:
1

API 密钥

从 Blockradar 控制台 获取您的 API 密钥。前往 Developers 生成密钥。
2

已创建钱包

在控制台中(参见创建主钱包)创建钱包。支付订单操作需要 walletId。
3

合规已批准

在控制台完成尽职调查流程:My wallets > Settings > Compliance
4

功能已启用

合规批准后,申请开通虚拟账户功能。请联系 [email protected] 或使用控制台的在线聊天。
5

主网环境

虚拟账户仅在 MAINNET(主网)上可用。测试网环境不支持虚拟账户操作。
6

稳定币支持

充值法币并将其转换为稳定币是一项付费功能。请确保您的账户套餐包含稳定币访问权限。通过 控制台 → Settings → Subscription 升级。

工作原理

每当客户发起一笔法币充值时,就会创建一笔支付订单。对于 one_time_virtual_account 通道,Blockradar 会签发一个与该订单及其金额集合绑定的全新虚拟银行账户。客户付款后,订单会按其生命周期推进,对应的稳定币会被铸造并结算至关联的钱包或地址。

订单已创建

生成一笔订单,包含参考编号、预期金额及其收款通道。

账户已签发

对于一次性虚拟账户通道,会在 paymentInstructions 中附上一个一次性银行账户。

已收到付款

客户在 expiresAt 之前向该账户付款;订单会转为 processing,然后转为 paid。

结算

等额的稳定币会被铸造并结算至关联的钱包或子地址。

订单状态

每笔订单都会报告其当前的生命周期状态。使用 status 查询参数来筛选结果。

收款通道

rail 字段标识订单的收款方式。一次性虚拟账户使用 one_time_virtual_account 通道。

绑定会话的创建流程

要创建支付订单,请先使用 assetId、currency、amount 和 rail 请求报价。当存款属于现有客户时,还请包含 customerId,以便复用已保存的提供方 KYC。提供方适配器会根据所选法币货币推断 KYC 走廊。报价会返回 sessionId 和 sessionExpiresAt。该会话会在 20 分钟内绑定钱包、钱包资产、法币货币、金额、通道、提供方、转换路径、客户和 KYC 走廊。 我们建议在后续每个请求中都使用返回的 sessionId:
  1. 当 additionalDataRequirements.data 不为 null 时,使用它初始化表单。其中包含已为该客户、提供方和走廊保存的可复用值。
  2. 收集 additionalDataRequirements.schema 要求的所有缺失值。
  3. 如果 schema 包含 x-resolution,请使用 sessionId 和当前的 additionalData 调用 POST /v1/wallets/{id}/deposit/fiat/payment-order-requirements/resolve。
  4. 将解析得到的值合并到 additionalData 中。
  5. 使用 sessionId、additionalData 以及任何可选订单字段(例如 reference 或 metadata)创建订单。
Quote request
Quote session
为简洁起见,上例仅展示了 schema 的顶层字段;请渲染 API 返回的完整的提供方专属 JSON Schema。
Resolve requirements
Create payment order
上例为 Paycrest NGN 个人资料:idDocument.number 是客户的 11 位 NIN,taxId.value 是客户的 11 位 BVN。要求因提供方、走廊和实体类型而异,因此请始终渲染报价返回的 schema,而不要硬编码这些字段。 当使用内联 KYC 创建订单时,Blockradar 会将其与业务客户、所选提供方和走廊关联保存。之后使用相同 customerId 和走廊发起的报价会在 additionalDataRequirements.data 中返回已保存的 KYC。在之后的订单中提交更改后的 KYC 会更新已保存的走廊资料;无需单独的 KYC 端点。
请勿将会话与来自其他报价的资产、货币、金额、通道或提供方值混用。如果 API 返回 FIAT_DEPOSIT_SESSION_EXPIRED、FIAT_DEPOSIT_SESSION_MISMATCH 或 FIAT_DEPOSIT_SESSION_UNAVAILABLE,请重新请求报价并重新开始要求解析。
为保持向后兼容,sessionId 为可选项。如果省略它,请在要求解析和订单创建请求中发送原始的 assetId、currency、amount 和 rail。当提供 sessionId 时,以会话中存储的值为准。

列出主钱包支付订单

返回某个主钱包下创建的所有支付订单的分页列表。使用查询参数按状态、通道、货币、资产、日期范围或自由文本搜索进行筛选。 GET /v1/wallets/{id}/deposit/fiat/orders

查询参数

响应示例

列出子地址支付订单

返回范围限定于单个子地址的支付订单。响应包含相同的订单字段,以及额外的结算、提供方和客户详情。 GET /v1/wallets/{walletId}/addresses/{addressId}/deposit/fiat/orders

路径参数

查询参数

响应示例

响应字段

amountFiatReceived、amountSettled、providerReference、provider 和 customer 字段会在子地址端点返回,并随着订单在结算过程中的推进而填充。

API 参考

发现与配置

主钱包

子地址

检索、刷新和取消订单只需订单 ID,因此子地址没有对应的端点。任何订单(包括针对子地址创建的订单)都应使用上方的主钱包端点处理。此 API 还提供 Find Fiat Deposit 操作 (POST /v1/wallets/{id}/deposit/fiat/finder),可根据支付参考编号定位法币充值及其处理详情。当客户声称已付款时,可用它将该笔付款与其所属订单进行对账。