CPQ Salesforce B2B Commerce와 통합

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 12분
  • Salesforce B2B Commerce와 함께 작동하도록 구성 CPQ 하는 방법에 대해 알아봅니다.

    필수 구성요소

    이 가이드에서는 다음을 전제로 합니다.

    • Salesforce에서 상거래가 활성화됩니다.
    • 기본 관리 패키지가 CPQ 설치되어 있습니다.
    • 나열된 단계를 수행하기 위해 시스템 관리자 또는 이와 유사한 액세스 권한을 사용할 수 있습니다.

    Salesforce에 파일 설치

    1. 아직 설치되지 않은 경우 다음 지침에 따라 Salesforce 명령줄 인터페이스(CLI)를 다운로드하여 설치합니다.

      Salesforce CLI 설치

    2. github.com 에서 B2B 통합에 사용되는 구성요소가 포함된 logik-b2b.zip 파일을 다운로드하여 압축을 풉니다.
      • Mac의 경우 파일을 이중 클릭하십시오. 해당 콘텐츠는 동일한 위치에서 자동으로 추출됩니다.
      • Windows에서는 마우스 오른쪽 버튼을 클릭하고 모두 추출을 선택합니다. 화면에 나타나는 프롬프트를 따릅니다.

      A. 다음을 참조하십시오.

    3. 터미널(Mac 또는 Linux) 또는 PowerShell(Windows)을 시작합니다.
    4. 추출한 파일이 포함된 디렉터리로 이동합니다. 예를 들어 다운로드 폴더에서 파일의 압축을 푼 경우 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에서 제품을 구성할 프로필에 대해 Visible 옵션이 선택되어 있고 Read-Only가 선택되어 있지 않은지 확인한 다음 저장 을 클릭합니다.

      구성 화면

    Product2 필드에 대해 유사한 단계 세트를 따라야 합니다.

    1. Object Manager에서 제품(제품 2)을 검색하여 엽니다.
    2. 필드 및 관계로 이동합니다. 활성화됨(LGK__IsConfigurable__c) 필드 CPQ 를 엽니다.
    3. "필드 수준 보안 설정"을 클릭합니다. 모든 소비자 프로파일에 대해 표시 옵션이 선택되어 있는지 확인합니다. 읽기 전용을 사용하거나 사용하지 않도록 설정할 수 있습니다.
    4. 저장.

    카트에 추가 API를 사용하는 경우 더 많은 필드 수준 보안 권한이 필요합니다. 먼저 Object Managed에서 구성 라인 항목(LGK ConfigurationLineItem c)을 검색하고 엽니다. 그런 다음 소비자 프로필에 다음 필드에 대해 필드 수준 보안이 표시되는지 확인합니다.

    • 수량
    • ProductId
    • 가격
    • ConfigurationId
    • 유형

    또한 다음 CartItem 필드를 Visible로 설정해야 합니다(읽기 전용은 선택하지 않아야 함).

    • ConfigurationId(UI 통합을 위해 이미 수행했어야 함)
    • 수량
    • ProductId
    • 가격
    • 유형

    런타임 토큰 획득 및 적용

    1. Logik에서 원본이 Logik 기본 URL과 일치하는 런타임 클라이언트를 만듭니다. 복사를 클릭하여 클라이언트 토큰을 가져옵니다.

      런타임 클라이언트 편집

    2. Salesforce의 설정 홈에서 사용자 지정 코드 > 사용자 지정 설정으로 이동합니다.
    3. Logik 테넌트의 경우 관리를 클릭합니다.

      사용자 지정 설정 화면

    4. 설정이 이미 있는 경우 "편집"을 클릭합니다. 그렇지 않으면 "기본 조직 수준 값" 헤더 위의 "새로 만들기"를 클릭합니다.

      테넌트 상세 정보

    5. 런타임 클라이언트 토큰 필드에 런타임 클라이언트에 대해 복사한 토큰을 붙여넣습니다. URL 필드가 관리자에서 CPQ 런타임 클라이언트의 원본 중 하나와 동일한 URL로 설정되어 있는지 확인하십시오.

      테넌트 화면 편집

    6. 저장.

    Visualforce 페이지 접근 설정

    1. 설정 홈에서 모든 사이트> 기능 설정 > 디지털 경험으로 이동합니다.
    2. 스토어의 경우 작업 공간을 클릭합니다.

      홈페이지 화면

    3. 관리 > 페이지로 이동> 애플리케이션 개발용 Salesforce 플랫폼으로 이동합니다.

      관리자 페이지

    4. "사이트 Visualforce 페이지"에서 편집을 클릭합니다.
    5. commerceConfigurationWindow를 사용 가능에서 사용으로 이동하고 저장합니다.

      Visualforce 페이지

    경험 빌더 구성

    1. Commerce 홈페이지에서 경험 빌더를 엽니다.
    2. 왼쪽 상단의 을 클릭하여 페이지 목록을 엽니다. 제품을 검색하거나 이동한 후 제품 상세 정보를 클릭합니다. 기존 제품 상세 페이지에 사용자 지정 Logik 버튼을 추가하거나 패키지된 페이지를 변형으로 사용합니다.

      제품 세부 정보

      • 기존 페이지에 단추를 추가하려면 다음을 수행합니다.
        1. 왼쪽의 번개를 클릭하고 사용자 지정 구성 요소(목록의 마지막 섹션)로 이동합니다.
        2. 목록에서 구성기를 끌어서 레이아웃에서 원하는 위치로 이동합니다.

          구성기

      • 패키지된 페이지를 변형으로 사용하려면 다음을 수행합니다.
        1. 왼쪽 위에 있는 페이지 탐색 메뉴를 다시 엽니다.
        2. 제품 세부 정보 옵션에서 세 개의 점을 클릭하고 페이지 변형 탭으로 이동합니다.
        3. 새 페이지 변형을 클릭하고 레이아웃으로 "구성 가능한 제품 상세 정보"를 선택합니다.

          새 페이지 화면

        4. 변형에 이름을 지정하고 만들기를 클릭합니다.

    카트에 추가 API

    엔드포인트: /services/apexrest/add-to-cart

    메서드: application/json 수신 및 반환

    게시: 현재 활성 카트에 항목을 추가하는 데 사용합니다. (카트가 활성 상태가 아니면 카트가 생성됩니다.) 다음이 필요합니다.

    • configurableProductId
    • configurationId
    • webstoreId
    • effectiveAccountId
    주:
    webstoreIdeffectiveAccountId 는 Salesforce Commerce의 표준 API의 일부이므로 사용자가 정보를 쉽게 사용할 수 있어야 합니다.

    configurableProductIdconfigurationId 는 동일한 구성 가능한 제품에 해당해야 합니다.

    패치: 지정된 카트에 항목을 추가하는 데 사용합니다. 다음이 필요합니다.
    • 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"
    	}
    ]