适用范围
该通道仅适用于country=EC、currency=USD 和
method=bank_transfer。它使用人工调度模式:payout 保持
processing,并带有 status_code=manual_dispatch,直到授权运营人员在
银行门户完成付款并确认结果。该路由不会自动调用或对账银行。
供应商选择和凭据属于部署配置,不属于 CBPay 的公开合同。
环境顺序
先在 staging 中使用模拟通道和合成收款人测试此通道。只有 staging 通过后,才能在生产环境验证相同的集成。生产环境验证需要运营数据,以及 对环境和测试范围的明确授权。流程
创建并读取 payout
使用标准 payout 接口和合成收款人: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 的入金指令:{ "items": [{ "code": "...", "name": "..." }], "meta": { "retrieved": 1 } },其中 retrieved 是返回的条目数量。将返回的 code
用作 beneficiary.bank_code。
运营规则
- 运营人员在银行门户付款,并记录银行参考号。
- 银行操作出现不确定结果时,不要使用新 key 重新发送。
- 对于
confirm-received,请求与批准是两名管理员的两个独立步骤;timeout 后先读取 payin 与确认请求,再重试同一操作。 - 以上示例均为合成数据;只能替换为经过授权的运营数据。
状态与错误
请参阅完整错误目录,了解通用响应格式和错误处理规则。
常见问题
CBPay 会自动发送厄瓜多尔银行转账吗?
CBPay 会自动发送厄瓜多尔银行转账吗?
不会。运营人员完成银行操作,然后在 CBPay 中确认已有 payout。
manual_dispatch 是什么意思?
manual_dispatch 是什么意思?
这表示 payout 仍在处理中,等待授权运营人员完成并确认银行操作。
timeout 后应该怎么做?
timeout 后应该怎么做?
先读取 payout。如果结果仍不确定,只能使用相同的幂等 key 重试原请求。
在确认银行结果前,不能使用新 key 再次提交银行转账。