---
sidebar_position: 3
title: "サービスとチェックアウト"
---

# サービスとチェックアウト

商品データの取得元、検証内容、鮮度の維持方法を説明します。

## 商品ソース

- 商品と価格はWHMCSではなく、Salesforceのポータル価格表（`PORTAL_PRICEBOOK_ID`）から取得。
- カテゴリ：Internet、VPN、SIM/モバイル。各SKUはSalesforce Product2 + PricebookEntryレコード。
- ポータルカテゴリ向けの商品のみ取得。名前、SKU、価格のソースはSalesforce。

### SIMファミリープラン

- ユーザーがWHMCSにアクティブなSIMサービスを持つ場合、SIMファミリー/割引プランも表示。
- SIMがない場合、通常プランのみ表示。

## 利用資格 & 検証

- インターネット注文はSalesforceに保存されたアカウント固有の利用資格を確認。
- チェックアウト時の確認事項：
  - WHMCSクライアントマッピングと少なくとも1つの支払い方法の存在
  - 選択されたSKUがSalesforce価格表に存在
  - インターネット注文の場合、WHMCSにアクティブなインターネットサービスがないこと（重複ブロック）

## チェックアウトで取得されるデータ

- 住所スナップショット：顧客の住所をSalesforce Order請求フィールドにコピー。
- アクティベーション設定：Salesforce Orderに保存。
- カードデータはポータルに保存しません。WHMCSに支払い方法が存在することのみ検証。

## 商品カタログのキャッシュ

- 商品カタログデータはSalesforce Change Data Capture (CDC)イベントを使用。時間ベースの有効期限なし。
- Volatileなカタログデータは60秒TTL。
- アカウントごとの利用資格はTTLなしでキャッシュ、Salesforce変更時にクリア。

## エラー時の動作

- 支払い方法不足：「支払い方法を追加してください」メッセージでチェックアウトをブロック。
- 利用資格なしまたはインターネット重複：注文を停止し理由を説明。
- Salesforce価格表の問題：「サービスが利用できません、後でやり直してください」を返却。
