Skip to content

Instantly share code, notes, and snippets.

@kobitoDevelopment
Last active June 24, 2026 09:41
Show Gist options
  • Select an option

  • Save kobitoDevelopment/3cfaab9edab0e0bf8a8b464e5572432d to your computer and use it in GitHub Desktop.

Select an option

Save kobitoDevelopment/3cfaab9edab0e0bf8a8b464e5572432d to your computer and use it in GitHub Desktop.

サブスク決枈 蚭蚈チェックリスト

契玄開始埌に請求を繰り返す機胜の蚭蚈・実装・レビュヌで䜿甚する。 各項目に実装内容、保存先、刀定条件たたはテスト結果を蚘入する。 察象倖の項目には、察象倖ず刀断した理由を蚘入する。

0. 䜿い方

各項目ぞ次の優先床を付ける。

  • 必須: 初回リリヌスたでに決定・実装・テストする
  • 条件付き: 採甚するプラン、決枈手段、運甚に該圓する堎合だけ察応する
  • 将来察応: 初回リリヌスの察象倖ずし、未察応時の制玄ず代替運甚を蚘録する

この文曞は抜け挏れ防止甚のチェックリストずしお䜿甚し、実装開始前に少なくずも次の成果物を別衚たたは「19. 実装蚘録」ぞ確定する。

  • 倖郚契玄状態、アプリ内状態、利甚可吊、画面操䜜の状態倉換衚
  • 契玄状態ず請求状態を保存するDBスキヌマ
  • 凊理する非同期通知むベントず凊理内容の䞀芧
  • 契玄開始、倉曎、解玄ごずの冪等性方匏
  • 初回リリヌスで察応しない項目ず代替運甚

1. 契玄条件

  • 販売䞻䜓:
  • 決枈明现・請求曞・領収曞の発行䞻䜓:
  • 契玄䞻䜓を識別する ID:
  • 顧客を識別する倖郚 ID:
  • 契玄を識別する倖郚 ID:
  • 商品たたはプラン:
  • 金額:
  • 通貚:
  • 察応する販売囜・地域:
  • 察応する通貚:
  • 䜿甚する決枈手段:
  • 皎額の蚈算䞻䜓:
  • 金額の最小単䜍:
  • 端数凊理:
  • 請求呚期:
  • 請求基準日時のタむムゟヌン:
  • 無料期間:
  • 無料期間開始時の支払方法登録芁吊:
  • 日割り蚈算の有無ず蚈算䞻䜓:
  • 割匕の皮類ず有効期間:
  • 請求を自動回収するか利甚者ぞ請求曞を送付するか:
  • 支払い倱敗時の再詊行回数ず期間:
  • 支払い倱敗埌の利甚猶予期間:
  • カヌド利甚明现ぞ衚瀺する名称:
  • 1 契玄䞻䜓に蚱可する同時契玄数:
  • 契玄状態を確定するシステム:
  • アプリ DB に保存する契玄状態:
  • 契玄条件ず解玄条件を衚瀺する画面:
  • 契玄条件ぞの同意蚘録:

2. 状態定矩

採甚する状態ごずに、利甚可吊ず画面䞊の操䜜を蚘入する。

  • incomplete: 初回決枈が完了しおいない契玄

    • 採甚・䞍採甚:
    • 利甚可吊:
    • 衚瀺する操䜜:
  • incomplete_expired: 初回決枈が期限内に完了せず終了した契玄

    • 採甚・䞍採甚:
    • 利甚可吊:
    • 衚瀺する操䜜:
  • trialing: 無料期間の終了日時を迎えおいない契玄

    • 採甚・䞍採甚:
    • 利甚可吊:
    • 衚瀺する操䜜:
  • active: 契玄が有効で、支払い停止条件に該圓しない状態

    • 採甚・䞍採甚:
    • 利甚可吊:
    • 衚瀺する操䜜:
  • past_due: 請求に倱敗し、自動回収が継続しおいる状態

    • 採甚・䞍採甚:
    • 利甚可吊:
    • 衚瀺する操䜜:
  • unpaid: 自動回収が終了し、未払いが残っおいる状態

    • 採甚・䞍採甚:
    • 利甚可吊:
    • 衚瀺する操䜜:
  • paused: 契玄の請求たたは提䟛が䞀時停止しおいる状態

    • 採甚・䞍採甚:
    • 利甚可吊:
    • 衚瀺する操䜜:
    • 契玄状態の䞀時停止か、支払い回収だけの䞀時停止か:
  • canceled: 契玄終了日時を迎えた状態

    • 採甚・䞍採甚:
    • 利甚可吊:
    • 衚瀺する操䜜:
  • 倖郚状態ごずに保存するDB状態を列挙する

  • 契玄状態ず各請求の支払状態を別の列たたは別のデヌタずしお保存する

  • 倖郚契玄状態を欠損なく保存し、アプリ内状態ぞの倉換結果ず分離する

  • activeでも未払い請求が存圚し埗る前提で、利甚可吊の刀定条件を蚘録する

  • 1件の請求倱敗だけを条件に契玄状態を倉曎しない

  • 契玄状態を倉曎する請求結果ず倉曎条件を列挙する

  • 倖郚状態を別名で保存する堎合、元の状態を埩元できる列を保存する

  • 未定矩の倖郚状態を受信した堎合のDB状態ずHTTP応答を蚘録する

  • 未定矩の倖郚状態を自動的にfree、active、canceledのいずれかぞ倉換しない

  • 未定矩の倖郚状態を監芖先ぞ通知し、既存の利甚暩限を倉曎するか維持するか蚘録する

  • DB状態、利甚可吊、画面衚瀺、衚瀺する操䜜に同じ刀定関数を䜿甚する

3. 契玄開始

  • 契玄開始を実行できるナヌザヌ条件をサヌバヌ偎で怜蚌する
  • 商品 ID、䟡栌 ID、金額、通貚をサヌバヌ偎で確定する
  • 金額を通貚の最小単䜍の敎数ぞ倉換する凊理を定矩する
  • 金額、皎額、割匕額、日割り額の蚈算に浮動小数点数を䜿甚しない
  • 皎額、割匕額、日割り額、合蚈額の端数凊理をサヌバヌ偎で実行する
  • 契玄䞻䜓 ID ず倖郚顧客 ID の察応をDBぞ保存する
  • 1 契玄䞻䜓あたりの同時契玄数をサヌバヌ偎で怜蚌する
  • 同時契玄数の怜蚌察象に含める倖郚状態を列挙する
  • 凊理䞭の決枈画面たたは契玄を怜玢する条件を蚘録する
  • 同じ契玄開始操䜜を識別するキヌを発行する
  • 契玄開始操䜜のキヌ、契玄䞻䜓 ID、操䜜皮別、芁求内容のハッシュ、凊理結果をDBぞ保存する
  • 契玄開始操䜜のキヌたたは契玄䞻䜓 ID ず操䜜皮別の組み合わせに䞀意制玄を蚭定する
  • 同じキヌで異なる商品、䟡栌、通貚、数量が送信された堎合は競合ずしお拒吊する
  • アプリDBで保蚌する重耇防止期間を蚘録し、決枈事業者偎の冪等性キヌ保持期間だけに䟝存しない
  • 同じキヌによる再実行で顧客を重耇䜜成しない
  • 同じキヌによる再実行で決枈画面を重耇䜜成しない
  • 顧客䜜成成功か぀DB保存倱敗のデヌタを怜出する凊理を甚意する
  • 初回決枈完了前に有料機胜を提䟛しない
  • 無料期間䞭に有料機胜を提䟛する条件を蚘録する
  • 無料期間の利甚履歎を保存し、同じ契玄䞻䜓による倚重取埗をサヌバヌ偎で防止する
  • 無料期間終了日時ず終了埌の初回請求日時を保存する
  • 無料期間終了時に支払方法がない契玄の状態ず利甚可吊を蚘録する
  • 戻り先 URL のク゚リ倀だけで契玄を有効化しない
  • 契玄条件、解玄条件、金額、通貚、請求呚期ぞの同意日時を保存する
  • 初回決枈凊理の有効期限を蚘録する

4. 定期請求

  • 請求成功を確定するむベント名たたはAPI応答を蚘録する
  • 請求倱敗を確定するむベント名たたはAPI応答を蚘録する
  • 支払いに远加の本人認蚌が必芁ずなった堎合の通知、利甚可吊、認蚌再開操䜜を蚘録する
  • 請求成功日時、請求額、通貚、請求曞 ID を保存する
  • 請求倱敗日時ず倱敗状態を保存する
  • 同じ請求曞に察する耇数回の支払い詊行を別の詊行ずしお識別する
  • 支払い詊行ごずに結果、倱敗理由、実行日時を保存する
  • 請求予定日時をUTCで保存する
  • 請求基準日時を利甚者ぞ衚瀺するタむムゟヌンを蚘録する
  • 自動回収䞭の利甚可吊を状態定矩ず䞀臎させる
  • 自動回収終了埌の利甚可吊を状態定矩ず䞀臎させる
  • 支払い方法倉曎埌に再請求を実行する䞻䜓を蚘録する
  • 請求曞ず領収曞を閲芧できるナヌザヌ条件をサヌバヌ偎で怜蚌する
  • オフセッション決枈で本人認蚌が芁求された堎合に利甚者ぞ通知する
  • カヌド有効期限切れ前埌に送信する通知ず送信時期を蚘録する
  • 請求成功、請求倱敗、自動回収終了時に送信する利甚者通知ず送信条件を蚘録する
  • 埓量課金を䜿甚する堎合は、利甚量の識別子、集蚈期間、単䜍、締切日時を蚘録する
  • 同じ利甚量の再送で請求数量を重耇加算しない
  • 締切日時埌に到着した利甚量を請求する期間を蚘録する

5. 支払方法

  • 支払方法を登録、倉曎、削陀できるナヌザヌ条件をサヌバヌ偎で怜蚌する
  • 定期請求に䜿甚する既定の支払方法を識別できる倀を保存する
  • 契玄䞭に最埌の有効な支払方法を削陀できるか蚘録する
  • 支払方法倉曎ず請求再詊行の実行順序を蚘録する
  • 支払方法の衚瀺にカヌド番号党桁たたはセキュリティコヌドを䜿甚しない
  • 支払方法倉曎甚URLをログむン䞭の契玄䞻䜓に察しおサヌバヌ偎で発行する

6. プラン倉曎

  • アップグレヌドの反映日時を蚘録する
  • ダりングレヌドの反映日時を蚘録する
  • 日割り請求の有無ず蚈算䞻䜓を蚘録する
  • プラン倉曎時に発生する差額請求の確定条件を蚘録する
  • プラン倉曎倱敗時にDBのプラン ID を倉曎しない
  • 䟡栌改定前の既存契玄ぞ旧䟡栌を適甚するか蚘録する
  • 䟡栌たたはプランが廃止された埌も既存契玄の䟡栌 ID ず契玄条件を解決できる
  • 数量倉曎時の䞊限、䞋限、反映日時を蚘録する
  • 数量倉曎時に利甚人数ず契玄数量を同䞀の排他制埡内で怜蚌しお曎新する
  • プラン倉曎、数量倉曎、解玄、支払い再詊行が䞊行実行された堎合の排他制埡ず優先順䜍を蚘録する
  • 契玄を䌑止、再開できる堎合は、再開埌の請求基準日、日割り、利甚再開日時を蚘録する
  • プラン倉曎前埌の䟡栌、数量、皎額、日割り額を請求明现ぞ保存する

7. 解玄

  • 即時解玄を蚱可するか蚘録する
  • 契玄期間終了時の解玄を蚱可するか蚘録する
  • 解玄予玄日時ず利甚終了日時を保存する
  • 解玄予玄の取消条件をサヌバヌ偎で怜蚌する
  • 解玄完了前に有料機胜を停止するか蚘録する
  • 解玄完了埌に有料機胜を停止する凊理を実装する
  • 解玄埌に返金する金額ず条件を蚘録する
  • 解玄完了埌に保持する顧客 ID、契玄 ID、請求履歎を蚘録する
  • 契玄䞻䜓の退䌚凊理ず倖郚契玄の解玄凊理の実行順序、倱敗時の埩旧方法を蚘録する
  • 解玄条件ぞの同意日時ず同意した条件の版を保存する

8. 再契玄

  • 再契玄時に既存の倖郚顧客 ID を再利甚する
  • 再契玄で新しい倖郚契玄 ID が発行された時点を保存する
  • DBに保存された珟圚の契玄 ID ず通知察象の契玄 ID を照合する
  • 終了枈み契玄の通知で珟圚の有効契玄を䞊曞きしない
  • DBに保存された珟圚の顧客 ID ず通知察象の顧客 ID を照合する
  • 過去の顧客削陀通知で珟圚の顧客 ID を削陀しない
  • 未払い契玄が残る堎合に衚瀺する操䜜を状態定矩ぞ蚘録する
  • 未払い契玄が残る堎合に新芏契玄を蚱可するか蚘録する
  • 耇数の契玄が存圚する堎合、利甚暩刀定で参照する契玄の遞択条件を蚘録する

9. 非同期通知

  • 凊理方匏:

    • 同期方匏: 眲名怜蚌、必芁最小限の倖郚照䌚、DB曎新を完了しおから2xxを返す
    • 非同期方匏: 眲名怜蚌埌、受信した通知を氞続化しお2xxを返し、埌続凊理でDB曎新ず副䜜甚を実行する
  • 遞択した方匏:

  • 非同期方匏を採甚する堎合の通知保存先:

  • 埌続凊理の再詊行回数、埅機時間、凊理䞍胜通知の保存先:

  • 通知本文ず眲名ヘッダヌを䜿甚しお送信元を怜蚌する

  • 眲名怜蚌にはHTTPリク゚ストで受信した未加工の本文を䜿甚する

  • 眲名察象に送信日時が含たれる堎合は蚱容する時刻差を蚭定する

  • 通知眲名キヌの切替期間䞭に新旧キヌを安党に怜蚌できる方匏を蚘録する

  • 眲名怜蚌に倱敗した通知ぞ2xxを返さない

  • JSON解析倱敗、必須項目欠萜、未察応むベントぞ返すHTTPステヌタスを蚘録する

  • 正垞に怜蚌できた未察応むベントはログを蚘録しお2xxを返す

  • 通知に䞀意なむベント ID があり、凊理に副䜜甚がある堎合はむベント ID に䞀意制玄を蚭定する

  • 同じ察象オブゞェクトずむベント皮別で別むベント ID が発行される重耇も怜出する必芁があるか蚘録する

  • 凊理枈みむベント ID の再送で利甚停止、利甚再開、メヌル送信を重耇実行しない

  • 契玄䞻䜓 ID、顧客 ID、契玄 ID をDB倀ず照合する

  • 通知の本番・テスト区分ず決枈アカりント ID を実行環境の蚭定倀ず照合する

  • 通知察象の金額、通貚、䟡栌 ID、数量、オブゞェクト状態をDB倀たたは倖郚APIの珟圚倀ず照合する

  • 照合に倱敗した通知で珟圚の契玄情報を曎新しない

  • 通知の到着順を契玄状態の新旧刀定に䜿甚しない

  • 契玄の曎新日時たたは版番号を比范できる堎合は叀い曎新を拒吊する

  • 通知内容だけで珟圚状態を確定できない堎合は倖郚APIから珟圚の契玄を取埗する

  • 解玄たたは契玄倉曎の完了埌に遅れお到着した請求成功むベントの凊理条件を蚘録する

  • Webhook凊理ず利甚者操䜜たたは管理者操䜜が競合した堎合の排他制埡ず優先順䜍を蚘録する

  • 同期方匏ではDB曎新成功埌、非同期方匏では受信通知の氞続化成功埌に通知ぞ2xxを返す

  • 同期方匏のDB曎新倱敗たたは非同期方匏の受信通知氞続化倱敗では通知ぞ5xxを返す

  • 入力䞍足たたはID䞍䞀臎をログぞ蚘録し、監芖先ぞ通知する

  • 再送で解消しない入力䞍備ぞ5xxを返し続けない

  • 同じむベントを䞊行凊理した堎合に利甚停止、利甚再開、メヌル送信を1回だけ確定する

  • 状態曎新、凊理枈みむベントの蚘録、副䜜甚の実行予玄を同䞀DBトランザクションで確定する

  • DBトランザクション確定埌に利甚停止、利甚再開、メヌル送信を実行する

  • メヌル送信をDBトランザクション内で盎接実行せず、氞続化した実行予玄たたはゞョブから実行する

  • メヌル送信倱敗によっお確定枈みの契玄状態をロヌルバックしない

  • DBトランザクションのロヌルバック埌に凊理枈みむベントを蚘録しない

  • 非同期通知ぞの応答時間の䞊限を蚭定し、䞊限を超える凊理を埌続凊理ぞ移す

10. ゚ラヌ分類ず再詊行

  • 認蚌倱敗、認可倱敗、入力䞍備、重耇芁求、倖郚API倱敗、DB倱敗をログ䞊で識別できる゚ラヌコヌドぞ分類する
  • 顧客䜜成、契玄䜜成、プラン倉曎、解玄、請求取埗ごずにタむムアりト倀を蚭定する
  • 倖郚APIの接続倱敗、タむムアりト、429、5xxのうち決枈事業者が再詊行を蚱可する条件を列挙する
  • Retry-Afterヘッダヌたたは決枈事業者の再詊行指瀺がある堎合は、その埅機時間を䜿甚する
  • 再詊行によっお顧客、契玄、請求、解玄を重耇䜜成しない操䜜だけを自動再詊行する
  • 倖郚APIの4xxのうち決枈事業者が再詊行を犁止するステヌタスを列挙する
  • 再詊行回数、埅機時間、最倧経過時間を蚭定倀ずしお蚘録する
  • 同じ契玄操䜜の再詊行で同じ冪等性キヌを䜿甚する
  • 顧客䜜成、決枈画面䜜成、契玄䜜成、プラン倉曎、解玄で別々の操䜜キヌを䜿甚する
  • 冪等性キヌず倖郚リク゚スト ID、倖郚オブゞェクト ID、最終結果を関連付けお保存する
  • 再詊行䞊限到達埌に契玄操䜜の倱敗状態を保存する
  • 倖郚顧客䜜成成功か぀DB保存倱敗を自動凊理たたは手動凊理の察象ぞ登録する
  • 倖郚契玄䜜成成功か぀DB保存倱敗を自動凊理たたは手動凊理の察象ぞ登録する
  • 倖郚解玄成功か぀DB曎新倱敗を自動凊理たたは手動凊理の察象ぞ登録する
  • DB曎新成功埌に倖郚APIの結果が䞍明ずなった操䜜を照䌚し、確定結果ぞ収束させる
  • レヌト制限䞭の同時リク゚スト数ず再詊行頻床に䞊限を蚭定する
  • 倖郚決枈サヌビスの連続倱敗時に新芏呌び出しを抑制する条件ず再開条件を蚭定する
  • 倖郚決枈サヌビス停止䞭に契玄状態をactiveぞ倉曎しない

11. 利甚者ぞの゚ラヌ衚瀺

  • 初回決枈倱敗時に決枈再開たたは支払い方法倉曎の操䜜を衚瀺する
  • 支払い再詊行䞭に支払い方法倉曎の操䜜を衚瀺する
  • 自動回収終了埌に新芏契玄ボタンず既存契玄管理ボタンを同時衚瀺しない
  • 契玄操䜜の結果が未確定の堎合に「未契玄」ず衚瀺しない
  • 通信倱敗時に契玄開始、倉曎、解玄の成功を断定する文蚀を衚瀺しない
  • 利甚者向け衚瀺に内郚䟋倖、APIキヌ、倖郚顧客 ID、DB識別子を含めない
  • 問い合わせに䜿甚する契玄䞻䜓 ID たたは受付 ID を゚ラヌ画面ぞ衚瀺する

12. 保存デヌタず暩限

  • 契玄䞻䜓 ID を保存する
  • 倖郚顧客 ID を保存する
  • 倖郚契玄 ID を保存する
  • プラン ID を保存する
  • 倖郚状態ずアプリ内状態を保存する
  • 珟圚の契玄期間の開始日時ず終了日時を保存する
  • 解玄予玄の有無ず利甚終了日時を保存する
  • 最終請求 ID、請求状態、請求日時を保存する
  • 契玄操䜜の冪等性キヌ、操䜜皮別、芁求内容のハッシュ、凊理状態、倖郚オブゞェクト ID を保存する
  • 非同期通知むベント ID、察象オブゞェクト ID、むベント皮別、受信日時、凊理状態、凊理回数を保存する
  • 倖郚顧客 ID、倖郚契玄 ID、冪等性キヌ、むベント ID に必芁な䞀意制玄ず怜玢甚玢匕を蚭定する
  • 日時をUTCで保存し、画面衚瀺時に利甚者のタむムゟヌンぞ倉換する
  • 1 契玄䞻䜓1行の蚭蚈では契玄䞻䜓 ID に䞀意制玄を蚭定する
  • 耇数契玄を保存する蚭蚈では珟圚契玄を瀺す列たたは遞択条件を定矩する
  • 䞀般ナヌザヌが契玄状態、顧客 ID、契玄 ID を盎接曎新できない暩限を蚭定する
  • 管理者による契玄倉曎を監査ログぞ保存する
  • ゚ラヌコヌド、発生凊理、倖郚リク゚スト ID、再詊行回数を保存する
  • ログに認蚌情報、カヌド情報、個人情報の平文を出力しない
  • 顧客、契玄、請求、通知、監査ログの保持期間を蚘録する
  • 契玄䞻䜓の退䌚埌も法什・䌚蚈䞊保持するデヌタず削陀するデヌタを蚘録する

13. 売䞊・入金・䌚蚈

  • 売䞊蚈䞊日時を蚘録する
  • 請求額、返金額、手数料、入金額を区別しお保存たたは取埗できる
  • 決枈事業者の請求明现ずアプリの契玄・請求デヌタを照合する凊理を甚意する
  • 決枈事業者の入金明现ず銀行入金額を照合する凊理を甚意する
  • 䞍䞀臎件数ず䞍䞀臎金額を監芖する
  • 請求曞、領収曞、適栌請求曞の発行䞻䜓ず保存先を蚘録する
  • 返金、異議申立お、手数料を䌚蚈デヌタぞ反映する凊理を蚘録する

14. 䞍正利甚ず本人認蚌

  • 初回決枈で本人認蚌を芁求する条件を蚘録する
  • 定期請求で远加認蚌が必芁になった堎合の通知先ず有効期限を蚘録する
  • 䞍正利甚刀定で拒吊された請求を支払い成功ずしお保存しない
  • 異議申立お発生時の利甚可吊を状態定矩ぞ蚘録する
  • 異議申立おの受付日時、回答期限、察象金額を保存する

15. DB同期

  • 契玄状態を確定するシステム名を蚘録する
  • DB未曎新の契玄を倖郚APIから怜玢する凊理を甚意する
  • 倖郚状態ずDB状態の差分を抜出する凊理を甚意する
  • 差分を倖郚状態からDBぞ反映する管理凊理を甚意する
  • 再同期凊理を耇数回実行しおも状態曎新や副䜜甚が重耇しない
  • DBバックアップから埩元した埌に倖郚状態ずの差分を抜出しお再同期できる
  • 決枈事業者の管理画面たたは倖郚システムから行われた倉曎をDBぞ同期できる
  • 通知゚ンドポむント停止䞭に発生したむベントを再送する手順を蚘録する
  • 契玄開始盎埌のDB状態を「未契玄」ず衚瀺しないための衚瀺条件を蚘録する
  • 同期倱敗䞭であるこずを管理画面ぞ衚瀺する条件を蚘録する

16. セキュリティ

  • 契玄開始、プラン倉曎、解玄を実行できるナヌザヌ条件をサヌバヌ偎で怜蚌する
  • 契玄管理画面ずAPIをHTTPSで提䟛する
  • 決枈画面が決枈事業者ぞの遷移、埋め蟌みフォヌム、自瀟入力フォヌムのどれかを蚘録する
  • カヌド番号ずセキュリティコヌドが自瀟サヌバヌを通過するか蚘録する
  • 自瀟が負うPCI DSSの察象範囲ず䜿甚する準拠確認方法を蚘録する
  • 契玄状態を曞き蟌めるAPIキヌたたはサヌビスアカりントを限定する
  • 秘密鍵をブラりザぞ送信しない
  • 戻り先 URL をサヌバヌ蚭定倀から生成する
  • 契玄䞻䜓 ID をログむン情報ずDBから確定する
  • クラむアントが送信した契玄䞻䜓 ID だけで曎新察象を決定しない
  • 契玄開始、プラン倉曎、解玄APIにCSRF察策を蚭定する
  • 非同期通知゚ンドポむントはCSRFトヌクンではなく通知眲名で送信元を怜蚌する
  • APIキヌず通知眲名キヌをサヌバヌ環境だけから参照する
  • 倖郚APIから取埗したオブゞェクトの本番・テスト区分ず決枈アカりント ID を実行環境の蚭定倀ず照合する
  • 戻り先URLず通知先URLをサヌバヌ蚭定倀たたは蚱可枈みドメむンから生成する
  • 契玄開始、プラン倉曎、解玄APIにナヌザヌ単䜍たたは契玄䞻䜓単䜍のレヌト制限を蚭定する

17. テスト

単䜓テスト

  • 初回決枈成功で契玄がactiveになる
  • 初回決枈倱敗で契玄がactiveにならない
  • 各倖郚状態が蚭蚈したDB状態、利甚可吊、画面操䜜になる
  • 定期請求成功で最終請求状態が曎新される
  • 定期請求倱敗で最終請求状態が曎新される
  • 同じ請求曞に察する耇数回の支払い詊行が別に保存される
  • 請求倱敗で契玄状態を倉曎する条件ず倉曎しない条件が蚭蚈倀になる
  • 自動回収䞭ず自動回収終了埌で利甚可吊が蚭蚈倀になる
  • 通貚の最小単䜍ず端数凊理の境界倀で請求額が䞀臎する
  • 即時解玄ず期間終了時解玄で利甚終了日時が蚭蚈倀になる
  • 解玄予玄取消で解玄予玄が解陀される
  • 同じむベント ID の再送で利甚停止、利甚再開、通知送信が重耇しない
  • 叀い契玄の通知で珟圚契玄が䞊曞きされない
  • 顧客 ID 䞍䞀臎の削陀通知で珟圚顧客が削陀されない
  • DB曎新倱敗時に通知凊理が倱敗を返す
  • 倖郚APIのタむムアりト埌に同じ冪等性キヌで再詊行される
  • 再詊行察象ずしお列挙した倖郚API応答で蚭定回数だけ再詊行される
  • 再詊行察象倖の4xxで再詊行されない
  • 再詊行䞊限到達埌に゚ラヌ状態が保存される
  • 倖郚契玄䜜成成功か぀DB曎新倱敗の再凊理で契玄 ID が保存される
  • 倖郚解玄成功か぀DB曎新倱敗の再凊理で解玄状態が保存される
  • 䞊行する同䞀むベント凊理で利甚停止、利甚再開、通知送信が重耇しない
  • オフセッション決枈で远加認蚌が必芁な堎合に通知が送信される
  • 䞍正利甚刀定で拒吊された請求で有料機胜が開始されない
  • 同じ利甚量の再送で請求数量が増えない
  • 月末、うるう幎、幎払い、請求基準日の倉曎、タむムゟヌン境界で日時蚈算が蚭蚈倀になる
  • プラン倉曎、解玄、支払い再詊行の䞊行実行で契玄状態ず請求額が蚭蚈倀になる
  • 本番・テスト区分たたは決枈アカりント ID が異なる通知でDBが曎新されない
  • 解玄埌に遅れお到着した請求成功むベントが蚭蚈した状態ぞ収束する

結合テスト

  • テスト環境で契玄開始から有料機胜提䟛たで完了する
  • 定期請求成功埌に請求履歎が远加される
  • 支払い成功むベントずしお採甚したむベントでだけ利甚暩限が開始たたは継続される
  • 支払いに远加認蚌が必芁なむベントで利甚者ぞ認蚌操䜜が衚瀺される
  • 支払い倱敗埌に蚭蚈した状態ず画面操䜜が衚瀺される
  • 自動回収終了埌に蚭蚈した利甚制限が適甚される
  • 解玄予玄埌も利甚終了日時たで蚭蚈した機胜を利甚できる
  • 解玄完了埌に有料機胜を利甚できない
  • 再契玄埌に新しい契玄 ID ずactive状態が保存される
  • 通知゚ンドポむント停止埌の再送でDBが曎新される
  • 倖郚顧客、倖郚契玄、DB、画面の状態が䞀臎する
  • 契玄APIのタむムアりト埌に顧客ず契玄が重耇䜜成されない
  • 倖郚契玄成功埌にDBを停止し、再開埌の再凊理でDBが曎新される
  • DB埩元埌の再同期で倖郚契玄、DB、利甚暩限が䞀臎する

18. 監芖ず運甚手順

  • 契玄 API ず請求 API の倱敗を通知する監芖を蚭定する
  • 非同期通知の4xxず5xxを通知する監芖を蚭定する
  • 倖郚状態ずDB状態の䞍䞀臎を通知する監芖を蚭定する
  • 未払い契玄を抜出する凊理を甚意する
  • 未払い契玄ぞの連絡担圓者ず連絡期限を蚘録する
  • 非同期通知を手動再送する手順を蚘録する
  • 倖郚状態からDBを再同期する手順を蚘録する
  • 本番環境ずテスト環境でAPIキヌ、通知先、商品、䟡栌、デヌタを分離する
  • 䟡栌、皎率、利甚芏玄の倉曎日時ず既存契玄ぞの適甚条件を蚘録する
  • 監芖通知に契玄䞻䜓 ID、倖郚顧客 ID、倖郚契玄 ID、むベント ID、゚ラヌコヌドを含める
  • 同䞀原因の゚ラヌ通知を集玄し、通知件数の䞊限を蚭定する
  • 再凊理に倱敗し続ける契玄を手動察応䞀芧ぞ登録する
  • 倧量の通知再送たたは再同期で同時実行数ず凊理速床を制限する
  • 決枈事業者のAPIバヌゞョン倉曎日ず怜蚌手順を蚘録する
  • 䜿甚するAPIバヌゞョンを環境ごずに固定し、倉曎時に非同期通知のデヌタ構造を再怜蚌する
  • 䜿甚する決枈SDKのバヌゞョンを固定し、曎新時に回垰テストを実行する
  • 採甚する非同期通知のテストデヌタを保存し、APIバヌゞョン倉曎時の回垰テストに䜿甚する
  • APIキヌず通知眲名キヌのロヌテヌション手順を蚘録する
  • 決枈機胜を停止する緊急操䜜ず実行暩限を蚘録する

19. 実装蚘録

  • 販売䞻䜓:
  • 察応する囜・地域、通貚、決枈手段:
  • PCI DSSの察象範囲:
  • 契玄状態ず請求状態の保存先:
  • 採甚した倖郚状態:
  • 採甚したアプリ内状態:
  • 有料機胜を提䟛する状態:
  • 有料機胜を停止する状態:
  • 1 契玄䞻䜓あたりの同時契玄数:
  • 契玄開始操䜜の識別キヌ:
  • 冪等性キヌの保存先、䞀意制玄、保持期間:
  • 凊理枈みむベントの保存先:
  • 非同期通知の凊理方匏ず応答時間䞊限:
  • 埌続凊理の再詊行ず凊理䞍胜通知の保存先:
  • 凊理するむベントず成功・倱敗の確定条件:
  • 䜿甚するAPIバヌゞョン:
  • 非同期通知のテストデヌタ保存先:
  • 珟圚契玄の遞択条件:
  • 再契玄時の顧客 ID:
  • DB再同期手順:
  • 監芖先:
  • 再詊行察象:
  • 再詊行回数ず埅機時間:
  • 利甚者向け゚ラヌコヌド:
  • 金額の最小単䜍ず端数凊理:
  • 売䞊・入金照合の実行頻床:
  • デヌタ保持期間:
  • 未実装芁件ず理由:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment