84 lines
3.5 KiB
Markdown
84 lines
3.5 KiB
Markdown
|
|
---
|
|||
|
|
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経由でライブ接続を維持
|