x402 Protocol Guide
x402は、長年休眠状態だったHTTP 402「Payment Required」ステータスコードを活用し、ブロックチェーンベースの直接決済をHTTP上で実現するオープンなインターネットネイティブ決済標準です。
統合例
x402プロトコルをアプリケーションに統合する方法を、サーバー側(セラー)とクライアント側(バイヤー)の両面から解説します。
SDK エコシステム
TypeScript
@x402/core@x402/evm@x402/svm@x402/fetch@x402/axios@x402/next@x402/express@x402/hono@x402/paywallその他の言語
Python: x402Rust: x402-rsGo: x402-goサーバーサイド(売り手)
APIエンドポイントにx402ミドルウェアを追加して、リクエスト単位の課金を実現します。
Express.js
import express from "express";
import { paymentMiddleware } from "@x402/express";
const app = express();
const facilitatorUrl = "https://x402.org/facilitator";
const payTo = "0xYourWalletAddress";
app.use(
"/api/data",
paymentMiddleware(payTo, {
scheme: "exact",
network: "base",
maxAmountRequired: 1000,
}, { url: facilitatorUrl })
);
app.get("/api/data", (req, res) => {
res.json({ data: "Premium content" });
});
app.listen(3000);Next.js (App Router)
import { withPayment } from "@x402/next";
import { NextResponse } from "next/server";
const facilitatorUrl = "https://x402.org/facilitator";
const payTo = "0xYourWalletAddress";
async function handler() {
return NextResponse.json({ data: "Premium content" });
}
export const GET = withPayment(handler, payTo, {
scheme: "exact",
network: "base",
maxAmountRequired: 1000,
}, { url: facilitatorUrl });Hono
import { Hono } from "hono";
import { paymentMiddleware } from "@x402/hono";
const app = new Hono();
const facilitatorUrl = "https://x402.org/facilitator";
const payTo = "0xYourWalletAddress";
app.use(
"/api/data",
paymentMiddleware(payTo, {
scheme: "exact",
network: "base",
maxAmountRequired: 1000,
}, { url: facilitatorUrl })
);
app.get("/api/data", (c) => {
return c.json({ data: "Premium content" });
});
export default app;クライアントサイド(買い手)
x402対応のHTTPクライアントを使用して、自動的に決済フローを処理します。
Fetch API
import { wrapFetch } from "@x402/fetch";
import { createWalletClient } from "viem";
const walletClient = createWalletClient({ /* config */ });
const fetchWithPayment = wrapFetch(walletClient);
// 402 responses are automatically handled
const response = await fetchWithPayment(
"https://api.example.com/data"
);
const data = await response.json();Axios
import { wrapAxios } from "@x402/axios";
import axios from "axios";
import { createWalletClient } from "viem";
const walletClient = createWalletClient({ /* config */ });
const client = wrapAxios(axios, walletClient);
const { data } = await client.get(
"https://api.example.com/data"
);セットアップ手順
1
ファシリテーターを選択(Coinbase CDP / PayAI Network 等)
2
x402 SDKをインストール(npm install @x402/express @x402/fetch)
3
ウォレットアドレスを設定(受取用)
4
APIエンドポイントにx402ミドルウェアを追加
5
テスト(Base Sepoliaテストネットで動作確認)