メインコンテンツへスキップ
← 記事一覧に戻る

Next.js + Supabase + Stripe で有料コンテンツ販売を実装する完全ガイド

有料記事
¥500
12 min read有料記事
#Next.js#Supabase#Stripe#個人開発

なぜ「自分のサイトで」有料コンテンツを売るのか

note、Zenn、Brain——有料記事を売れるプラットフォームはいくらでもある。

なのに、わざわざ自分のサイトに決済機能を組み込む理由は3つ。

  1. 手数料が安い — Stripe は 3.6%。noteは 10〜20%
  2. 顧客データが自分のもの — メールアドレス、購入履歴、全て自分のDBに残る
  3. 自由度が高い — プレビュー範囲、価格、UIを完全にコントロールできる

この記事では、このブログ(masatoman.net)に実際に実装した有料記事機能の技術的な全容を解説する。

💡

の体験談

この記事自体が有料記事機能で配信されています。つまり、あなたが今読んでいるこの仕組みそのものが、この記事の内容です。

この記事でわかること:

  • アーキテクチャ全体像(認証・決済・コンテンツ分割の設計)
  • Supabase Magic Link 認証の実装
  • Stripe Checkout 一回払いの組み込み方
  • MDXペイウォールのサーバーサイド実装
  • Webhook による購入記録の自動保存
  • 本番運用に必要な設定チェックリスト

前提スタック:

  • Next.js 16(App Router)
  • Supabase(認証 + DB)
  • Stripe(決済)
  • Vercel(ホスティング)
  • MDX(記事コンテンツ)

アーキテクチャ全体像

有料記事機能は、大きく4つのレイヤーで構成される。

レイヤー担当技術
認証ユーザーの特定Supabase Auth(Magic Link)
決済お金の受け取りStripe Checkout
記録購入履歴の保存Supabase DB + Webhook
表示コンテンツの出し分けMDX + サーバーコンポーネント

購入フロー:

読者が購入ボタンをクリック
  → 未ログイン → Magic Linkでログイン → 記事に戻る
  → ログイン済み → Stripe Checkout画面へ
  → 決済完了 → Webhook → DBに購入記録保存
  → 記事ページリロード → 全文表示
この先は有料コンテンツです

記事の続きを読むには購入が必要です

¥500
← 記事一覧に戻る