CPQ Salesforce B2B Commerce와 통합
Salesforce B2B Commerce와 함께 작동하도록 구성 CPQ 하는 방법에 대해 알아봅니다.
필수 구성요소
이 가이드에서는 다음을 전제로 합니다.
- Salesforce에서 상거래가 활성화됩니다.
- 기본 관리 패키지가 CPQ 설치되어 있습니다.
- 나열된 단계를 수행하기 위해 시스템 관리자 또는 이와 유사한 액세스 권한을 사용할 수 있습니다.
Salesforce에 파일 설치
- 아직 설치되지 않은 경우 다음 지침에 따라 Salesforce 명령줄 인터페이스(CLI)를 다운로드하여 설치합니다.
- github.com 에서 B2B 통합에 사용되는 구성요소가 포함된 logik-b2b.zip 파일을 다운로드하여 압축을 풉니다.
- Mac의 경우 파일을 이중 클릭하십시오. 해당 콘텐츠는 동일한 위치에서 자동으로 추출됩니다.
- Windows에서는 마우스 오른쪽 버튼을 클릭하고 모두 추출을 선택합니다. 화면에 나타나는 프롬프트를 따릅니다.
A. 다음을 참조하십시오.
- 터미널(Mac 또는 Linux) 또는 PowerShell(Windows)을 시작합니다.
- 추출한 파일이 포함된 디렉터리로 이동합니다. 예를 들어 다운로드 폴더에서 파일의 압축을 푼 경우
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에서 제품을 구성할 프로필에 대해 Visible 옵션이 선택되어 있고 Read-Only가 선택되어 있지 않은지 확인한 다음 저장 을 클릭합니다.
Product2 필드에 대해 유사한 단계 세트를 따라야 합니다.
- Object Manager에서 제품(제품 2)을 검색하여 엽니다.
- 필드 및 관계로 이동합니다. 활성화됨(LGK__IsConfigurable__c) 필드 CPQ 를 엽니다.
- "필드 수준 보안 설정"을 클릭합니다. 모든 소비자 프로파일에 대해 표시 옵션이 선택되어 있는지 확인합니다. 읽기 전용을 사용하거나 사용하지 않도록 설정할 수 있습니다.
- 저장.
카트에 추가 API를 사용하는 경우 더 많은 필드 수준 보안 권한이 필요합니다. 먼저 Object Managed에서 구성 라인 항목(LGK ConfigurationLineItem c)을 검색하고 엽니다. 그런 다음 소비자 프로필에 다음 필드에 대해 필드 수준 보안이 표시되는지 확인합니다.
- 수량
- ProductId
- 가격
- ConfigurationId
- 유형
또한 다음 CartItem 필드를 Visible로 설정해야 합니다(읽기 전용은 선택하지 않아야 함).
- ConfigurationId(UI 통합을 위해 이미 수행했어야 함)
- 수량
- ProductId
- 가격
- 유형
런타임 토큰 획득 및 적용
-
Logik에서 원본이 Logik 기본 URL과 일치하는 런타임 클라이언트를 만듭니다. 복사를 클릭하여 클라이언트 토큰을 가져옵니다.
- Salesforce의 설정 홈에서 사용자 지정 코드 > 사용자 지정 설정으로 이동합니다.
-
Logik 테넌트의 경우 관리를 클릭합니다.
-
설정이 이미 있는 경우 "편집"을 클릭합니다. 그렇지 않으면 "기본 조직 수준 값" 헤더 위의 "새로 만들기"를 클릭합니다.
-
런타임 클라이언트 토큰 필드에 런타임 클라이언트에 대해 복사한 토큰을 붙여넣습니다. URL 필드가 관리자에서 CPQ 런타임 클라이언트의 원본 중 하나와 동일한 URL로 설정되어 있는지 확인하십시오.
- 저장.
Visualforce 페이지 접근 설정
- 설정 홈에서 모든 사이트> 기능 설정 > 디지털 경험으로 이동합니다.
-
스토어의 경우 작업 공간을 클릭합니다.
-
관리 > 페이지로 이동> 애플리케이션 개발용 Salesforce 플랫폼으로 이동합니다.
- "사이트 Visualforce 페이지"에서 편집을 클릭합니다.
-
commerceConfigurationWindow를 사용 가능에서 사용으로 이동하고 저장합니다.
경험 빌더 구성
- Commerce 홈페이지에서 경험 빌더를 엽니다.
-
왼쪽 상단의 홈 을 클릭하여 페이지 목록을 엽니다. 제품을 검색하거나 이동한 후 제품 상세 정보를 클릭합니다. 기존 제품 상세 페이지에 사용자 지정 Logik 버튼을 추가하거나 패키지된 페이지를 변형으로 사용합니다.
- 기존 페이지에 단추를 추가하려면 다음을 수행합니다.
- 왼쪽의 번개를 클릭하고 사용자 지정 구성 요소(목록의 마지막 섹션)로 이동합니다.
-
목록에서 구성기를 끌어서 레이아웃에서 원하는 위치로 이동합니다.
- 패키지된 페이지를 변형으로 사용하려면 다음을 수행합니다.
- 왼쪽 위에 있는 페이지 탐색 메뉴를 다시 엽니다.
- 제품 세부 정보 옵션에서 세 개의 점을 클릭하고 페이지 변형 탭으로 이동합니다.
-
새 페이지 변형을 클릭하고 레이아웃으로 "구성 가능한 제품 상세 정보"를 선택합니다.
- 변형에 이름을 지정하고 만들기를 클릭합니다.
- 기존 페이지에 단추를 추가하려면 다음을 수행합니다.
카트에 추가 API
엔드포인트: /services/apexrest/add-to-cart
메서드: application/json 수신 및 반환
게시: 현재 활성 카트에 항목을 추가하는 데 사용합니다. (카트가 활성 상태가 아니면 카트가 생성됩니다.) 다음이 필요합니다.
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"
}
]