RORK LABEN
FUNDING — RorkがLeft Lane Capital主導で$15Mのシードを調達しましたRORK MAX — Rork MaxはReact NativeではなくネイティブSwiftアプリを生成しますPLATFORM — iPhone・iPad・Watch・Vision Proに対応し、Live ActivitiesやCore MLまで使えますGROWTH — 月間74.3万訪問・成長率85%と利用が伸び続けていますTEST — Companionアプリで有料Apple Developerアカウント無しに実機テストができますSTACK — 本体はReact NativeとExpoで、ウェブラッパーでない真のネイティブ体験を提供しますFUNDING — RorkがLeft Lane Capital主導で$15Mのシードを調達しましたRORK MAX — Rork MaxはReact NativeではなくネイティブSwiftアプリを生成しますPLATFORM — iPhone・iPad・Watch・Vision Proに対応し、Live ActivitiesやCore MLまで使えますGROWTH — 月間74.3万訪問・成長率85%と利用が伸び続けていますTEST — Companionアプリで有料Apple Developerアカウント無しに実機テストができますSTACK — 本体はReact NativeとExpoで、ウェブラッパーでない真のネイティブ体験を提供します
記事一覧/開発ツール
開発ツール/2026-06-30上級

返金申請に12時間以内で応答する — CONSUMPTION_REQUEST を Cloudflare Workers で受け止める

Rork で作ったサブスクアプリに届く App Store の CONSUMPTION_REQUEST 通知を、Cloudflare Workers で受信して Send Consumption Information API に12時間以内で応答する実装を、フィールドの意味づけと運用判断まで含めて解説します。

App Store Server API4返金Cloudflare Workers22サブスクリプション61StoreKit 214

プレミアム記事

サブスクの解約理由を眺めていて、「使い込んだ直後に返金申請が通っている」取引にいくつか気づいたのは、Rork で出したアプリの売上がようやく月単位で読めるようになった頃でした。返金そのものは利用者の権利ですし、止めたいわけではありません。ただ、明らかにコンテンツを消費しきった後の申請まで自動で通っていくのは、個人開発の収益としては地味に効いてきます。

そこで初めて真面目に向き合ったのが CONSUMPTION_REQUEST という通知でした。利用者が App Store に返金を申請すると、Apple はアプリ側に「このユーザーはどれくらいこの購入を消費しましたか」と尋ねてきます。これに12時間以内で誠実に応答すると、Apple が返金可否を判断する材料になります。応答しなくても罰則はありませんが、応答しなければ「使い込んだ後の返金」を抑える手段を一つ放棄することになります。

このガイドは、その応答処理を Cloudflare Workers だけで完結させる構成を、フィールドの埋め方と運用判断まで含めて作るためのものです。サブスクの受信基盤(App Store Server Notifications V2 の受け口)をすでに持っている前提で書きますが、まだの方は先にApp Store Server Notifications V2 を自前運用する構成を読んでおくと、この記事の Worker をそのまま増築できます。

CONSUMPTION_REQUEST が届く条件と締め切り

この通知は、いくつかの条件がそろったときだけ届きます。まず、App Store Connect の「App 情報」で Consumption Request の受信を有効にしていること。そして利用者が返金を申請し、かつその取引が消費型・非消費型・サブスクのいずれかであること。サブスクの自動更新分でも届きます。

締め切りは通知の signedDate から 12時間です。ここを過ぎると応答は受け付けられません。Cloudflare Workers は受信時に同期処理で重い計算をすると応答が遅れるので、受信はすぐ 200 を返し、実際の API 呼び出しは後段に回す設計が安全です。とはいえ12時間という猶予は長いので、waitUntil で受信ハンドラの裏で処理する程度で十分間に合います。

項目内容
通知タイプCONSUMPTION_REQUEST
応答先 APIPUT /inApps/v1/transactions/consumption/{transactionId}
締め切りsignedDate から12時間以内
必須の前提customerConsented を true で送れること(同意の取得)
応答しない場合罰則なし。ただし返金抑止の材料を1つ失う

customerConsented が立たないと、データは無視される

最初に必ず押さえておきたい落とし穴がこれです。Send Consumption Information のリクエストには customerConsented というブール値があり、これが true でないと、他のフィールドをどれだけ正確に埋めても Apple は一切参照しません。「利用者が、消費データを Apple に提供することに同意している」という宣言だからです。

ですから実装の前に、利用規約かプライバシーポリシー、あるいはオンボーディングのどこかで「返金申請時に、適切な判断のため利用状況を Apple と共有することがあります」という旨の同意を取得しておく必要があります。私自身、個人開発で続けている壁紙・癒し系アプリでは、サブスク購入画面のフッターにこの一文への導線を置き、規約への同意をもって customerConsented を立てる運用にしました。同意を取れていないユーザーについては、customerConsented: false で送るのではなく、応答自体を見送る方が誠実だと考えています。

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

この記事の続きを読む

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

この記事で得られること
返金申請時に Apple から届く CONSUMPTION_REQUEST 通知を Cloudflare Workers で受信し、Send Consumption Information API へ12時間以内に応答する最小構成を、動くコード付きで組める
consumptionStatus・deliveryStatus・refundPreference など12個のフィールドを、自前の KV に持つ購読・利用ログからどう埋めるかの対応表が手に入る
誠実なデータ提供で不正な返金を抑えつつ、本当に困っている利用者の返金は妨げない — その線引きを運用ルールとして言語化できる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-04-25
RevenueCat の固定費が気になり始めた人のための、App Store Server Notifications V2 自前運用ガイド
Rork アプリで RevenueCat を経由せず、App Store Server Notifications V2 を Cloudflare Workers で受信する構成を、JWS 検証・冪等処理・テスト戦略まで含めて実装する完全ガイド。
開発ツール2026-05-20
Rork × StoreKit 2 × App Store Server API — 個人開発アプリのサブスク基盤を3層で守る実装設計
Rork製iOSアプリにStoreKit 2とApp Store Server APIを組み合わせ、クライアント検証・サーバ検証・通知監視の3層でサブスク収益を守る実装と運用ノウハウを公開します。
開発ツール2026-04-30
サブスクの『今・誰が・どの権利を持つか』を取り違えない — Rork で実装するエンタイトルメント状態機械の設計
Rork のアプリで返金・家族共有・解約・再開・延長を取り違えない、サブスクのエンタイトルメント状態機械を設計します。実装と落とし穴を本番で動くコード付きで解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →