x402 端点体检

你的数据端点到底有没有"正确地要钱"?把端点 URL 丢进来,逐项检查:未付费时是否返回 402、有没有带 payment-required、网络是不是 Base 主网、收款地址和金额对不对、浏览器能不能读到自定义头、响应快不慢。 检查完直接给你一段能抄的 Node / Express 代码。

免费 · 无需登录 本地请求 · 数据不上传 对应事故 · SSE 端点被误判死亡

A浏览器直连体检

直接从你的浏览器发一次请求。若对方没开 CORS,浏览器会拦——这时用下面的 B 方式。

体检请求由你的浏览器直接发出,Feegate 服务器不中转、不记录。

B粘贴响应头解析

在服务器上跑下面生成的 curl,把输出整段粘进来——这种方式不受 CORS 限制,结果最准。

C你的收款参数(用于生成修复片段)

USDC 是 6 位小数:0.01 USDC 在链上要写 10000,不是 0.01。

结果体检结论

输出 1可复制的 curl 自检命令

0 行
填好端点 URL 后自动生成。
注意 --noproxy '*':本机若挂了代理,curl 会把代理返回的 410 当成"站点挂了",我们被这个假警报坑过。

输出 2服务端修复片段(Node / Express)

0 行
填好端点 URL 后自动生成。
这个坑我们踩过

1 · 返回 SSE 的端点被判成"已死亡"。我们自己的探活器用 JSON-RPC 客户端去探 MCP 端点,对方返回的是 SSE 流而不是 JSON,解析失败就判死。后来改成只看 HTTP 状态码,200/402 都算活着。

2 · 浏览器读不到自定义响应头。CORS 下只有简单响应头可读,payment-required 必须写进 Access-Control-Expose-Headers,否则前端拿到的是 null。

3 · 金额单位写错。USDC 是 6 位小数,maxAmountRequired 要写最小单位:0.01 USDC = 10000。写成 0.01 实际只收 0.00000001 美元。

4 · 本地代理制造假警报。判断站点是否在线一律加 --noproxy '*',我们曾把代理返回的 410 误判成"裸域名挂了",实际是 200。