Skip to main content

适用范围

该通道仅适用于 country=EC、currency=USD 和 method=bank_transfer。它使用人工调度模式:payout 保持 processing,并带有 status_code=manual_dispatch,直到授权运营人员在 银行门户完成付款并确认结果。该路由不会自动调用或对账银行。 供应商选择和凭据属于部署配置,不属于 CBPay 的公开合同。

环境顺序

先在 staging 中使用模拟通道和合成收款人测试此通道。只有 staging 通过后,才能在生产环境验证相同的集成。生产环境验证需要运营数据,以及 对环境和测试范围的明确授权。

流程

创建并读取 payout

使用标准 payout 接口和合成收款人:
金额必须为 USD 1.00 至 10000.00(含边界),并且按数值最多两位 小数。使用十进制字符串,不使用浮点数。
厄瓜多尔手动通道生成的银行参考号格式为 ECM 加 13 位连续数字。这是该通道 的参考号格式,并非所有银行参考号的通用限制。创建响应通常包含:

确认银行付款

核心运营人员确认已人工支付的 payout:
平台管理员使用核心代理路由:
组织管理员使用组织代理路由:
请求体包含 bank_reference、paid_amount 和 reason。通过 POST /v1/ops/payouts/{payoutID}/confirm-manual-paid 确认时必须提供 Idempotency-Key(推荐使用 header,也可以在 JSON body 中发送 idempotency_key)。缺少 key 时,接口返回 400 idempotency_key_required。如果请求超时,先重新读取 payout;如果状态仍不 确定,必须使用同一个 key 和完全相同的证据重试,绝不能盲目发送或生成新 key。使用相同证据 replay 会返回原始结果并带有 idempotency_hit: true; 证据不同则返回 409 idempotency_conflict。成功响应返回带有人工确认终态 的 payout 资源。

人工 payin

确认已公告的 EC/USD/push/bank_transfer payin 收款是双人操作 (maker-checker)。在第二个审批完成之前不划账。所有步骤都不使用客户端幂 等键:调用通过 payin ID 和银行证据来识别操作,诚实重放会返回原始结果并 带 idempotency_hit: true。 **第 1 步 — 请求(maker)。**拥有 org_operations/ops:write 权限且使用 人工会话的组织管理员登记银行证据。payin 保持 pending;此时不入账:
响应是确认请求(id、status、bank_reference、received_amount、 account_id、maker、created_at)。用相同证据重发该 maker 请求会重放 原始请求并命中;证据不同则返回 409 invalid_state。请求不会过期:一直处 于打开状态,直到 checker 批准或 maker(或任意 god 管理员)取消。 **第 2 步 — 批准(checker)。**与 maker 不同的一名具名 god 管理员批准已打 开的请求。批准接口无请求体:
批准后立即通过标准定价、防火墙与入账链路记账。同一管理员不能批准自己的请 求(409 second_approver_required)。如果 payin 自请求以来发生变化 (confirm_account_mismatch、bank_ref_conflict),或该参考号属于资金库 结算(deposit_settled_treasury_trade),批准会诚实失败,payin 保持 pending;请重读两个资源后再重试。 **取消。**Maker 或任意 god 管理员可以用 POST /v1/payins/{payinID}/confirm-cancel(同样无请求体)取消已打开的请 求。已取消的请求永远不再记账;如需确认,只能发起新请求。 任何超时之后先读取 payin。如果已用相同证据入账,重放会返回原始结果;如果 仍为 pending,则重新读取确认请求并重试同一操作。不要尝试用不同证据去”推 动”确认。

入金指令

读取已有 payin instrument 的入金指令:
响应保持 provider-clean,只返回该账户和通道适用的指令。不要从 payout 推断银行信息。 对于厄瓜多尔银行代码,使用实时目录:
响应格式为 { "items": [{ "code": "...", "name": "..." }], "meta": { "retrieved": 1 } },其中 retrieved 是返回的条目数量。将返回的 code 用作 beneficiary.bank_code。

运营规则

  • 运营人员在银行门户付款,并记录银行参考号。
  • 银行操作出现不确定结果时,不要使用新 key 重新发送。
  • 对于 confirm-received,请求与批准是两名管理员的两个独立步骤;timeout 后先读取 payin 与确认请求,再重试同一操作。
  • 以上示例均为合成数据;只能替换为经过授权的运营数据。

状态与错误

请参阅完整错误目录,了解通用响应格式和错误处理规则。

常见问题

不会。运营人员完成银行操作,然后在 CBPay 中确认已有 payout。
这表示 payout 仍在处理中,等待授权运营人员完成并确认银行操作。
先读取 payout。如果结果仍不确定,只能使用相同的幂等 key 重试原请求。 在确认银行结果前,不能使用新 key 再次提交银行转账。
最后修改于 2026年10月10日