单次支付#
HTTP 卖家 重点看:业务流程 → HTTP 卖家接入(含 exact vs charge 选型、syncSettle 决策)→ 进阶(分账)
Agent 卖家 重点看:业务流程 → Agent 卖家接入(付款链接生成与分发) → 进阶(分账)
定义、底层协议详见 核心概念 · 单次支付。本页聚焦接入。
适用场景#
| 你的业务 | 是否适合 |
|---|---|
| 单笔金额固定明确(一篇报告 / 一次推理 / 一次查询) | ✅ |
| 调用前价格已确定,调用后无后续消费 | ✅ |
| 资源不可撤回(如文件下载、报告生成) | ✅(推荐 syncSettle: true) |
| 单次价格极低 + 调用频率极高 | ⚠️ 改用 批量支付 |
| 单次消费量算不准 | ⚠️ 改用 按量支付 |
业务流程#
下图是抽象层流程——HTTP 卖家是"客户端请求触发",Agent 卖家是"Agent 在对话里主动生成付款链接触发",但Challenge / Credential 消息语义两者一致。具体载体差异见下文卖家接入。
KYT(链上风险审查)是 Broker Verify 阶段内部的合规检查,不是独立服务。
HTTP 卖家接入#
- ✅
exact模式:Node.js / Rust / Go / Java SDK 均已可用 - 💡
charge分账:SDK 与 REST API 均即将推出
每个 Tab 包含完整的安装命令 + 实现代码。架构由 4 个组件组合:Facilitator 客户端(带 OKX API Key)→ Resource Server(注册 scheme)→ Routes 配置(accepts 数组)→ 中间件挂载。
npm install express @okxweb3/x402-express @okxweb3/x402-core @okxweb3/x402-evm
npm install -D typescript tsx @types/express @types/node
import express from "express";
import {
paymentMiddleware,
x402ResourceServer,
} from "@okxweb3/x402-express";
import { ExactEvmScheme } from "@okxweb3/x402-evm/exact/server";
import { OKXFacilitatorClient } from "@okxweb3/x402-core";
const app = express();
const NETWORK = "eip155:196";
const PAY_TO = process.env.PAY_TO_ADDRESS || "0xYourSellerWallet";
const facilitatorClient = new OKXFacilitatorClient({
apiKey: "OKX_API_KEY",
secretKey: "OKX_SECRET_KEY",
passphrase: "OKX_PASSPHRASE",
});
const resourceServer = new x402ResourceServer(facilitatorClient);
resourceServer.register(NETWORK, new ExactEvmScheme());
app.use(
paymentMiddleware(
{
"GET /api/premium": {
accepts: [
{
scheme: "exact",
network: NETWORK,
payTo: PAY_TO,
price: "$0.10",
syncSettle: true, // 同步结算:等链上确认
},
],
description: "Premium API",
mimeType: "application/json",
},
},
resourceServer,
),
);
app.get("/api/premium", (_req, res) => {
res.json({ data: "付费资源内容" });
});
app.listen(4000, () => {
console.log("[Seller] listening at http://localhost:4000");
});
多 scheme 声明都通过
accepts: [...]数组完成;要追加aggr_deferred(批量支付)时,在数组里再加一项即可,详见 批量支付。
同步结算 vs 异步结算#
调用 /settle 后,Facilitator 将交易提交到链上。路由配置中的 syncSettle 字段控制结算行为:
| 模式 | 参数值 | Facilitator 行为 | 适用场景 |
|---|---|---|---|
| 同步 | true | 提交交易并等待链上确认后返回 txHash | 高价值交易,需确认到账后再交付资源 |
| 异步 | false | 提交交易后立即返回 txHash,不等确认 | 中等价值,对响应速度有要求 |
异步结算存在时序风险:资源可能在链上支付最终确认前就已交付。高价值交易建议使用同步结算。
chargescheme 默认且只支持同步。
Agent 卖家接入#
Agent 在对话里主动生成付款链接#
Agent 卖家不是"被动挂中间件等买家请求",而是Agent 在对话里需要收费时主动生成付款链接,发到消息通道(XMTP / Telegram 等)。
Agent 卖家不支持 x402 exact。Agent 单次支付走 charge。
本节聚焦付款链接的生成与分发;关于两个 Agent 如何通过 Telegram / XMTP 等消息通道建立会话,详见 快速开始 · 我是 Agent 卖家 — 配置消息通道网关。
- 1安装 OnchainOS Skill
把以下提示词发给你的 AI Agent,跟随引导完成安装:
text请帮我安装 Onchain OS Payment Skill,让我的 Agent 能生成付款链接并对外收费。 我的收款钱包地址:0xYourSellerWallet详见 Agent 卖家快速开始。
- 2生成付款链接
Agent 在需要收费时调用 Skill 生成一次性付款链接:
text用户:帮我翻译这份 3000 字文档 Agent:好的,翻译服务 50 USD₮0。 [Skill 调用:createPayment({type:'charge', amount:'50000000', recipient:'0x...'})] 请点击付款:https://pay.okx.com/p/a2a_01HZX8Q9RK3JWYV7M2N5T8P4AB每条链接是一次性的,默认 30 分钟到期自动失效。
- 3发送付款链接
Skill 返回的付款 URL(形如
https://pay.okx.com/p/a2a_xxx)作为文本消息发送给买家 Agent,对端解析 URL 后通过 Agentic Wallet 完成签名。 - 4轮询支付状态
Skill 自动轮询
GET /payment/{paymentId}/status,状态变completed后通知 Agent 交付服务。textSkill: 支付已完成(tx: 0xabc...) Agent: 收到付款,开始翻译...
买家接入#
买家通过给 Agent 安装 Onchain OS Skill 完成接入——安装 Skill 时会自动配置 Agentic Wallet 作为底层签名钱包,无需单独安装。Skill 自动识别 HTTP 402 响应或消息通道里的付款 URL,调用钱包完成签名后重放请求,全程无需买家手动介入。完整接入步骤见 Agent 买家。
边界与权衡#
进阶#
分账(仅 charge)#
💡 SDK 与 REST API 均即将推出,分账暂未上线。
一笔支付自动拆给最多 10 个收款方,分账总额必须 小于主金额。常见场景:平台抽成、多方分润、推广分佣。
分账以 bps(万分比,1 bps = 0.01%)配置——例如平台抽成 5% 即 bps: 500、推广分佣 2% 即 bps: 200。Broker 在结算时按比例自动拆分。