85 lines
3.6 KiB
Markdown
85 lines
3.6 KiB
Markdown
|
|
---
|
|||
|
|
sidebar_position: 6
|
|||
|
|
title: "注文フルフィルメント"
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 注文フルフィルメント
|
|||
|
|
|
|||
|
|
Salesforceの注文がWHMCSのサービスとして実現される技術的プロセスを説明します。
|
|||
|
|
|
|||
|
|
## フルフィルメントトリガー
|
|||
|
|
|
|||
|
|
Salesforce Change Data Capture (CDC)が注文の`Activation_Status__c`フィールドの変更を検出すると、BFFのプロビジョニングキュー(BullMQ)にジョブがエンキューされます。
|
|||
|
|
|
|||
|
|
### トリガー条件
|
|||
|
|
|
|||
|
|
- 注文ステータスが「Approved」または「Reactivate」に変更
|
|||
|
|
- べき等キーにより同一注文の重複処理を防止
|
|||
|
|
- ジョブはバックオフ付きリトライ戦略を使用
|
|||
|
|
|
|||
|
|
## プロビジョニングワークフロー
|
|||
|
|
|
|||
|
|
### ステップ1:ステータス更新
|
|||
|
|
|
|||
|
|
Salesforce注文の`Activation_Status__c`を「Activating」に設定し、処理中であることを示します。
|
|||
|
|
|
|||
|
|
### ステップ2:WHMCS注文作成
|
|||
|
|
|
|||
|
|
- Salesforce OrderItemsをWHMCS商品IDにマッピング(Product2の`WH_Product_ID__c`フィールドを使用)
|
|||
|
|
- WHMCS `AddOrder` APIアクションを呼び出し
|
|||
|
|
- 作成されるもの:WHMCSオーダー、請求書、サブスクリプション/サービスレコード
|
|||
|
|
- 支払い方法:`stripe`
|
|||
|
|
- プロモコード:設定されている場合に適用
|
|||
|
|
|
|||
|
|
### ステップ3:SIMアクティベーション(SIM注文のみ)
|
|||
|
|
|
|||
|
|
- eSIM注文:Freebit APIでeSIMプロファイルをアクティベート
|
|||
|
|
- Physical SIM注文:エージェントが`Assign_Physical_SIM__c`にSIMを割り当て後にアクティベート
|
|||
|
|
|
|||
|
|
### ステップ4:Salesforce更新
|
|||
|
|
|
|||
|
|
- `WHMCS_Order_ID__c`に作成されたWHMCS Order IDを記録
|
|||
|
|
- `Activation_Status__c`を「Active」(成功時)またはエラーステータスに更新
|
|||
|
|
- 各OrderItemに`WHMCS_Service_ID__c`を記録
|
|||
|
|
- 関連Opportunityに`WHMCS_Service_ID__c`を記録しステージを「Active」に更新
|
|||
|
|
|
|||
|
|
### ステップ5:リアルタイム通知
|
|||
|
|
|
|||
|
|
- SSEイベントを公開して接続中のクライアントに注文ステータスの変更を通知
|
|||
|
|
- アプリ内通知を作成(「Order approved」「Service activated」など)
|
|||
|
|
|
|||
|
|
## エラー処理とリカバリ
|
|||
|
|
|
|||
|
|
### 支払い方法不足
|
|||
|
|
|
|||
|
|
`Activation_Error_Code__c` = `PAYMENT_METHOD_MISSING`が設定されます。顧客がWHMCSで支払い方法を追加し、サポートチームが再トリガーするまでプロビジョニングは一時停止されます。
|
|||
|
|
|
|||
|
|
### WHMCS APIエラー
|
|||
|
|
|
|||
|
|
- WHMCS注文作成失敗時、Salesforceステータスをロールバック
|
|||
|
|
- エラーコードとメッセージをSalesforceに記録
|
|||
|
|
- 部分的なWHMCS注文は保持されません
|
|||
|
|
|
|||
|
|
### Freebit/SIMエラー
|
|||
|
|
|
|||
|
|
- エラーをログに記録しactivation statusに表示
|
|||
|
|
- 注文はSalesforceにリトライ用に保持
|
|||
|
|
|
|||
|
|
### 一時的エラー
|
|||
|
|
|
|||
|
|
- BullMQキューでエクスポネンシャルバックオフ付きリトライ
|
|||
|
|
- 最大リトライ回数後にフルフィルメント失敗としてマーク
|
|||
|
|
|
|||
|
|
## 双方向リンク
|
|||
|
|
|
|||
|
|
フルフィルメント後、システムは双方向にリンクされます:
|
|||
|
|
|
|||
|
|
| 方向 | フィールド | 場所 | 値 |
|
|||
|
|
| --- | --- | --- | --- |
|
|||
|
|
| SF Order → WHMCS | `WHMCS_Order_ID__c` | Salesforce Order | WHMCS Order ID |
|
|||
|
|
| SF OrderItem → WHMCS | `WHMCS_Service_ID__c` | Salesforce OrderItem | WHMCSサービスID |
|
|||
|
|
| SF Opportunity → WHMCS | `WHMCS_Service_ID__c` | Salesforce Opportunity | メインWHMCSサービスID |
|
|||
|
|
| WHMCS Service → SF | OpportunityIdカスタムフィールド | WHMCS Product/Service | Salesforce Opportunity ID |
|
|||
|
|
|
|||
|
|
この双方向リンクにより解約が機能します。ポータルはWHMCSサービスIDでOpportunityを検索しステージを更新します。
|