X402 支付执行顺序与逻辑
整体流程
- 用户访问页面(e.g., /posts/1):
- JS (Stimulus connect/load):触发 fetch(url) 发送 GET 请求。
 
 - 服务器处理 (外到内):
- Middleware.call(env):检查头,若无 X402-Payment + 条件满足 → 返回 402 + WWW-Authenticate 头(支付细节)。
 - Controller.show:若无中间件拦截,执行业务逻辑;但在 402 场景下,中间件先拦截,返回 402(不进入 Controller)。
 
 - 402 触发:
- JS handlePayment:解析头 → 钱包签名 (EIP-712) → 构建 payment → fetch(url, { method: 'POST', headers: { 'X402-Payment': JSON.stringify(payment) } })。
 
 - 支付处理:
- Middleware.call(env):检测 HTTP_X402_PAYMENT 头 → 验证签名 + 结算 API → 返回 200 + 内容。
 - JS load:收到 200 → 渲染 HTML。
 
 
关键逻辑
- Middleware:优先拦截所有请求(外层),处理 402/支付验证;Controller 只在 200 时执行。
 - JS:异步 fetch + 递归 load(防循环用 status 检查)。
 - 循环避免:支付成功后返回 200,JS 渲染结束。
 
总结:JS → Middleware → (402) JS 签名 → Middleware 验证 → Controller/内容 → JS 渲染。
 
        
    
Reply