CPQ Salesforce B2B Commerce との統合

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:14分
  • Salesforce B2B Commerce で動作するように CPQ を構成する方法について説明します。

    必須条件

    このガイドでは、次のことを前提としています。

    • Salesforce で Commerce が有効になっています
    • CPQベース管理パッケージがインストールされます
    • リストされている手順を実行するために、システムアドミニストレーターまたは同様のアクセス権を使用できます

    Salesforce にファイルをインストール

    1. まだインストールされていない場合は、次の手順に従って Salesforce コマンドラインインターフェイス (CLI) をダウンロードしてインストールします。

      Salesforce CLI のインストール

    2. B2B 統合に使用されるコンポーネントを含む logik-b2b.zip ファイルを github.com からダウンロードして展開します。
      • Mac では、ファイルをダブルクリックします。その内容は同じ場所で自動的に抽出されます。
      • Windows では、右クリックして [すべて抽出] を選択します。画面に表示されるプロンプトに従います。

      A. 以下を参照してください。

    3. ターミナル (Mac または Linux) または PowerShell (Windows) を起動します。
    4. 展開されたファイルを含むディレクトリに移動します。たとえば、ファイルが Downloads フォルダーに展開されている場合は、 コマンド cd Downloads/logik-b2b を入力して入力します。
    5. ls コマンドを実行して、そのディレクトリ内のファイルとフォルダーのリストを表示します。

      srcsfdx-project.json、およびこのガイドのプレーンテキストコピーが表示されます。

      JSON ファイルの詳細

    6. 次のコマンドを実行し、すぐ下に示す変更を行います。
      sfdx auth:web:login --setalias myOrg -r https://example-dev-ed.my .salesforce.com
      • -r に続く URL を、Logik-B2B 統合を設定する URL に置き換えます。
      • --setalias の後のテキストは、正しい Salesforce 組織を識別して参照するために使用されるニックネームです。サンプルの myOrg は、このガイドの目的で使用します。次の手順では、必ず独自のエイリアスを使用してください。

      前のログインコマンドで指定された URL は、デフォルトのブラウザーで開きます。

    7. 「Salesforce CLI」接続済みアプリにログインして認証します。
    8. コマンドラインで、 コマンド sfdx force:source:deploy -p src -u myOrg を実行します。

      しばらくすると、コマンドラインから「展開に成功しました」という確認メッセージが返されます。

      JSON ファイルの詳細

      Salesforce 組織がブラウザでまだ開いていない場合は、 コマンド sfdx force:org:open -u myOrg を実行して開くことができます。

    Salesforce でのインストール後のセットアップ

    Salesforce にコンポーネントをインストールした後、次の手順を完了する必要があります。

    フィールドレベルセキュリティの設定:

    1. [セットアップホーム] から [オブジェクトマネージャー] タブに移動するか、[オブジェクトマネージャー] > [オブジェクトとフィールド] に移動します。
    2. オブジェクトマネージャーから、カートアイテム (CartItem) を検索して開きます。

      オブジェクトマネージャー画面

    3. [フィールド] > [関係] に移動します。フィールド構成 ID (ConfigurationId__c) を検索して開きます。
    4. [ フィールドレベルセキュリティの設定] をクリックします。

      [オブジェクトマネージャー] 画面

    5. 表示 オプションが選択され、Commerce で製品を構成するプロファイルに対して 読み取り専用 が選択されていないことを確認し、 保存 をクリックします。

      構成画面

    [製品 2] フィールドでも同様の一連の手順を実行する必要があります。

    1. オブジェクトマネージャーから、Product (Product2) を検索して開きます。
    2. [フィールド] > [関係] に移動します。[有効 (LGK__IsConfigurable__c)] CPQ フィールドを開きます。
    3. [フィールドレベルのセキュリティを設定] をクリックします。購入者プロファイルに対して [表示] オプションが選択されていることを確認します。読み取り専用は、有効または無効にすることができます。
    4. [Save (保存)] を選択します。

    カートに追加 API を使用する場合は、さらにフィールドレベルのセキュリティ権限が必要です。まず、[オブジェクト管理] から [構成品目] (LGK ConfigurationLineItem c) を検索して開きます。次に、購入者プロファイルの次のフィールドに [Field-Level Security to Visible (フィールドレベルのセキュリティを表示)] が設定されていることを確認します。

    • 数量
    • ProductId
    • 価格
    • ConfigurationId
    • タイプ

    さらに、次の CartItem フィールドを [表示] に設定する必要があります ([読み取り専用] はチェックしないでください)。

    • ConfigurationId (これは UI 統合のために既に行われている必要があります)
    • 数量
    • ProductId
    • 価格
    • タイプ

    ランタイムトークンの取得と適用

    1. Logikで、LogikベースURLと一致するOriginを持つRuntime Clientを作成します。[ コピー] をクリックしてクライアントトークンを取得します。

      ランタイムクライアントを編集

    2. Salesforce の [セットアップ] ホームから、[カスタムコード] > [カスタム設定] に移動します。
    3. [Logik テナント] で、[ 管理] をクリックします。

      カスタム設定画面

    4. 設定がすでに存在する場合は、「編集」をクリックします。それ以外の場合は、[デフォルトの組織レベル値] ヘッダーの上にある [新規] をクリックします。

      テナントの詳細

    5. [ランタイムクライアントトークン] フィールドに、コピーしたランタイムクライアントのトークンを貼り付けます。[URL] フィールドが、 CPQ アドミンのランタイムクライアントの 1 つの [作成元] と同じ URL に設定されていることを確認します。

      テナント編集画面

    6. [Save (保存)] を選択します。

    Visualforce ページへのアクセスの設定

    1. [セットアップ] ホームから、[機能の設定] > [デジタルエクスペリエンス] > [すべてのサイト] に移動します。
    2. ストアの [ワークスペース] をクリックします。

      ホームページ画面

    3. 管理>ページに移動し> アプリケーション開発用の Salesforce プラットフォームに移動します。

      管理ページ

    4. [Site Visualforce ページ] で、[ 編集] をクリックします。
    5. commerceConfigurationWindow を [利用可能] から [有効] に移動して保存します。

      Visualforce ページ

    エクスペリエンスビルダーの構成

    1. Commerce ホームページから、エクスペリエンス ビルダーを開きます。
    2. 左上の [ ホーム ] をクリックして、ページのリストを開きます。[製品] を検索またはナビゲートして、[ 製品の詳細] をクリックします。既存の [製品詳細] ページにカスタム [ログ] ボタンを追加するか、パッケージ化されたページをバリエーションとして使用します。

      製品詳細

      • 既存のページにボタンを追加するには:
        1. 左側の稲妻をクリックし、[カスタムコンポーネント] (リストの最後のセクション) に移動します。
        2. コンフィギュレーターをリストからドラッグし、レイアウト内の目的の場所に移動します。

          コンフィギュレーター

      • パッケージ化されたページをバリエーションとして使用するには:
        1. 左上のページナビゲーションメニューを再度開きます。
        2. [Product Detail] オプションで、3 つのドットをクリックし、[Page Variations (ページバリエーション)] タブに移動します。
        3. [新しいページバリエーション] をクリックし、レイアウトとして [構成可能な製品詳細] を選択します。

          新規ページ画面

        4. バリエーションに名前を付け、[ 作成] をクリックします。

    カート API に追加

    エンドポイント: /services/apexrest/add-to-cart

    メソッド:application/json を受信して返します

    POST:現在アクティブな買い物かごにアイテムを追加するために使用します。(買い物かごがアクティブでない場合は、買い物かごが作成されます)。次のものが必要です。

    • configurableProductId
    • configurationId
    • webstoreId
    • effectiveAccountId
    注:
    webstoreIdeffectiveAccountId は Salesforce Commerce の標準 API の一部であるため、ユーザーが情報をすぐに利用できるようにする必要があります。

    configurableProductIdconfigurationId は、同じ構成可能製品に対応する必要があります。

    PATCH:指定した買い物かごにアイテムを追加するために使用します。次のものが必要です。
    • configurableProductId
    • configurationId
    • カート 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"
    	}
    ]