読み込み中...
読み込み中...
HTTP 402 Payment Requiredステータスコードを活用した、ブロックチェーンベースのオープン決済プロトコルを学ぶ
x402プロトコルをアプリケーションに統合する方法を、サーバー側(セラー)とクライアント側(バイヤー)の両面から解説します。
TypeScript
Other Languages
APIエンドポイントにx402ミドルウェアを追加して、リクエスト単位の課金を実現します。
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);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 });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クライアントを使用して、自動的に決済フローを処理します。
import { wrapFetch } from "@x402/fetch";
import { createWalletClient } from "viem";
const walletClient = createWalletClient({ /* config */ });
const fetchWithPayment = wrapFetch(walletClient);
// 通常のfetchと同じインターフェース
// 402レスポンスを受け取ると自動で決済処理
const response = await fetchWithPayment(
"https://api.example.com/data"
);
const data = await response.json();import { wrapAxios } from "@x402/axios";
import axios from "axios";
import { createWalletClient } from "viem";
const walletClient = createWalletClient({ /* config */ });
const client = wrapAxios(axios, walletClient);
// 通常のaxiosと同じインターフェース
const { data } = await client.get(
"https://api.example.com/data"
);ファシリテーターを選択(Coinbase CDP / PayAI Network等)
x402 SDKをインストール(npm install @x402/express @x402/fetch)
ウォレットアドレスを設定(受取用)
APIエンドポイントにx402ミドルウェアを追加
テスト(Base Sepoliaテストネットで動作確認)