本页内容
付款流程
跟随一张账单从创建、选币、付款检测、确认、过期,到你的系统消费的最终 webhook。
两种收款方式
Paymos 有两个收款产品,选哪一个决定了集成的形态:
| 账单 | 收款通道 | |
|---|---|---|
| 是什么 | 一次性的收款请求 | 某一个付款人的永久收款身份 |
| 金额 | 创建时固定 | 没有——达到该代币最低额的每笔充值都入账 |
| 有效期 | 有 | 没有 |
| 地址 | 每张账单一个专属地址 | 每条网络一个永久地址,永不重新分配 |
| 终态 | paid、paid_over、underpaid、expired、cancelled |
没有——除非你停用,否则一直收 |
| 适合 | 收银台、订单、一次性收款 | 余额充值、长期持续的收款、在 Paymos 之外另行结算的客户 |
本页其余部分讲账单的生命周期。通道那一支见创建收款通道:通道自己没有生命周期,有生命周期的是到达的每一笔充值,而且短得多——confirming → confirmed,链发生重组时中间还有 reorged。
生命周期
账单终止于一个终态:paid、paid_over、underpaid、expired 或 cancelled。大多数状态流转会触发 webhook 事件——下表逐一列出。从 confirming 起的每一步都会发事件。两个付款前状态不发:在 awaiting_client 开单是安静的,收银台确认代币后进入 awaiting_payment 也是安静的。唯一的例外方向相反——深度重组把已计入的转账全部抹掉时,账单回退到 awaiting_payment,这次回退会发出 invoice.awaiting_payment。
两种创建流程
两种流程的起点相同:账单创建于 awaiting_client 状态,此时背后还没有地址。区别在于你发送什么、留给客户决定多少。地址在收银台确认代币的那一刻分配——账单同时进入 awaiting_payment。
直接加密货币流程——提供 amount + currency + network。amount 是应付的加密货币金额,代币和链在创建时即固定。客户无需再决定什么,收银台直接确认该组合,地址立即分配。
法币流程——提供 amount + currency(不带 network)。amount 是法币金额。客户在托管收银台上选择代币和网络;那一刻 Paymos 锁定汇率、分配地址,账单进入 awaiting_payment。从账单的 payment.exchange_rate 读回锁定汇率,旁边是精确的 payment.expected 代币金额。
完整的法币代码和代币列表见 支持的币种,请求体见 创建账单。
状态
| 状态 | 说明 | Webhook 事件 |
|---|---|---|
awaiting_client |
每个账单的初始状态——收银台确认代币前没有地址 | — |
awaiting_payment |
地址已分配,等待转账 | 正向进入时无事件;仅在重组回退时发 invoice.awaiting_payment |
confirming |
已检测到付款,等待确认数 | invoice.confirming |
underpaid_waiting |
收到部分付款,等待补足 | invoice.underpaid_waiting |
paid |
付款已全额确认 | invoice.paid |
paid_over |
实收超过应付(全额入账) | invoice.paid_over |
underpaid |
以不足额付款关闭 | invoice.underpaid |
expired |
计时耗尽,未收到付款 | invoice.expired |
cancelled |
商户取消(仅可从 awaiting_client) |
invoice.cancelled |
取消
账单只能在 awaiting_client 状态取消——即收银台确认代币之前。之后地址已生效,客户已拿到特定链上的固定报价,取消不再可行。
超时与过期
| 设置 | 默认值 |
|---|---|
| 选币窗口(法币流程) | 可配置 |
| 账单过期(地址分配后) | 可配置 |
| 少付阈值 | 按项目可配置 |
| 多付处理 | 全额入账 |
如果客户在账单过期前支付的金额不足,最终状态取决于 allow_multiple_payments:
- —
allow_multiple_payments: true——状态变为underpaid_waiting,计时耗尽前接受追加付款 - —
allow_multiple_payments: false——单笔不足额付款立即以underpaid关闭账单
如果计时在 underpaid_waiting 期间耗尽,最终状态根据已收总额和少付策略裁定。如果客户支付超过应付金额,全额入账,状态变为 paid_over。