Skip to main content
订单模式适用于需要指定具体支付金额和时限的场景。在该模式下,Cobo 会创建带有以下特点的支付订单:
  • 固定金额:订单创建时即指定具体的应付金额
  • 有效期限:付款方需要在指定时间内完成支付
  • 异常处理:支持多种异常情况的处理,包括:
    • 取消尚未支付的订单
    • 对已支付订单发起退款
    • 处理多付、少付、晚付等支付异常

创建订单

您可以通过两种方式创建订单:
  • 调用 Create pay-in order 直接创建一个支付订单。调用成功后,您将得到应付金额、付款地址等信息;
  • 调用 Create order link 创建一个订单支付链接。该链接会跳转到由 Cobo 提供的支付页面,付款方可在该页面创建订单并完成支付,无需您自行开发前端交互流程。您还可以通过 iFrame 方式将该支付页面嵌入到您的网站或应用中。

前提条件

您已完成前置准备中提到的所有步骤。

操作步骤

您可以调用 Create pay-in order 来创建一个支付订单。下图展示了付款方、商户与 Cobo 之间的完整交互流程:
创建订单时,您需要在以下两种方式中选择一种适合业务的金额参数组合
  • **方式一:**原订单商品以法币定价,您需要收取数字货币金额
    • 填写:pricing_currencypricing_amountpayable_currency
    • 不填:payable_amount
  • **方式二:**原订单商品以数币定价,您直接按原币种收取数字货币金额
    • 填写:payable_currencypayable_amount
    • 不填:pricing_currencypricing_amount
同时填写两种方式的参数,或不符合以上任一组合的请求,将被拒绝。您可以先了解以下订单金额相关的字段定义:
  • 定价币种pricing_currency):商品法币计价单位,目前支持设置法币币种请参考 支持的币种与公链。该字段为可选字段,如果您商品定价为数字货币则无需填写。
  • 定价金额pricing_amount):商品法币计价金额,以 pricing_currency 指定的法币为单位。该字段为可选字段,如果您商品定价为数字货币则无需填写。
  • 应付币种payable_currency): 付款方需要支付的数字货币币种,目前支持数字货币币种请参考 支持的币种与公链
  • 应付金额payable_amount):付款方需要支付的数字货币金额,以payable_currency 指定的加密货币为单位。该字段为可选字段:
    • 如果您指定了 payable_amount,则系统直接使用该值作为付款方需支付的金额。
    • 如果您未指定 payable_amount,系统将使用实时汇率计算:应付金额 =(订单金额 + 开发者费用)/ 汇率。汇率以创建订单时调用 Get exchange rate 操作返回的汇率为准。
  • 开发者费用fee_amount):如果您是服务多个下游商户的平台机构,需要在您和下游商户之间分配收入,可以通过设置该费用来实现。此费用以payable_currency 指定的加密货币为单位。实际分成的开发者费用=开发者费用/应付金额*实际收款金额,更多信息请参考账户与资金分配
如果您是商户(直接服务于付款方),通常无需设置开发者费用。
下表展示了在不同设置下,系统如何计算应付金额:
场景 1场景 2
场景描述- 订单金额以法币计价
- 无需设置开发者费用
- 系统计算应付金额
- 订单金额以加密货币计价
- 设置开发者费用
- 自定义应付金额
pricing_currency"USD"不设置
pricing_amount"100"不设置
payable_currency"ETH_USDT""ETH_USDT"
payable_amount不设置"104.08"
fee_amount"0" 或不设置"2"
实时汇率0.99不适用(使用自定义应付金额)
应付计算过程(100 + 0) / 0.99直接使用指定的 payable_amount
最终应付金额"101.01""104.08"
开发者费用计算过程02/104.08*104.08
最终开发者费用"0""2"

查询订单状态

您可以订阅以下 Webhook 事件,以获取订单状态的实时更新通知。请参考 Webhook reference 了解每个事件的触发时间和返回的数据结构。
  • payment.status.updated
  • payment.transaction.late
  • payment.transaction.completed
您也可以通过 Payments App 或 Payments API 主动查询订单状态。
  1. 登录 Cobo Portal 开发环境生产环境
  2. 在左侧导航栏中点击 Apps,然后点击 Payments 卡片,启动 App。
  3. 在 App 的左侧导航栏中点击收款 > 订单。您可以在此页面查看所有订单的详细信息,如订单 ID、商户信息、支付金额、订单状态等。
  4. 当付款方完成支付、且交易通过合规筛查后,订单状态会流转为已完成
查看订单列表

异常情况

在订单模式下,您可能要处理以下几种异常情况。

撤销支付订单

当一笔支付订单在 Pending 状态下,即尚未检测到入账交易时,您可以调用 Update pay-in order 撤销该订单。撤销后,订单状态将变更为 Expired

多付、少付和晚付

在支付过程中可能出现以下三种异常情况:
异常情况描述影响
多付在订单有效期内,付款方实付金额超过应付金额订单最终状态为 Completed
少付在订单有效期内,付款方实付金额少于应付金额订单状态为 Underpaid(终态)。
晚付付款方在订单过期后进行首次或再次付款不会改变订单状态。每次晚付都会触发一次 payment.transaction.late Webhook 事件。
账户与资金分配中详细介绍了多付、少付和晚付情况下,Cobo 对资金的处理规则。

处理退款申请

您可以通过 Payments App 或 Payments API 发起一笔退款订单,将资金退还给付款方。下图展示了退款环节中,付款方、商户以及 Cobo 之间的交互流程。

创建退款订单

  1. 登录 Cobo Portal 开发环境生产环境
  2. 在左侧导航栏中点击 Apps,然后点击 Payments 卡片,启动 App。
  3. 在 App 的左侧导航栏中点击收款 > 订单
  4. 选择目标订单,然后点击右侧的查看详情按钮。
订单列表
  1. 在订单详情页面,点击退款按钮。
退款按钮
  1. 在弹出的表单中:
    • 选择退款金额的来源,可以选择商户余额开发者余额
    • 填入退款金额。该金额不得高于对应的商户余额或开发者余额。
    • (可选)填入开发者费用金额。该手续费会从退款金额中扣除,归入开发者余额。有关开发者费用的详细说明,请参考账户与资金分配
    • 输入收款地址。您可以点击使用原始支付地址,系统将自动填入该笔订单的原始支付地址。如果您想退款到其他地址,也可以手动输入目标地址。
  2. 点击预览确认所有信息无误后,点击提交创建退款订单。

查询退款订单状态

您可以订阅 payment.refund.status.updated 事件,获取退款订单状态的实时更新。请参考 Webhook reference 了解每个事件的详细触发条件和返回的数据结构。 您也可以通过 Payments App 或 Payments API 主动查询退款订单状态。
  1. 登录 Cobo Portal 开发环境生产环境
  2. 在左侧导航栏中点击 Apps,然后点击 Payments 卡片,启动 App。
  3. 在 App 的左侧导航栏中点击收款 > 订单
  4. 点击退款标签页。在退款订单列表中,找到目标订单,然后点击右侧的查看详情按钮。
退款订单列表
  1. 在退款订单详情页面查看订单状态。

合规筛查不通过

当某笔交易收到 payment.transaction.failed 事件时,这表明该笔交易未能通过 Cobo KYT 或 Screening App 的合规筛查。这种情况下,您需要按照以下步骤进行处理:
  • 若该笔交易后续通过人工审核:
    • 如果订单未过期:该笔资金将计入订单实收金额,订单状态将根据实收金额相应更新
    • 如果订单已过期:系统将触发 payment.transaction.late 事件,该笔资金将全部计入开发者余额
  • 若该笔交易最终未通过人工审核:
    • 资金将被冻结,不会被计入订单实收金额
    • 订单状态将保持不变
    • 付款方需要在订单有效期内重新充入足额资金并通过合规筛查,订单才能转为 Completed 状态
对于被隔离或冻结的资金:
  • Cobo KYT:请通过 [email protected] 联系 Cobo 支持团队处理
  • Screening App:您可以在应用内自行评估和处理

最小入账金额限制

为优化您的账户成本,避免因粉尘金额产生的入账手续费高于交易金额,系统设定了最小入账阈值。当单笔交易金额低于 0.05 USDT(或等值币种)时,系统将不自动进行入账处理。
注:若您需要对此类低于阈值的累积资金进行手动处理,请联系 Cobo 客服或技术支持,我们将协助您从归集地址提取。