◉RORK LABEN
●EXPO — EAS Observe がネイティブクラッシュも記録(10/07)。SDK 57 は 57.0.21 以降で確認できます●RORK — 09-29 に GPT-6.1 Sol、09-28 に Claude Sonnet 5.5 を追加。モデル選択で使えます●RN 0.88 — React Native 0.88.x の正式リリース予定は 10/12、残り2日●Q&A — AuthSession が Android の standalone で結果を返さない、という問いが長く続いています●WINDOWS — Mac がなくても Windows だけで iPhone アプリを出す手順が共有されています●NEW — Expo Go で通知だけが届かない夜に、先に切り分ける3点●EXPO — EAS Observe がネイティブクラッシュも記録(10/07)。SDK 57 は 57.0.21 以降で確認できます●RORK — 09-29 に GPT-6.1 Sol、09-28 に Claude Sonnet 5.5 を追加。モデル選択で使えます●RN 0.88 — React Native 0.88.x の正式リリース予定は 10/12、残り2日●Q&A — AuthSession が Android の standalone で結果を返さない、という問いが長く続いています●WINDOWS — Mac がなくても Windows だけで iPhone アプリを出す手順が共有されています●NEW — Expo Go で通知だけが届かない夜に、先に切り分ける3点
記事一覧/開発ツール
⬡ 開発ツール/2026-03-14上級

Rork Max × Stripe サブスクリプションを本番運用へ — Webhook冪等性・状態遷移・照合の実装

Rork Max と Stripe でサブスクリプションを構築する手順に加え、テストモードでは見えない本番の落とし穴(Webhookの二重配信・順序逆転・状態遷移・DBとStripeの照合)を実装コードとともに解説します。

rork-max41stripe3subscription10アプリ内課金9決済7

✦ プレミアム記事

テストモードで通ったのに、本番で二重課金の問い合わせが来た

サブスクリプションの実装で一番怖いのは、テストモードのチェックリストを全部通過して安心した数日後に届く「二重に請求されています」という一通のメールでした。個人開発でメンバーシップ課金を運用していて、私が最初に痛感したのはこの点です。決済フローを組むこと自体は難しくありません。難しいのは、Stripe から届くイベントが「必ず一度だけ、順番どおりに来る」という暗黙の前提を、コードが勝手に置いてしまうことでした。

Stripe の Webhook は、同じイベントを複数回送ることがあります。ネットワークの都合で subscription.updated が subscription.created より先に着くこともあります。テストモードで手動クリックしているうちは、これらはまず起きません。起きるのは、実ユーザーが増えて、リトライとタイムアウトが日常になった本番だけです。

以下では、Rork Max と Stripe でサブスクリプションを立ち上げる基本手順をおさえたうえで、その「本番でだけ壊れる」層に絞って実装を掘り下げます。基本のつなぎ込みができている方は、前半を飛ばして「Webhookを冪等にする」から読み進めていただければと思います。

前提条件

このガイドに取り組む前に、以下の準備を整えておいてください。

  • Rork Max アカウント: 基本的な操作に慣れていることが望ましいです。はじめての方はStripe 決済連携ガイドから着手すると流れをつかみやすいです。
  • Stripe アカウント: 管理画面にアクセスでき、公開可能キーとシークレットキーを取得できる状態にしてください。
  • REST API と JSON の基礎: Webhook の署名検証やイベント処理を読み解くうえで必要です。
  • データベース: ユーザーとサブスクリプション情報を保存します。Supabase / Firebase いずれでも構いません(バックエンドガイド参照)。
✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦Webhookの二重配信・順序逆転をイベントID台帳で吸収する冪等処理の実装
✦past_dueやincompleteを含むサブスクリプション状態遷移の扱いと、DBをStripeへ照合する再同期ジョブ
✦Stripe CLIでのローカル検証手順と、手数料を織り込んだ損益分岐の試算表
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

⟐ ビジネス2026-04-28
Rork アプリの収益モデル比較 — 広告・サブスク・買い切りを実運用の数字で選ぶ
広告・サブスクリプション・買い切りという3つの収益モデルを、壁紙系アプリの広告運用がピークだった時期の実体験をもとに、MAU5,000という同一条件で試算し直しました。eCPMやフィルレートの実態、ハイブリッド設計、段階的な移行の順序まで整理します。
⟐ ビジネス2026-04-28
Rork Max で SwiftUI ネイティブアプリを収益化する — App Store 審査攻略からサブスクリプション設計まで
Rork Max が生成した SwiftUI コードを App Store 審査に通し、StoreKit 2 でサブスクリプション課金を組み込むまでの工程を、動くコードと審査で確認される項目つきで整理します。
⬡ 開発ツール2026-10-07
日本語の見出しだけ太字にならない — Android で fontWeight が効かないときの切り分けと直し方
Rork で作ったアプリで、iPhone では太字なのに Android では日本語の見出しが細いままになる症状の切り分け記事です。原因の見分け方、fontFamily を重みごとに分ける直し方、確認用コードを載せています。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます