◉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-09-22上級

決済が成功しても、渡してよい権限は決まりません。1つの Checkout に4種類の商品を載せたあとの分岐設計

チップ・記事単体・月額・買い切りの4商品を1つの Checkout に通したところ、決済成功をそのまま権限に変える実装が三度危うくなりました。金額ではなく metadata で分岐させ、権限ストアが読めない日は拒否側へ倒すまでの運用記録です。

Stripe18課金設計権限管理Cloudflare Workers25収益化67

✦ プレミアム記事

4つ目の商品を足そうとして、決済後の処理を読み返した夜のことでした。そこには、支払いが完了したら会員権を書き込む、という一本道が書いてありました。

商品が1種類しかなかったころは、それで正しかったのです。チップを足し、月額を足し、記事の単体購入を足す段になって、同じ一本道が三度も危うくなりました。

最初にお伝えしたいのは、決済の成功が教えてくれるのは「お金が動いた」という事実だけ、という一点です。誰に何を開けてよいかは、決済側ではなく、こちらが発行のときに決めておくものでした。

支払いの成否は金額が答え、権限の範囲は発行時の宣言が答えます。 この二つを同じ if 文に押し込まないことだけ、いまは崩さないようにしております。

1つ足すたびに、成功の意味が変わりました

私が運用しているサイトには、性格の違う支払いが4つ並んでおります。少額のチップ、記事1本の単体購入、月額のプラン、そして買い切りの永久アクセスです。

入口は1つの Checkout エンドポイントにまとめてあります。まとめたほうが、成功後の戻り先・言語・キャンセル先の扱いを一箇所で揃えられるからです。

問題は出口のほうでした。4つとも payment_status: paid で戻ってきますので、受け取り側から見ると全部同じ顔をしております。

商品mode渡すもの保持期間
チップ(¥150)payment何も渡しません—
記事単体(¥200)paymentその slug だけ10年
Pro(¥580/月)subscription会員権31日(更新で延長)
Premium(¥2,480)payment会員権10年

この表の1行目が、いちばん間違えやすいところでした。応援していただいた¥150で永久アクセスが開いてしまう実装は、書こうと思って書くものではありません。「支払いが成功したら会員権」という一行が残っているだけで、そうなってしまうのです。

「払われた」と「何を開ける」は、別々に持ちます

金額で判定したくなる誘惑は、最初にきちんと断っておいたほうがよいと感じています。¥150 と ¥2,480 は見分けがつきますので、一見すると成立してしまうのです。

ところが金額は、こちらの都合で動きます。感謝価格を用意した日、単体購入を¥250から¥200へ下げた日、そして同じ商品を別通貨で並べた日に、判定表は毎回作り直しになります。

種別は動きません。「これはチップです」という宣言は、値段を変えても通貨を変えても、意味が変わらないのです。

ですので、発行の時点で種別を確定し、それを決済の外側まで運ぶ形にしました。Stripe の場合は Checkout Session の metadata がその器になります。詳しい仕様は Stripe の Checkout Session ドキュメント に書かれています。

✦

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

この記事の続きを読む

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

この記事で得られること
✦Stripe Checkout の成功をそのまま権限に変えている実装を、金額ではなく metadata で分岐する形へ自分の手で書き換えられるようになります
✦チップや記事単体の支払いで上位プランが開いてしまう事故を、本番に出す前に自分のコードから見つけられるようになります
✦権限ストアが一時的に読めない場面で「とりあえず見せる」と書いてしまう前に、どちらへ倒すかを自分の基準で決められるようになります
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⟐ ビジネス2026-05-15
運用中の壁紙アプリをRork Maxで作り直した記録:工程別の実作業時間と再リリース後の指標
運用中の壁紙アプリをRork Maxでゼロから再実装し、工程ごとに実作業時間を計測しました。生成コードが取り違えた仕様、既存サブスクリプションの引き継ぎ手順、再リリース後30日のクラッシュ率と転換率まで数字で記録しています。
⟐ ビジネス2026-05-13
Rork アプリのユーザーレビューを AI に読ませたら、次に作るべき機能が3分で見えてきた
App Store・Google Play のレビューを Claude API で自動収集・感情分析・機能優先度スコアリングするシステムを Rork アプリに構築する全工程。バッチ分析が静かに欠落する問題の切り分けまで、動作確認済みコードとともに解説します。
⟐ ビジネス2026-05-05
Rork MaxでiOSとAndroidを同時展開して収益を倍にする — デュアルストア収益化の設計
Rork Maxを使ってiOSとAndroidを同時に運用し、RevenueCatとAdMobで課金と広告を一元管理する収益設計。プラットフォーム別の価格設計・AdMobメディエーション・ATT対応・LTV計算まで、実運用の数字を交えて解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます