x402 超时后是否重付:核对待定结算与支付标识
链小知 · 进阶 · 核验 · 依官方文档整理
先核对广播记录,再检查可选幂等扩展和存储范围。
开始前准备
- 使用已有脱敏记录或官方示例;不保存密钥、签名原文或个人账户资料。
- 只核对材料;不安装SDK、不调用账户或资金API、不创建付款。
1. 识别待定结果
settlement_pending 表示已广播但无法确认,属于非终态;先核对 transaction 和 network。超时或5xx没有哈希也不能直接解释为没有付款。
检查结果:待定、失败和未知分列,保留已有哈希。
2. 检查恢复存储
当前标准 resource server 遇待定结果会重试结算一次,facilitator 用 PendingSettlementStore 核对已有广播交易。默认内存存储只覆盖同一进程,多副本需共享实现;不能推广为所有部署都防重。
检查结果:记录实现、版本、存储范围和原交易身份。
3. 核对幂等扩展
payment-identifier 是可选扩展,服务端声明后客户端才携带。同一业务重试沿用标识,不同业务不得复用;服务端应绑定付款条件、路由和业务身份,条件不同应拒绝。
缓存期限和多副本存储由服务方配置;缓存失败可能继续正常处理,不能承诺重放永远免费。实现信息不足就标未知。
检查结果:标识与业务一致,声明、付款条件和缓存范围有依据。
怎样确认完成
- 记录原请求、条件、标识、广播和待定状态。
- 不依据超时发送新的付款。
常见错误与边界
- 支付标识不能替代交易哈希或跨资源随意复用。
- 协议机制不证明具体商户配置正确。