ユースケース詳細 - 買い物決済

配送や決済の辺りが厳密じゃないなあ。

概要:買い物を決済する。
アクター:客
詳細:

アクターは 客ID、配送先データ、決済データを指定してシステムに買い物決済を要求する。
システムは 指定された客IDが1つ以上の商品を選択していることを確認し、[例外:何も選択していない]、指定された客IDを用いて、買い物確認を行い、買い物データを取得する。
システムは 指定された配送先データ、取得した買い物データを用いて、送料計算を行い、送料を取得する。
システムは 請求金額=買い物データの合計金額+送料
を計算する。
システムは (a)指定された決済データの決済データの決済手段データがカード決済の場合、指定されたカード会社名のカード会社に、指定されたカード番号のカード、指定された決済手段データの有効年月、指定された決済手段データのカード名義人名、請求金額を用いて、カード決済を要求し、正しく完了したことを確認して[例外:カードでは支払いできない]
買い物の状態を決済済みとし、
指定された客ID、発送先データを用いて配送手配を行う。
システムは (b)指定された決済データの決済データの決済手段データが振り込みの場合、
指定された客IDの客[例外:客が存在しない]の買い物を未決済とし、店が決済用に用意したの金融機関の口座sのそれぞれの口座番号と請求金額をアクターに通知する。
システムは (c)指定された決済データの決済データの決済手段データが代引きの場合、
指定された客IDの客[例外:客が存在しない]の買い物を未決済とし、
指定された客ID、発送先データ、代引き指定区分=Yes、を用いて配送手配を行う。
アクターに請求金額を通知する。
システムは 正常に処理が終了したことを通知して、ユースケースを終了する。
例外:
[例外:何も選択していない]
システムはアクターに何も選択されていないため、決済できないことを通知する。
[例外:カードでは支払いできない]
指定されたカード番号のカードでは決済できないことを通知してユースケースを終了する。
[例外:客が存在しない]
これまでの買い物が無効で決済できない旨を通知してユースケースを終了する。