> For the complete documentation index, see [llms.txt](https://workspace-help.nhn-commerce.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://workspace-help.nhn-commerce.com/aurora-guide/api-1/product-detail/product-summary.md).

# 상품 기본 정보

<figure><img src="/files/B9KSIMCMSzhdAwXnhIAX" alt=""><figcaption></figcaption></figure>

* 🅐 [상품 기본정보](#undefined)
* 🅑 [옵션 정보](#undefined-1)
* 🅒 [쿠폰 다운받기](#undefined-3)
* 🅓 [좋아요 버튼](#undefined-4)
* 🅔 [장바구니 버튼](#undefined-5)
* 🅕 [구매하기 버튼](#undefined-6)

***

### 🅐 상품 기본 정보

> [GET /products/{productNo}](https://docs.shopby.co.kr/?url.primaryName=product/#/Product/get-products-product)
>
> ► 상품 상세 조회하기\
> 해당 상품번호 {productNo}에 대한 상세 정보를 조회합니다.&#x20;

해당 상품 정보에 대한 상품 이미지 URL, 상품 기본정보, 상세 정보, 배송/반품/교환, 후기, 문의, 관련상품 등의 정보를 조회할 수 있습니다.&#x20;

엔드 포인트 URL에 따라 본 화면을 구성하는 여러가지 데이터를 불러오며, 영역별로 API를 소개합니다.&#x20;

***

### 🅑 옵션 정보

<figure><img src="/files/1ab70JSiIHamG4kKaVo3" alt=""><figcaption></figcaption></figure>

쇼핑몰에서 판매할 상품을 등록할 때, '상품 (예시 : 오로라 수딩 세럼)' 에 대한 '옵션 (예시 : 30ml, 50ml, 100ml)'을 설정할 수 있습니다.&#x20;

아래 어드민 경로에서 2가지 형태의 옵션 기능을 제공합니다.&#x20;

{% code overflow="wrap" %}

```
shop by basic/pro : 상품 > 상품 관리 > 상품 등록 > 일반 상품 > 판매정보 > 옵션 사용 여부 '사용함'
shop by premium : 상품관리 > 상품등록 > 일반 상품 > 판매정보 > 옵션 사용 여부 '사용함'
```

{% endcode %}

### ◼︎ 옵션 유형

#### ⓐ 선택형 옵션 (조합형)

쇼핑몰 고객이 선택하는 형태의 옵션입니다.\
shop by 에서는 여러 옵션을 조합하는 '선택형(조합형) 옵션' 형태를 제공하고 있습니다.&#x20;

노출 방식에 따라 '분리형'과 '일체형' 2가지 유형으로 구분됩니다.

* 분리형 옵션 multiLevelOptions : 각 옵션 별로 계층(단계)를 구분하여 셀렉트 박스를 제공합니다.
* 일체형 옵션 flatOptions : 쇼핑몰 고객이 선택할 수 있는 옵션을 모두 리스트업 하여 셀렉트 박스를 제공합니다.

<div><figure><img src="/files/iBDWirCS9zgQHFblVwU4" alt=""><figcaption><p>분리형 옵션</p></figcaption></figure> <figure><img src="/files/yWCpWNmD1g5JJrQg2W1Y" alt=""><figcaption><p>일체형 옵션</p></figcaption></figure></div>

#### ⓑ 텍스트 옵션

쇼핑몰 고객이 직접 옵션값을 입력하는 형태입니다.\
어드민에서 '매칭타입'에 따라 상품별 / 옵션별로 텍스트 옵션을 노출할 수 있습니다.

* 상품별 : 쇼핑몰 고객이 상품 당 1개의 텍스트 옵션만 입력할 수 있습니다.
* 옵션별 : 각 옵션별로 개별 텍스트 옵션을 입력할 수 있습니다.
* 수량별 : 설정한 수량만큼 텍스트 옵션을 입력할 수 있습니다.

<div><figure><img src="/files/yHaeU69OrEuqf7pMdrft" alt=""><figcaption><p>상품별</p></figcaption></figure> <figure><img src="/files/jjySycdFZIj5vhin3r7V" alt=""><figcaption><p>옵션별</p></figcaption></figure> <figure><img src="/files/rUURNMg5EMgVXja8IdL6" alt=""><figcaption><p>수량별</p></figcaption></figure></div>

### ◼︎ 옵션 조회 API

{% hint style="info" %}
상품을 구매하는 기준은 '상품 단위'가 아니라 '옵션 단위' 입니다.&#x20;
{% endhint %}

상품의 옵션 단위로 주문이 진행되므로 옵션이 없는 상품은 없습니다.\
어드민에서 옵션 없는 상품으로 등록한 경우, 내부적으로는 자동으로 하나의 옵션이 생성됩니다.&#x20;

따라서 쇼핑몰 고객이 실제로 상품을 구매하기 위해서는\
본 화면에서 GET /products/{productNo}와 함께 아래 옵션 조회 API를 반드시 호출해야 합니다.

> [GET /products/{productNo}/options](https://docs.shopby.co.kr/?url.primaryName=product/#/Product/get-product-options)
>
> ► 상품 옵션 조회하기 \
> 해당 상품번호(productNo)에 대한 옵션 정보를 조회합니다.

#### **◼︎ TYPE**

* 선택형 옵션 및 텍스트 옵션을 선택할 수 있습니다.&#x20;
* 만약 어드민에서 옵션 사용 여부를 '사용 안 함'으로 설정한 경우 응답 값이 Default로 내려옵니다.

#### **◼︎ flatOptions**

* 일체형 옵션 (각 옵션들의 조합으로 생성되는 모든 옵션을 쭉 나열한 데이터)&#x20;
* selectType에서 flat 선택 시 flatLevelOptions 값을 활용

<div align="left"><figure><img src="/files/Q15Y9QrI0aFxD7dvHZD3" alt=""><figcaption></figcaption></figure></div>

#### **◼︎ multuLevelOptions**

* 분리형 옵션 (계층 구조로 구성된 옵션 데이터)
* selectType 에서 multi 선택 시 multiLevelOptions 값을 활용

<figure><img src="/files/r9owM7eFW4X1oqFWkdqE" alt=""><figcaption></figcaption></figure>

#### ◼︎ input

* inputLabel 텍스트 옵션 내 입력 문구를 의미합니다.
* ex) 최근에 생산된 상품으로 보내주세요.

***

### 🅒 쿠폰 다운받기

쇼핑몰 고객이 현재 다운로드 받을 수 있는 쿠폰 리스트와 쿠폰을 다운받을 수 있는 팝업을 노출합니다.\
상품 기본 정보에서 \[쿠폰받기] 버튼 클릭 시 쿠폰 다운로드 팝업을 출력합니다.

<figure><img src="/files/8GPgagSZoi3SMUQzUygi" alt=""><figcaption></figcaption></figure>

> [GET /coupons/products/issuable/coupons](https://docs.shopby.co.kr/?url.primaryName=promotion/#/Coupon/get-issuable-coupons-by-product-nos)
>
> ► 상품번호 리스트별 발급 가능한 쿠폰 조회하기
>
> 본 상품과 추가상품에서 발급 가능한 모든 쿠폰을 조회합니다.

쿠폰 다운받기 팝업에서, \[쿠폰받기] / \[쿠폰 한번에 받기] 버튼 클릭 시 로그인 여부를 체크 후 쿠폰을 다운로드 합니다.

\[쿠폰받기] 버튼 클릭 시 개별로 쿠폰을 다운로드합니다.

> [POST /coupons/{couponNo}/download](https://docs.shopby.co.kr/?url.primaryName=promotion/#/Coupon/post-download-coupons)
>
> ► 쿠폰 발급하기
>
> 선택한 쿠폰번호에 해당하는 다운로드 쿠폰을 발급 받습니다.

\[쿠폰 한번에 받기] 버튼 클릭 시 상품번호 리스트 별로 발급 가능한 모든 쿠폰을 다운로드 합니다.

> [POST /coupons/products/download](https://docs.shopby.co.kr/?url.primaryName=promotion/#/Coupon/post-download-coupons-bulk-by-product-nos)
>
> ► 상품번호 리스트별 발급 가능한 쿠폰을 다운로드 하기\
> 본 상품과 추가상품에서 다운로드 받을 수 있는 모든 쿠폰을 발급합니다.

상품번호(productNo) 리스트로 해당 상품에서 다운받을 수 있는 모든 쿠폰을 발급합니다. 추가상품이 설정된 경우, 본 상품과 추가상품의 상품번호 리스트를 활용합니다.

아래 어드민 경로의 설정에 따라 정보가 노출됩니다.

```
shop by basic/pro : 프로모션 > 혜택관리 > 쿠폰 관리
shop by premium : 프로모션관리 > 할인쿠폰 관리
```

#### ⓐ 출력되는 쿠폰

* 발급 유형 : 다운로드 발급
* 발급 상태 : 발급중
* 해당 상품이 대상 상품인 쿠폰
* 즉시 할인가를 기준으로 할인되는 금액이 높은 순으로 쿠폰을 정렬
* 할인 금액이 동일하다면 주문 쿠폰이 상품 쿠폰보다 상단에 출력
* 할인되는 금액 및 혜택 구분이 모두 동일하다면 쿠폰 등록일 기준 최신순으로 출력

#### ⓑ 혜택

* 정률로 설정 시 % 출력, 정액으로 설정 시 금액 출력
* 쿠폰 유형 (주문적용 쿠폰 → 주문 할인 / 상품적용 쿠폰 → 상품 할인)
* 최대 할인금액 (할인 금액을 정률로 설정한 경우에만 노출)
* 최소 기준금액 (최소 금액을 설정하는 경우 노출)

#### ⓒ 다운로드 버튼

* 발급 시 (회원 별 발급 수량 제한이 있을 경우) '발급 완료' 표기
* 발급 불가 쿠폰의 경우 안내 문구 출력\
  (발급 대상 회원 등급일 경우 / 발급 불가한 시간, 요일인 경우 / 쿠폰의 일별 총 발급 수량 소진 시)

***

### 🅓 좋아요 버튼

해당 상품을 좋아요 상품 리스트에 추가/삭제 할 수 있습니다. \
좋아요 기능은 쇼핑몰 회원(member)의 경우에만 사용 가능하므로, 버튼 클릭 시 로그인 여부를 확인해야 합니다.

* 비회원(guest)
  * 비회원의 경우 좋아요 기능을 지원하지 않습니다.
  * 좋아요 버튼 클릭 시 로그인 여부를 확인하여, 미로그인(비회원)시 서비스이용불가 안내창 노출 후 로그인 페이지로 현재창 이동해야 합니다.
* 회원(member)
  * 로그인한 상태에서 좋아요 버튼 클릭 시, 아래 POST /profile/like-products를 호출합니다.
  * 해당 API로 좋아요가 적용된 상품은 [마이페이지\_쇼핑정보](https://nhnent.dooray.com/share/pages/WoOk8q6KT1K3MZcLSuyZsw/3519672284532356682) 내 '좋아요' 리스트에 추가됩니다.

> [POST /profile/like-products](https://docs.shopby.co.kr/?url.primaryName=product/#/Profile/post-profile-like-products)
>
> ▶ 회원이 상품을 좋아한다고 추가/삭제하기\
> 회원이 좋아요한 상품을 목록에 추가하거나 삭제합니다

***

### 🅔 장바구니 버튼&#x20;

선택한 상품을 옵션 단위로 장바구니에 추가하는 기능입니다.\
장바구니(cart) 버튼 클릭 시, 상품 옵션 선택 여부를 확인 후 [장바구니 화면](/aurora-guide/api-1/cart.md)으로 이동합니다.&#x20;

<div align="left"><figure><img src="/files/2CqIJoelsg2DZ2gL8BBj" alt="" width="563"><figcaption></figcaption></figure></div>

장바구니 버튼 기능은 쇼핑몰 회원 여부와 상관없이 제공합니다.\
단, 회원인 경우에만 API를 호출하며 비회원인 경우 API 호출이 아닌 localStorage에 자체적으로 저장합니다.

* 회원(member)
  * 로그인한 상태에서 장바구니 담기 버튼 클릭 시, 아래 POST /cart를 호출하여 선택한 상품의 옵션이 장바구니에 추가됩니다.&#x20;

> [POST /cart](https://docs.shopby.co.kr/?url.primaryName=order/#/Cart/post-cart)
>
> ▶ 장바구니 등록하기\
> 로그인 회원의 상품 구매 수량과 옵션을 장바구니에 등록합니다.

* 비회원(guest)
  * 비회원인 경우에도 장바구니 담기 버튼을 제공합니다.
  * 단, API 호출이 아닌 localStorage 내 비회원 장바구니 데이터를 자체적으로 관리해야 합니다.
  * localStorage에 비회원 장바구니 데이터 저장 시, POST /cart의 request body와 동일한 데이터 형식으로 저장해야 합니다. 이후 상품 상세화면 혹은 장바구니 화면에서 주문서 호출 시 request 형식을 통일하기 위한 목적입니다.

***

### 🅕 구매하기 버튼&#x20;

<div align="left"><figure><img src="/files/EEFZjNZ4a6ACMJFxO9qn" alt="" width="563"><figcaption></figcaption></figure></div>

버튼 클릭 시 우선 로그인 여부를 확인한 뒤 POST /order-sheets API로 주문서를 생성합니다.\
만약 미로그인(비회원)일 경우에는 해당 API로 비회원 주문을 진행합니다.&#x20;

> [POST /order-sheets](https://docs.shopby.co.kr/?url.primaryName=order/#/OrderSheet/post-order-sheet)
>
> ► 주문서 생성 요청\
> 선택한 상품의 옵션에 대한 주문서를 생성합니다.

주문서를 생성하는 API로 주문서 화면으로 이동하기 전 단계에서 호출해야 합니다.\
해당 API에서 응답 값으로 획득한 주문서 번호 orderSheetNo를 [주문서 화면](/aurora-guide/api-1/order-sheet-form.md)으로 전달합니다. \
비회원 주문인 경우 accessToken을 null로 보냅니다.&#x20;
