この記事では、前回のローカル検証の構成をそのままCloudflare Workersにデプロイする方法をまとめました。
ローカルとCloudflare Workers で変わらないこと
HTTP と x402 の流れはローカルでもデプロイしても同じです。402 と支払い指示 → X-PAYMENT ヘッダーで再試行 → ファシリテータ経由の検証・決済 → コンテンツ返却、という順序は変わりません。
wrangler.jsonc で Workers Static Assets(public/)を ASSETS バインディングし run_worker_first にしている構成であれば、決済後に /premium/1 が HTML で返る挙動もローカルと同じです。
purl 側の前提も変わりません。--network base-sepolia とキーストアのパスワードはそのまま使えます。
デプロイ手順
前回の記事どおりローカルでのフローが確認済みであることを前提にしています。
1. Cloudflare アカウントにログインする
npx wrangler login
npx wrangler whoami
whoami でアカウント名が表示されれば認証完了です。
2. JWT_SECRET を登録する
ローカルでは .dev.vars に書いていた JWT_SECRET を、Workers.dev 環境では wrangler secret put で登録します。Worker のランタイムに直接紐づき、デプロイをまたいで保持されます。
まずランダムな 32 バイトの hex 文字列を生成します。
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
生成した文字列を登録します。
npx wrangler secret put JWT_SECRET
プロンプトが表示されたら、生成した値を貼り付けてエンターを押します。
3. デプロイする
npm run deploy
package.json では wrangler deploy --minify が実行されます。成功するとデプロイ先の workers.dev URL が表示されます。
4. ヘルスチェックと 402 を確認する
curl -sS "https://<your-workers-dev-url>/__x402/health"
curl -sS -o /dev/null -w "%{http_code}\n" "https://<your-workers-dev-url>/premium/1"
/__x402/health は JSON で status: ok が返ります。/premium/1 は未払いなら 402 が返ります。
5. purl で決済フローを通す
purl "https://<your-workers-dev-url>/premium/1" --network base-sepolia
標準出力に Premium content が含まれれば成功です。パスワードプロンプトが表示された場合は、purl wallet add 時に設定したキーストアのパスワードを入力してください。JWT_SECRET とは別のものです。
# ヘルスチェック
curl -sS https://x402-proxy-template.wp-kyoto.workers.dev/__x402/health
# 未払いなら 402
curl -sS -o /dev/null -w "%{http_code}\n" \
https://x402-proxy-template.wp-kyoto.workers.dev/premium/1
# purl(残高とネットワークを事前確認してください)
purl https://x402-proxy-template.wp-kyoto.workers.dev/premium/1 --network base-sepolia