APPD
← Protocols

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テストネットで動作確認)