ユーザー / 全体の支払い履歴・支払い手段
ユーザー / 全体の支払い履歴・支払い手段
本ページは 2 段構成。上段が biz/CS 向け(ユーザー提示可)、下段(
## 🔧 実装詳細以降)が dev 向け。biz/CS がユーザーへ提示・転用してよいのは上段のみ。
概要
ユーザーが講座契約・単発支払い等で利用する支払い手段(クレジットカード / 銀行振込)の管理と、講座を跨いだ全体の支払い履歴を確認する機能。
主な使い方:
- 支払い手段の登録・更新・削除: クレジットカードを 3DS 認証経由で登録、銀行振込での契約も対応
- 講座ごとの利用カードの切替: 既登録カードのうちどれを使うかを講座ごとに切り替え可能
- 全体支払い履歴の確認: 全講座を横断した支払い履歴の閲覧と、銀行振込の入金確定後の領収書ダウンロード
主な仕様:
- 登録カード上限 5 枚(1 ユーザーあたり)。6 枚目は追加できない
- 利用中のカードは削除不可(契約に紐付いているカードは契約を別カードに切り替えてからでないと削除できない)
- 3DS 認証は外部の決済認証サービスとの連携で実施。認証失敗時はカード登録フォームに戻って再試行可能(カード番号・セキュリティコードは再入力が必要)
- 銀行振込の領収書は入金確定後のみダウンロード可能
入会フローでの初回支払い手段設定は ../plan/join.md、講座契約に紐付く支払い手段の管理は ../plan/contract.md、特定講座の単発支払いは ../plan/payment.md で扱う。本ページは「全体ビュー」「複数講座を跨いだ支払い手段の使い回し」に絞る。
📝 レビュー観点(draft 段階の記述ヒント、完成時に削除):
- 目的: 講座契約の支払い手段(クレジットカード / 銀行振込)を全体で管理する画面。複数講座で同じカードを使い回す導線
- 誰が使うか: 受講者・講師(受講者以上)
- どこで使うか: mypage > 決済情報 / 支払履歴
- 隣接機能との関係: 講座入会時の支払い手段設定(
../plan/join.md)/ 講座契約に紐付く支払い手段(../plan/contract.md)/ 単発支払い・特定講座スコープ(../plan/payment.md)- CS 問い合わせで頻発する論点: 「3DS 認証で進めない」「カード上限 5 枚」「カードを変更したいのに利用中で削除できない」「銀行振込で領収書が出ない」
- [本機能特有] カード上限 5 枚: 6 枚目を追加できない、利用中のカードは削除不可
- [本機能特有] 3DS 認証: SB ペイメント連携、認証失敗時のフォーム残留挙動
- [本機能特有] 銀行振込の領収書:
transferStatus === DEPOSITEDのみ領収書ダウンロード可- [本機能特有] 講座ごとの利用カード切替:
sb_payment_method_planで「この講座にはこのカード」を割当可能
利用シナリオ
シナリオ 1: 新規カードを 3DS 認証で登録
ユーザーが mypage > 決済情報 > カード追加から、カード番号・有効期限・セキュリティコード等を入力 → 外部の 3DS 認証サービスへリダイレクト → 認証成功で戻ってカードが登録される。登録完了後、即時に他の入会フロー等で選択肢に表示される。
シナリオ 2: 別の講座で別カードを使う
複数の講座を契約しているユーザーが、講座 A は VISA カード、講座 B は MASTER カードといった具合に講座ごとに利用カードを使い分けたい。決済情報画面でアクティブな講座のカードを切り替えると、次回以降の自動課金で切り替え後のカードが利用される。
シナリオ 3: 銀行振込の領収書ダウンロード
銀行振込で支払った契約について、入金確定が完了した後に支払履歴画面から領収書(PDF 等)をダウンロード。入金確定前は領収書はダウンロードできない。
シナリオ 4: 3DS 認証に失敗 → 再試行
カード登録時に 3DS 認証で失敗した場合、画面上はカード登録フォームに戻る。再試行する場合はカード番号・セキュリティコードを再入力する必要あり(有効期限は保持されない)。
よくある失敗ケース
- 「3DS 認証で進めない」: 銀行・カード会社側の認証設定の問題で、Fincs 側からは復旧不可。カード会社経由で確認が必要
- 「カード上限 5 枚」: 6 枚目を追加できない。古いカードを削除(利用中でないこと)してから追加する必要あり
- 「カードを変更したいのに利用中で削除できない」: 別カードに切り替えてから削除する手順を案内
- 「銀行振込で領収書が出ない」: 入金確定前は出ない。入金確定は運営側の確認後に反映される
📝 レビュー観点:
- 新規カードを追加して 3DS 認証を通過する典型例
- 既存カードを別の講座に切替える例
- 銀行振込の入金確定後の領収書ダウンロード例
- 3DS 認証失敗時の再試行(カード番号再入力が必要)
- カード上限 5 枚到達時の挙動
権限別仕様
権限定義は ../user-roles.md 参照。用語は ../terminology.md。
講座権限軸
支払い情報は講座スコープを跨ぐため、講座権限軸の差分は限定的。
| 操作 | 未受講者 | 受講者 | サブ講師 | メイン講師 |
|---|---|---|---|---|
| 自身の支払い履歴閲覧 | (課金履歴があれば閲覧可) | ○ | ○ | ○ |
| 自身の支払い手段の追加・削除 | ○ | ○ | ○ | ○ |
| 講座ごとの利用カード切替 | (該当講座契約者のみ) | ○ | ○ | ○ |
横断軸
| 操作 | 運営アドミン | テストユーザー | 投稿禁止 |
|---|---|---|---|
| 自身の支払い操作 | (通常と同じ) | (通常と同じ、ただし課金処理は要確認) | (通常と同じ) |
| 他ユーザーの支払い手段の運営アドミン代理操作 | ×(運営アドミン専用の支払い手段直接編集経路は存在しない) | × | × |
| 銀行振込契約の運営アドミン作成・入金確定 | ○(../admin/contract.md 参照) |
× | × |
📝 レビュー観点:
- 運営アドミンによる代理カード追加・削除の経路はない(CS 対応で困難ケース)
- 銀行振込関連のみ運営アドミン経由の運用フローあり(入金確定 / クーリングオフ)
機能詳細(ふるまい)
支払い手段の登録
支払い手段は 2 種類:
- クレジットカード: カード番号・有効期限・セキュリティコード等を入力して 3DS 認証経由で登録。登録後は次回以降の課金・新規入会時に選択肢として表示される
- 銀行振込: 講座契約時に銀行振込を選択した場合のみ。指定の振込先口座へ入金 → 運営による入金確定で契約完了
3DS 認証フロー
カード登録時の 3DS 認証は外部の決済認証サービスとの連携で実施:
- ユーザーがカード情報を入力して「登録」を押す
- 外部の認証サービスへリダイレクト(パスワード等の追加認証)
- 認証完了で Fincs に戻り、カード登録が完了
- 失敗時はカード登録フォームに戻り再試行可能(カード番号・セキュリティコードは再入力が必要、有効期限のみ保持されない設計)
機密情報保護のため、エラーログには full のカード情報は記録されない(カードブランドの情報程度のみ)。
カード上限・利用中カード
- 1 ユーザーあたり 最大 5 枚
- 利用中のカードは削除不可(契約に紐付いている)
講座ごとの利用カード切替
複数のカードを登録している場合、講座ごとにどのカードを使うか切り替えることができる:
- ユーザーは決済情報画面から、講座と利用カードの組み合わせを変更できる
- 切り替え後の自動課金(月額更新等)から新しいカードが利用される
- 既に発生した課金には遡及反映されない
支払い履歴
支払い履歴画面(mypage > 支払履歴)では:
- 全体ビュー: 全講座を横断した支払い履歴一覧
- 講座別ビュー: 特定講座にスコープを絞った履歴
- ページング: 1 ページあたり 20 件表示
- 領収書ダウンロード: 銀行振込の入金確定後の支払いのみ、領収書ファイル(PDF 等)をダウンロード可能
履歴の各行には、支払い日時・金額・講座・支払い方法(カード / 銀行振込)が表示される。
📝 レビュー観点:
- 入力 → 処理 → 出力: 3DS 認証パラメータ(token / tokenKey / okRedirectUrl / ngRedirectUrl)
- エッジケース: 3DS 失敗時の再試行(カード番号・セキュリティコード再入力が必要、
expireMonth/expireYearのみ保持対象だがリダイレクト後 reset で消える)- エラー表示: 3DS 失敗時のアラート、Sentry ログには
savedPayment全体は送らず存在フラグとbrandのみ- 編集・削除の挙動: 利用中カードの削除阻止、削除後の講座契約への影響
- [本機能特有] 3DS 失敗時のフォーム残留: 認証失敗で画面上は入力フォームに戻る、再試行可
admin 操作
できる操作
支払い手段直接編集の運営アドミン経路はないが、以下が運営アドミン経由で運用可能(詳細は ../admin/contract.md):
- 銀行振込契約の作成:
POST /admin_master/bank_transfer_contract/{user_id}/{plan_id}/{plan_price_id} - 銀行振込の入金確定:
POST /admin_master/bank_transfer_contract/{bank_transfer_id} - 銀行振込一覧:
GET /admin_master/bank_transfer_contract - 契約削除:
DELETE /admin_master/contract/{user_id}/{plan_id}/{plan_price_id} - クーリングオフ:
DELETE /admin_master/cooling_off/... - 振込先口座マスタ管理:
POST/PUT/DELETE /admin_master/account/...
実装されていない
- 運営アドミンによる支払い手段(カード)の代理追加・削除: 専用操作経路なし — 今後の改善課題
📝 レビュー観点:
- 全体支払い履歴の運営アドミン専用一覧 API は未検出(
AdminMasterPaymentControllerは不在)- CS 対応で「カードが残っている」相談時の運営側操作経路を確認
品質 / 約束事項
- 応答性: 支払い手段の追加・削除は同期処理。3DS 認証は外部認証サービスへのリダイレクトを介するため、認証開始から完了まで数秒〜数十秒(ユーザー体験上はカード会社の認証画面操作時間に依存)
- 信頼性: 3DS 認証失敗時の自動リトライはなく、ユーザーが手動でカード番号を再入力して再試行する。機密情報(カード番号等)はエラーログに full の状態では記録されない
- 制限値:
- 登録カード上限: 5 枚 / ユーザー
- 支払い履歴のページング: 20 件 / ページ
- 領収書ダウンロード: 銀行振込で入金確定済みの支払いのみ
- データ保持: 登録カード情報は支払い処理に必要な限り保持。退会時の物理削除タイミングは別途整理(
./account-lifecycle.mdと整合)
📝 レビュー観点:
- 応答性: 3DS 認証中の体感時間、カード追加から登録完了までのタイムライン
- 信頼性: 3DS 失敗時の自動リトライなし、ユーザー手動再試行
- データ保持: 退会時のカード情報の保持期間
- [本機能特有] 失敗時の機密情報保護: Sentry に full payment data は送らない、
brandのみ
変更履歴(リリースノート候補)
v2.29.2: 2026-05-01(PSD 初版)
- [PSD 追加] 本ドキュメント初版作成。v2.29.2 時点の実装を起こし。機能追加・変更は含まない
📝 レビュー観点:
- 過去の主要変更(3DS 対応 / 銀行振込追加 / 領収書 PDF / 講座ごとカード切替の追加 等)があれば追記候補
関連ドキュメント
- 権限定義:
../user-roles.md - 用語辞書:
../terminology.md - 関連 PSD:
../plan/join.md— 講座入会時の支払い手段設定../plan/contract.md— 講座契約に紐付く支払い手段../plan/payment.md— 単発支払い(特定講座スコープ)../admin/contract.md— 運営アドミンによる契約・支払い管理