跳到正文

快速开始

本页内容

付款流程

跟随一张账单从创建、选币、付款检测、确认、过期,到你的系统消费的最终 webhook。

两种收款方式

Paymos 有两个收款产品,选哪一个决定了集成的形态:

账单 收款通道
是什么 一次性的收款请求 某一个付款人的永久收款身份
金额 创建时固定 没有——达到该代币最低额的每笔充值都入账
有效期 没有
地址 每张账单一个专属地址 每条网络一个永久地址,永不重新分配
终态 paidpaid_overunderpaidexpiredcancelled 没有——除非你停用,否则一直收
适合 收银台、订单、一次性收款 余额充值、长期持续的收款、在 Paymos 之外另行结算的客户

本页其余部分讲账单的生命周期。通道那一支见创建收款通道:通道自己没有生命周期,有生命周期的是到达的每一笔充值,而且短得多——confirmingconfirmed,链发生重组时中间还有 reorged

生命周期

Diagram: 付款流程

both flows

token confirmed

cancel

timeout

detected

timeout

insufficient

overpayment

partial

timer expired

awaiting_client

awaiting_payment

cancelled

expired

confirming

underpaid

paid

paid_over

underpaid_waiting

账单终止于一个终态:paidpaid_overunderpaidexpiredcancelled。大多数状态流转会触发 webhook 事件——下表逐一列出。从 confirming 起的每一步都会发事件。两个付款前状态不发:在 awaiting_client 开单是安静的,收银台确认代币后进入 awaiting_payment 也是安静的。唯一的例外方向相反——深度重组把已计入的转账全部抹掉时,账单回退到 awaiting_payment,这次回退会发出 invoice.awaiting_payment

两种创建流程

两种流程的起点相同:账单创建于 awaiting_client 状态,此时背后还没有地址。区别在于你发送什么、留给客户决定多少。地址在收银台确认代币的那一刻分配——账单同时进入 awaiting_payment

直接加密货币流程——提供 amount + currency + networkamount 是应付的加密货币金额,代币和链在创建时即固定。客户无需再决定什么,收银台直接确认该组合,地址立即分配。

法币流程——提供 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
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