EDUCARE — CONFIDENTIAL / 社外秘

Educare 課金体制 導入計画 v0.1

2026-09-03 / 起草: Claude Fable 5(調査: Sonnet 部下・12 PSP 一次情報)/ 決裁者: 敏
発端: 敏「どのような課金方法が存在するかから幅広く調査して導入計画を組んで」

結論(TLDR)

主決済は Stripe(Checkout+Billing+Customer Portal+Tax)一択。Cloudflare Workers で動く公式 fetch クライアントと非同期 webhook 署名検証を持つ唯一のグローバル決済代行で、自動更新・解約画面・日割・再請求・領収書を自前で作らずに済む。P0 はクレジットカード+Apple/Google Pay の月額サブスク 1 本で開始し、コンビニ決済を P1、PayPay・銀行振込・キャリア決済を P2 で足す。

技術より先に閉じるゲートが 3 つある。①特定商取引法の表記(=運営者非開示方針と衝突・Praxia 株式会社の登記に接続)②7 月の sol 敵対監査の停止条件 5 点 ③規約 v2 の施行と同意証跡。実装量は小さいが、現状の課金フローは完全に未接続(コード実査 fact)で、生年月日も取得していないため 18 歳ゲートの前提から作る。

1. 現状(2026-09-03 コード実査)

観点実測含意
権利判定の器user_plansresolveEntitlements()(free/premium・日次上限 100/300)が本番稼働 fact読み側はある
Stripe 連携既存 webhook は LINE CRM の friend_id 専用。会員 user_id に繋がらず、user_plans への書込経路はコード全域にゼロ fact会員用 webhook は新設
有料付与管理画面からの手動登録のみ fact自己サービスの申込画面が無い
年齢生年月日の入力欄・DB 列が存在しない fact18 歳ゲートの前提が無い
同意ログイン画面の「みなし同意」文言のみ。規約版 ID の記録なし・/terms は 404 factclickwrap+版 ID 記録が要る
Stripe 口座API キーは .env・Keychain のどちらにも無い fact口座は未開設と推定 inference

2. 課金方法の全数調査(要点)

原本: educaredev/docs/research/billing_methods_survey_20260903.md(出典 URL 付き・fact/inference/unknown 峻別・unknown 34 箇所)。金額を伴う契約前には各社の一次資料で再確認する。

決済代行初期/月額カード手数料サブスク機能国内手段Workers 適合評価
Stripe無料/無料(Billing は +0.7%)3.6%◎ Billing・Portal・Smart Retries・Tax・Invoicingコンビニ○・銀行振込は限定的 unknown◎ 公式 fetch クライアント・非同期署名検証主軸
KOMOJU(Degica)unknownunknown明示なし◎ PayPay・au PAY・銀行振込・コンビニ横断REST のため可と推定 inferenceP2 の国内レーン
PAY.JP無料/無料3.0%〜○ 定期課金 APIunknown推定可 inference代替候補
GMO-PG/SB ペイメント/fincode/Univapay要見積(GMO は例 ¥80,000/¥5,000)3.4〜3.5%+件別料◎(40 ブランド級)unknown高額商材・大規模時に再審
Square/PayPal無料/無料3.6%〜3.75%unknown不採用
Paidy(後払い)デジタル 9%× サブスク不可 fact買い切り講座の P2 でのみ再審
Paddle/Lemon Squeezy(MoR 型)手数料込み非公開◎(税務代行)× 国内手段非対応と推定 inferenceunknown不採用
決済手段と会員層

大学生のクレジットカード保有率は約 6 割(日本クレジット協会 令和元年度調査 61.1%・別調査 63.2%)。非保有層はデビット・現金・電子マネーが多い。P0(カードのみ)で始めても致命的ではないが、コンビニ決済(P1)と QR 決済(P2)は「あれば良い」ではなく離脱対策として順位づける。回数券(論文添削チケット)は有効期限を 6 か月以内にすれば資金決済法の前払式支払手段の適用除外になる(超えると基準日残高 ¥10M で供託義務)。アプリ内課金は Web 完結のため不要。

3. ECRS(要件定義の軍律)

E 無くす自前の請求書・解約 UI・再試行ロジックを作らない(Stripe Portal/Smart Retries に委ねる)。回数券・年額・買い切りは P0 で作らない。
C 一緒に特商法の最終確認画面(6 項目)と規約同意(clickwrap・版 ID 記録)を同一画面にする。請求先メールは既存の会員メール(Resend 送信基盤)を流用。
R 並べ替え「価格決定 → 実装」でなく「決済配線 → 法務ゲート → 価格決定 → 公開」。配線は Price ID を差し替えるだけなので先に作れる。
S 単純化プランは free/premium の 2 値。Stripe の Product 1・Price 1(月額)で開始。

4. 機能一覧(ID・必須度・フェーズ)

◎=P0 必須 ○=P1 △=P2。P0 課金開始の最小 P1 離脱対策 P2 商材拡張

ID大項目機能仕様の要点必須Ph
B-01決済Stripe 口座開設・本番審査法人名義(Praxia)で開設。特商法ページ URL が審査で必要P0
B-02決済Checkout Session 発行mode=subscription・user_id を metadata にP0
B-03決済最終確認画面特商法 2022 改正の 6 項目+規約 v2 同意を同一画面。同意ログに版 ID・日時P0
B-04決済会員用 webhook(新設)署名検証は非同期版・冪等記録・順序不定はイベントを信用せず API で最新状態を取り直すP0
B-05権利user_plans 更新valid_until=current_period_end。失効は読み時判定(スケジューラ不要)P0
B-06決済Customer Portal解約・カード変更・請求履歴・領収書を委ねる。解約は期末まで利用可(規約第 7 条と平仄)P0
B-07決済Stripe Tax消費税自動計算・税込総額表示P0
B-08運用返金当社帰責のみ・Stripe ダッシュボードから手動。admin に返金ボタンは作らないP0
B-16法務特商法ページ事業者名・所在地・電話・解約条件。Praxia 登記後の法人名でP0
B-17法務年齢ゲート有料申込は 18 歳以上、または保護者同意の確認。無料 AI 機能は 18 歳未満にも開放(敏裁定 9/3)。ただし Gemini API と Google Cloud 生成 AI の規約が「18 歳未満が使う可能性の高いアプリ」を禁止 fact → 18 歳未満向け AI は OpenAI/Anthropic へベンダ分離が前提P0
B-19法務生年月日取得users 列+UI。既存会員は次回ログイン時に入力P0
B-20法務同意証跡規約版 ID 付き clickwrap(user_consents に版 ID 列)P0
B-09運用admin 表示会員一覧に Stripe customer/subscription の状態P0
B-10決済コンビニ決済初回コンビニ → 継続カードの導線(自動継続には不向き)P1
B-11決済ダンニングSmart Retries(既定 2 週間で最大 8 回)+失敗通知メールP1
B-18法務領収書Stripe Invoicing の領収書 DL。インボイス番号は Praxia の課税事業者判断待ちP1
B-12決済年額プランKnock 型(月換算 20〜25% 割引)。中途解約の精算式を弁護士確認後に解禁P2
B-13決済国内レーンKOMOJU 等で PayPay・銀行振込・キャリア決済。webhook 2 系統化P2
B-14商材回数券有効期限 6 か月以内。未使用残高の試算を先にP2
B-15商材買い切り講座単発決済+分割払い(分割は国内アクワイアラ依存 unknownP2

スコープ外: アプリ内課金(Web 完結)/BNPL(サブスク不可)/法人向け SPI 外販の請求書払い(別ゲート)/自前の請求・解約 UI。

5. 構成図(P0)

① membersプラン選択 → 最終確認画面(特商法 6 項目+規約同意)
② Worker APICheckout Session 発行 → Stripe へ遷移
③ Stripeカード/Apple Pay/Google Pay。カード番号は当社に来ない(非保持)
④ webhook署名検証 → 冪等記録 → 最新状態を API で取得
⑤ D1user_plans を premium/valid_until に更新
⑥ Portal解約・カード変更・領収書は Stripe 側画面

6. 受入条件(検収項目)

  1. テストモードで「申込 → Checkout → webhook → user_plans=premium → 問題集の plan_required が解除」が通る(AI テスター垢を使用・敏の実垢は使わない)。
  2. 同一 webhook を 3 回再送しても更新は 1 回。subscription.deleted を created より先に流しても最終状態が正しい。
  3. Portal から解約 → 期末まで premium・期末後 free。
  4. 最終確認画面に特商法 6 項目が表示され、同意ログに規約版 ID が残る。
  5. 18 歳未満(生年月日)で申込ボタンが出ない。
  6. カード番号が Worker のログ・D1 のどこにも現れない。
  7. 本番切替は deploy-provenance-guard 経由。Gemini 監査(100 行超・課金)必須。

7. スケジュール(案)

作業依存
W1B-01 口座(法人名義)/B-16 特商法ページ原稿/規約 v2 弁護士照会Praxia 登記完了・敏裁定
W1〜2B-02〜B-07・B-19・B-20 実装(Codex)→ sol 敵対監査 → Fable QAStripe テストキー(法人口座前でも test mode は可)
W2B-17 18 歳ゲート/B-09 admin 表示
W3受入 1〜7・Gemini 監査・ゲート昇格(敏 promote)sol 停止条件 5 点の閉塞確認
W4価格決定(3 案)→ 本番 Price 作成 → 公開
以降P1(コンビニ・ダンニング・領収書)→ P2(年額・国内レーン・回数券・買い切り)弁護士確認(年額精算・前払式)
課金開始前に閉じるゲート(技術より先)
  1. 特商法表記=事業者名・所在地・電話の掲出。運営者非開示方針と正面衝突(7/22 裁-1)→ Praxia 登記に接続。
  2. sol 敵対監査の停止条件 5 点(Gemini Paid+DPA/AI 機能 18 歳ゲート/個情法 28 条整理/データ保全 S-1〜S-7 実測/過去問 rights manifest)。閉塞状況は本セッション未確認
  3. 規約 v2 の施行と clickwrap 証跡(Google Docs で全文回覧中)。

8. 敏にしか決められない事項

  1. 特商法表記に載せる所在地・電話番号(Praxia は登記済み・規約公開当初は運営会社情報を非開示=9/3 裁定。課金開始時点で開示が法定)。
  2. Stripe 口座名義: 法人(推奨)か、個人事業で先行するか。
  3. P0 の決済手段: カードのみで開始してよいか(学生の約 4 割を P1 まで取りこぼす前提)。
  4. 月額のみで開始(裁-2・推奨)。年額は P2。
  5. 有料プランの未成年者: 18 歳以上限定か、保護者同意フローで開放するか(無料 AI 機能の開放は 9/3 裁定済み)。
  6. 18 歳未満向け AI のベンダ分離(OpenAI か Anthropic か)と、分離完了までの制限運用の可否。
  7. 規約 v2 を弁護士スポット照会(優先度 A・8 問)に出すか。

9. 裏どりできなかったこと

正本: 02_SAP_Marketing/owned_business/educaredev/docs/BILLING_INTRODUCTION_PLAN_20260903.md/調査原本 docs/research/billing_methods_survey_20260903.md/規約 docs/legal/TERMS_OF_SERVICE_v2_20260903.md