--- sidebar_position: 5 title: "注文とプロビジョニング(詳細)" --- # 注文とプロビジョニング(詳細ガイド) 注文作成からフルフィルメントまでの詳細な技術フローを説明します。 ## 注文作成フロー ### チェックアウトセッション - ユーザーがプランを設定すると、チェックアウトセッションがサーバーサイドで構築されます - セッションには選択されたプラン、アドオン、設置オプション、すべての設定詳細が含まれます - セッションには有効期限があり、長時間経過すると設定プロセスのやり直しが必要 ### 事前検証 1. ユーザーにWHMCSクライアントマッピングが存在すること 2. WHMCSに少なくとも1つの支払い方法が存在すること 3. インターネット注文の場合、WHMCSにアクティブなインターネットサービスがないこと 4. 在留カードが提出済み(SubmittedまたはVerified)であること ### Salesforce Order構造 **Orderオブジェクトフィールド:** | フィールド | API名 | 値 | | --- | --- | --- | | AccountId | `AccountId` | IDマッピングから | | Status | `Status` | "Draft" | | Type | `Type__c` | Internet / SIM / VPN | | EffectiveDate | `EffectiveDate` | 本日の日付 | | Pricebook2Id | `Pricebook2Id` | ポータル価格表ID | **OrderItemレコード:** - Salesforce Composite API経由で作成 - 各SKUに対してPricebookEntryIdからカタログ検索 - UnitPriceとQuantityを価格表から設定 ### 住所スナップショット 注文には注文時点の住所が保存されます。後でプロフィールの住所が変更されても、注文の住所は変わりません。 ## フルフィルメントプロセス ### トリガー - Salesforce CDCが注文ステータスの変更を検出(例:「Approved」「Reactivate」) - イベントがBFFのプロビジョニングキュー(BullMQ)に送信 - べき等キーによる重複処理防止 ### プロビジョニングステップ 1. Salesforce `Activation_Status__c` = "Activating" に更新 2. Salesforce OrderItemsをWHMCS商品にマッピング 3. WHMCS `AddOrder` APIアクションを呼び出し:WHMCS注文、請求書、サブスクリプションレコードを作成 4. SIM注文の場合:FreebitアクティベーションAPIを呼び出し 5. SalesforceをWHMCS Order ID、Activation Status、エラー情報で更新 6. 注文キャッシュを無効化 7. UI ライブ更新用のリアルタイムイベントを公開 ### 分散トランザクション フルフィルメントはロールバック付きの分散トランザクションパターンを使用: - Salesforceステータス更新後にWHMCS作成が失敗 → Salesforceステータスをロールバック - WHMCSに部分的な注文は残りません ### エラー処理 | シナリオ | 動作 | | --- | --- | | 支払い方法不足 | Salesforceに`PAYMENT_METHOD_MISSING`で一時停止 | | WHMCS APIエラー | 失敗としてマーク、Salesforceステータスをロールバック | | Freebitエラー | 失敗としてマーク、エラーをSalesforceに記録 | | 一時的エラー | BullMQキューでバックオフ付きリトライ | ## リアルタイム注文追跡 - 顧客は注文イベントストリーム(SSE)に接続可能 - Salesforceでステータスが変更されると、UIが手動更新なしで自動更新 - 注文詳細ページはServer-Sent Events経由でライブ接続を維持