Skip to main content
本页的事件跟踪单笔资金转出或转账请求,包括:
  • 加密货币转账
  • Off-Ramp 对接
  • 从您的某个虚拟账户提现法币到银行账户
请先阅读事件概述了解外层结构、去重方式以及所有事件通用的规则。

本页的事件

payment.payout.updated

资金转出的主事件。

事件触发条件

该笔资金转出的 status 每变化一次发一条事件。 资金转出状态变化 上图为主要的状态变化路径,绿色框为终态。Pending 和 Preparing 也可能直接变为 Failed。事件可能不按顺序送达,参见事件顺序。

事件内容

失败原因

请根据 failed_reason.code 决定如何处理。

示例事件

以下示例只展示 data 对象。外层结构所有事件都一样,参见事件结构。

转出请求已受理

记录本次转出,不要重复提交。requested_target 与您创建转出时提交的内容一致,请核对。

转出完成

在您的系统中将该笔转出标记为已完成。这表示 Cobo 已完成转账,不表示收款方平台已经入账。

转出部分完成

按 failed_amounts 的金额另建一笔新的转出,不要重发已成功的部分。 本例请求转出两种币种,其中一种在转出交易上失败,因此对象级和条目级的原因都有。

转出失败

⚠️ 转出项也可能在任何转出交易产生之前就失败。本例在资金归集过程中失败,因此 failed_amounts 有金额,但 transactions 为空。

Off-Ramp 转出被银行拒绝

这不是终态。 链上那一段已经完成(transactions 里的条目是 Completed),是收款银行退回了法币入账,所以 failed_amounts 为空。联系 Cobo 处理,并等待该笔转出的后续事件:重试成功时,您会先收到一条 Transferring,再收到 Completed。

payment.bank_withdrawal.status.updated

银行提现到达 Completed 或 Failed 时触发;Pending 和 Processing 不发事件。银行提现把法币从您的某个虚拟账户转出到目标银行账户,通过 Create bank withdrawal 创建。 事件内容: data 对象的 data_type 为 PaymentBankWithdrawal,并包含:
  • bank_withdrawal_id(必填)—— Cobo 生成的银行提现 ID。
  • request_id(必填)—— 您创建银行提现时提供的请求 ID。
  • source_bank_account_id(必填)—— 来源银行账户 ID,必须是虚拟账户(标记为 VA)。
  • target_bank_account_id(必填)—— 接收本次提现的目标银行账户 ID。
  • source_bank_account(必填)—— 来源银行账户的完整信息。
  • target_bank_account(必填)—— 目标银行账户的完整信息。
  • currency(必填)—— 银行提现的法币币种,例如 USD。
  • amount(必填)—— 银行提现金额,以该币种展示单位的十进制字符串表示,例如 100.00。
  • bank_tx_fee(选填)—— 本次银行提现收取的银行交易手续费。
  • status(必填)—— 当前状态,取值为 Pending、Processing、Completed、Failed 之一。
  • remark(选填)—— 银行提现备注。
  • failed_reason(选填,字符串)—— 银行提现失败的原因文本,没有 code,仅当 status 为 Failed 时有值。
  • timeline(必填)—— 银行提现的状态时间线。每一项包含一个 status 和进入该状态的 timestamp,Unix 时间戳(秒)。
  • created_timestamp(必填)—— 创建时间,Unix 时间戳(秒)。
银行提现的 payload 不携带 updated_timestamp。要确定它何时进入当前状态,请读取 timeline 的最后一项。
完整说明请参见 Get bank withdrawal information。

高级事件

需要资金转出的链上交易细节时,可订阅高级事件 payment.payout.status.updated,参见高级事件。