CPQ Salesforce B2B Commerce との統合
Salesforce B2B Commerce で動作するように CPQ を構成する方法について説明します。
必須条件
このガイドでは、次のことを前提としています。
- Salesforce で Commerce が有効になっています
- CPQベース管理パッケージがインストールされます
- リストされている手順を実行するために、システムアドミニストレーターまたは同様のアクセス権を使用できます
Salesforce にファイルをインストール
- まだインストールされていない場合は、次の手順に従って Salesforce コマンドラインインターフェイス (CLI) をダウンロードしてインストールします。
- B2B 統合に使用されるコンポーネントを含む logik-b2b.zip ファイルを github.com からダウンロードして展開します。
- Mac では、ファイルをダブルクリックします。その内容は同じ場所で自動的に抽出されます。
- Windows では、右クリックして [すべて抽出] を選択します。画面に表示されるプロンプトに従います。
A. 以下を参照してください。
- ターミナル (Mac または Linux) または PowerShell (Windows) を起動します。
- 展開されたファイルを含むディレクトリに移動します。たとえば、ファイルが Downloads フォルダーに展開されている場合は、
コマンド cd Downloads/logik-b2bを入力して入力します。 lsコマンドを実行して、そのディレクトリ内のファイルとフォルダーのリストを表示します。srcとsfdx-project.json、およびこのガイドのプレーンテキストコピーが表示されます。- 次のコマンドを実行し、すぐ下に示す変更を行います。
sfdx auth:web:login --setalias myOrg -r https://example-dev-ed.my .salesforce.com-rに続く URL を、Logik-B2B 統合を設定する URL に置き換えます。--setaliasの後のテキストは、正しい Salesforce 組織を識別して参照するために使用されるニックネームです。サンプルのmyOrgは、このガイドの目的で使用します。次の手順では、必ず独自のエイリアスを使用してください。
前のログインコマンドで指定された URL は、デフォルトのブラウザーで開きます。
- 「Salesforce CLI」接続済みアプリにログインして認証します。
- コマンドラインで、
コマンド sfdx force:source:deploy -p src -u myOrgを実行します。しばらくすると、コマンドラインから「展開に成功しました」という確認メッセージが返されます。
Salesforce 組織がブラウザでまだ開いていない場合は、
コマンド sfdx force:org:open -u myOrgを実行して開くことができます。
Salesforce でのインストール後のセットアップ
Salesforce にコンポーネントをインストールした後、次の手順を完了する必要があります。
フィールドレベルセキュリティの設定:
- [セットアップホーム] から [オブジェクトマネージャー] タブに移動するか、[オブジェクトマネージャー] > [オブジェクトとフィールド] に移動します。
- オブジェクトマネージャーから、カートアイテム (CartItem) を検索して開きます。
- [フィールド] > [関係] に移動します。フィールド構成 ID (ConfigurationId__c) を検索して開きます。
- [ フィールドレベルセキュリティの設定] をクリックします。
- 表示 オプションが選択され、Commerce で製品を構成するプロファイルに対して 読み取り専用 が選択されていないことを確認し、 保存 をクリックします。
[製品 2] フィールドでも同様の一連の手順を実行する必要があります。
- オブジェクトマネージャーから、Product (Product2) を検索して開きます。
- [フィールド] > [関係] に移動します。[有効 (LGK__IsConfigurable__c)] CPQ フィールドを開きます。
- [フィールドレベルのセキュリティを設定] をクリックします。購入者プロファイルに対して [表示] オプションが選択されていることを確認します。読み取り専用は、有効または無効にすることができます。
- [Save (保存)] を選択します。
カートに追加 API を使用する場合は、さらにフィールドレベルのセキュリティ権限が必要です。まず、[オブジェクト管理] から [構成品目] (LGK ConfigurationLineItem c) を検索して開きます。次に、購入者プロファイルの次のフィールドに [Field-Level Security to Visible (フィールドレベルのセキュリティを表示)] が設定されていることを確認します。
- 数量
- ProductId
- 価格
- ConfigurationId
- タイプ
さらに、次の CartItem フィールドを [表示] に設定する必要があります ([読み取り専用] はチェックしないでください)。
- ConfigurationId (これは UI 統合のために既に行われている必要があります)
- 数量
- ProductId
- 価格
- タイプ
ランタイムトークンの取得と適用
-
Logikで、LogikベースURLと一致するOriginを持つRuntime Clientを作成します。[ コピー] をクリックしてクライアントトークンを取得します。
- Salesforce の [セットアップ] ホームから、[カスタムコード] > [カスタム設定] に移動します。
-
[Logik テナント] で、[ 管理] をクリックします。
-
設定がすでに存在する場合は、「編集」をクリックします。それ以外の場合は、[デフォルトの組織レベル値] ヘッダーの上にある [新規] をクリックします。
-
[ランタイムクライアントトークン] フィールドに、コピーしたランタイムクライアントのトークンを貼り付けます。[URL] フィールドが、 CPQ アドミンのランタイムクライアントの 1 つの [作成元] と同じ URL に設定されていることを確認します。
- [Save (保存)] を選択します。
Visualforce ページへのアクセスの設定
- [セットアップ] ホームから、[機能の設定] > [デジタルエクスペリエンス] > [すべてのサイト] に移動します。
-
ストアの [ワークスペース] をクリックします。
-
管理>ページに移動し> アプリケーション開発用の Salesforce プラットフォームに移動します。
- [Site Visualforce ページ] で、[ 編集] をクリックします。
-
commerceConfigurationWindowを [利用可能] から [有効] に移動して保存します。
エクスペリエンスビルダーの構成
- Commerce ホームページから、エクスペリエンス ビルダーを開きます。
-
左上の [ ホーム ] をクリックして、ページのリストを開きます。[製品] を検索またはナビゲートして、[ 製品の詳細] をクリックします。既存の [製品詳細] ページにカスタム [ログ] ボタンを追加するか、パッケージ化されたページをバリエーションとして使用します。
- 既存のページにボタンを追加するには:
- 左側の稲妻をクリックし、[カスタムコンポーネント] (リストの最後のセクション) に移動します。
-
コンフィギュレーターをリストからドラッグし、レイアウト内の目的の場所に移動します。
- パッケージ化されたページをバリエーションとして使用するには:
- 左上のページナビゲーションメニューを再度開きます。
- [Product Detail] オプションで、3 つのドットをクリックし、[Page Variations (ページバリエーション)] タブに移動します。
-
[新しいページバリエーション] をクリックし、レイアウトとして [構成可能な製品詳細] を選択します。
- バリエーションに名前を付け、[ 作成] をクリックします。
- 既存のページにボタンを追加するには:
カート API に追加
エンドポイント: /services/apexrest/add-to-cart
メソッド:application/json を受信して返します
POST:現在アクティブな買い物かごにアイテムを追加するために使用します。(買い物かごがアクティブでない場合は、買い物かごが作成されます)。次のものが必要です。
configurableProductIdconfigurationIdwebstoreIdeffectiveAccountId
webstoreId と effectiveAccountId は Salesforce Commerce の標準 API の一部であるため、ユーザーが情報をすぐに利用できるようにする必要があります。configurableProductId と configurationId は、同じ構成可能製品に対応する必要があります。
configurableProductIdconfigurationIdカート ID
応答:カートアイテム (CartItem) レコードのアレイ。
要求の例 (新規見積を作成):
{
"configurableProductId": "01t8a0000061GQPAA2",
"configurationId": "7e45beb9-790c-46ef-a05f-9195718bcda7",
"effectiveAccountId": "0018a00001nsFoNAAU",
"webstoreId": "0ZE8a000000XwckGAC"
}
要求の例 (既存の見積もりに追加):
{
"configurableProductId": "01t8a0000061GQPAA2",
"configurationId": "7e45beb9-790c-46ef-a05f-9195718bcda7",
"cartId": "0a68a000000kXQeAAM"
}
応答の例:
[
{
"attributes": {
"type": "CartItem",
"url": "/services/data/v56.0/sobjects/CartItem/0a98a000000kWtlAAE"
},
"CartId": "0a68a000000kXDsAAM",
"Product2Id": "01t8a0000061GQPAA2",
"Type": "Product",
"CartDeliveryGroupId": "0a78a000000kWwxAAE",
"SalesPrice": 10000.00,
"UnitAdjustedPrice": 10000.00,
"TotalLineAmount": 10000.00,
"TotalPrice": 10000.00,
"TotalPriceAfterAllAdjustments": 10000.00,
"LGK__ConfigurationId__c": "7e45beb9-790c-46ef-a05f-9195718bcda7",
"Name": "LGK Machine",
"Id": "0a98a000000kWtlAAE"
},
{
"attributes": {
"type": "CartItem",
"url": "/services/data/v56.0/sobjects/CartItem/0a98a000000kWtkAAE"
},
"CartId": "0a68a000000kXDsAAM",
"Product2Id": "01t8a0000061GQOAA2",
"Type": "Product",
"CartDeliveryGroupId": "0a78a000000kWwxAAE",
"Quantity": 1.00,
"SalesPrice": 0.00,
"UnitAdjustedPrice": 0.00,
"TotalLineAmount": 0.00,
"TotalPrice": 0.00,
"TotalPriceAfterAllAdjustments": 0.00,
"Name": "Warranty",
"Id": "0a98a000000kWtkAAE"
},
{
"attributes": {
"type": "CartItem",
"url": "/services/data/v56.0/sobjects/CartItem/0a98a000000kWtjAAE"
},
"CartId": "0a68a000000kXDsAAM",
"Product2Id": "01t8a0000061GQKAA2",
"Type": "Product",
"CartDeliveryGroupId": "0a78a000000kWwxAAE",
"Quantity": 1.00,
"SalesPrice": 0.00,
"UnitAdjustedPrice": 0.00,
"TotalLineAmount": 0.00,
"TotalPrice": 0.00,
"TotalPriceAfterAllAdjustments": 0.00,
"Name": "1.5T Magnet",
"Id": "0a98a000000kWtjAAE"
},
{
"attributes": {
"type": "CartItem",
"url": "/services/data/v56.0/sobjects/CartItem/0a98a000000kWtiAAE"
},
"CartId": "0a68a000000kXDsAAM",
"Product2Id": "01t8a0000061GQGAA2",
"Type": "Product",
"CartDeliveryGroupId": "0a78a000000kWwxAAE",
"Quantity": 1.00,
"SalesPrice": 1.50,
"UnitAdjustedPrice": 1.50,
"TotalLineAmount": 1.50,
"TotalPrice": 1.50,
"TotalPriceAfterAllAdjustments": 1.50,
"Name": "MRI Platform Table",
"Id": "0a98a000000kWtiAAE"
},
{
"attributes": {
"type": "CartItem",
"url": "/services/data/v56.0/sobjects/CartItem/0a98a000000kWthAAE"
},
"CartId": "0a68a000000kXDsAAM",
"Product2Id": "01t8a0000061GQLAA2",
"Type": "Product",
"CartDeliveryGroupId": "0a78a000000kWwxAAE",
"Quantity": 1.00,
"SalesPrice": 2.50,
"UnitAdjustedPrice": 2.50,
"TotalLineAmount": 2.50,
"TotalPrice": 2.50,
"TotalPriceAfterAllAdjustments": 2.50,
"Name": "MRI Scanner",
"Id": "0a98a000000kWthAAE"
},
{
"attributes": {
"type": "CartItem",
"url": "/services/data/v56.0/sobjects/CartItem/0a98a000000kWtgAAE"
},
"CartId": "0a68a000000kXDsAAM",
"Product2Id": "01t8a0000061GQRAA2",
"Type": "Product",
"CartDeliveryGroupId": "0a78a000000kWwxAAE",
"Quantity": 25.00,
"SalesPrice": 1.00,
"UnitAdjustedPrice": 1.00,
"TotalLineAmount": 1.00,
"TotalPrice": 1.00,
"TotalPriceAfterAllAdjustments": 1.00,
"Name": "MRI Gradient Coils",
"Id": "0a98a000000kWtgAAE"
},
{
"attributes": {
"type": "CartItem",
"url": "/services/data/v56.0/sobjects/CartItem/0a98a000000kWtfAAE"
},
"CartId": "0a68a000000kXDsAAM",
"Product2Id": "01t8a0000061GQHAA2",
"Type": "Product",
"CartDeliveryGroupId": "0a78a000000kWwxAAE",
"Quantity": 25.00,
"SalesPrice": 3.00,
"UnitAdjustedPrice": 3.00,
"TotalLineAmount": 3.00,
"TotalPrice": 3.00,
"TotalPriceAfterAllAdjustments": 3.00,
"Name": "MRI Radio Frequency Coils",
"Id": "0a98a000000kWtfAAE"
}
]