스마트스토어에서 상품을 대량으로 올려서 팔고 있습니다. 말이 대량이긴 한데, 아직 3천 건 정도밖에 안되긴 합니다.
그래서, 이 상품들을 쿠팡과 다른 온라인 마켓에 올려보려고 합니다.
일단 계획은 네이버 커머스 API를 통해 상품 정보를 가져오고 이 정보를 이용해서 쿠팡 API로 자동으로 상품 등록을 해보려고 합니다.
Table Of Contents
1. 네이버 커머스 API 센터
먼저 네이버 커머스 API 센터에서 상품 정보를 가져와서 이 정보들을 쿠팡의 상품으로 등록할 정도의 정보가 나오는지 확인해 봐야합니다.
네이버 커머스 API 센터에 대한 스펙은 아래 링크에서 보실 수 있습니다. 이 API를 사용하려면 스마트스토어에 사업자로 가입하고 커머스 API 키를 생성해야합니다. 이 부분에 대한 내용은 다루지 않습니다.
먼저 상품 정보를 가져오려먼 원상품 정보 구조체에 대해서 알아야합니다.
위의 구조체 정보를 얻기 위해서는 원상품조회를 해야합니다.
이 원상품 조회를 위해서는 아래 링크에 확인되는 주소로 http GET을 날리면 됩니다.
2. 쿠팡 API 키 발급 및 조회
쿠팡 Open API를 이용하려면 먼저 API 키가 필요합니다.
쿠팡 API 키 발급
STEP 1: 쿠팡 파트너 어드민 사이트인 쿠팡 윙 사이트에 로그인합니다.
STEP 2: 로그인 후, API 관리 메뉴에서 API 보안 키 발급을 신청합니다. 여기서 Access Key ID와 Secret Key를 발급받을 수 있습니다. 이 키는 API 호출 시에 사용되므로 안전하게 보관합니다.
아래 링크에서도 추가 정보를 확인해 보실 수 있습니다.
쿠팡 OpenAPI Key 발급받기 – Open APIs (coupangcorp.com)
쿠팡 API 키 조회
이미 API 키를 발급 받은 경우 다음과 같이 조회가 가능합니다. 우측 상단의 셀러 이름을 클릭 후 아래에 "추가판매정보"를 누릅니다.
api 키를 조회한 후에는 api키를 이용해서 header를 생성해야합니다.
이를 하는 예제는 아래 링크에서 확인하실 수 있습니다.
저의 경우 다음과 같이 작성해 보았습니다.
import time
import hmac
import hashlib
import base64
import urllib.parse
class CoupangAuth:
def __init__(self, access_key, secret_key):
self.access_key = access_key
self.secret_key = secret_key
def generate_headers(self, method, path, query_params=None):
# GMT 타임스탬프 생성
datetime = time.strftime('%y%m%d') + 'T' + time.strftime('%H%M%S') + 'Z'
# 쿼리 문자열 생성
query = urllib.parse.urlencode(query_params) if query_params else ""
# 메시지 생성 (datetime, method, path, query 순서)
message = datetime + method + path + query
# HMAC SHA256 서명 생성
signature = hmac.new(self.secret_key.encode('utf-8'), message.encode('utf-8'), hashlib.sha256).hexdigest()
# Authorization 헤더 생성
authorization = (
f"CEA algorithm=HmacSHA256, access-key={self.access_key}, "
f"signed-date={datetime}, signature={signature}"
)
# 헤더 반환
return {
'Authorization': authorization,
'Content-Type': 'application/json;charset=UTF-8'
}
3. 쿠팡 상품 등록 절차 이해하기
이제 API 키로 secretkey와 accesskey를 받으면 쿠팡 상품등록 절차를 이해해야합니다.
문서 전체 내용은 다음 링크를 참고하세요. 360058932551
위의 쿠팡 로직에 따라 진행해야하는데, 출고지 반품지 를 생성하는 로직과 기존 코드를 조회해서 가져오는 방법이 있습니다.
저의 경우 아래와 같이 이미 생성해 놓은 출고지/반품지가 있습니다. 이는 쿠팡 윙에서 주소록/배송정보 관리에서 확인할 수 있습니다.
4. 물류센터 API로 반품지와 출고지 코드 가져오기
이제 위의 반품지와 출고지의 코드를 가져와야 합니다. 해당 API는 물류센터 API를 통해 확인할 수 있습니다.
위의 물류센터 API에 가면 아래와 같이 출고지 조회와 반품지 목록 조회를 통해서 각각의 코드를 가져올 수 있습니다.
출고지는 outboundShippingPlaceCode로 json 형태로 반환되며, 반품지는 returnCenterCode로 반환됩니다.
이를 가져오는 코드를 다음과 같이 작성할 수 있습니다.
def get_shipping_place(self, page_size=10, page_num=1, place_codes=None, place_names=None):
path = "/v2/providers/marketplace_openapi/apis/api/v1/vendor/shipping-place/outbound"
params = {"pageSize": page_size, "pageNum": page_num}
if place_codes:
params["placeCodes"] = ",".join(map(str, place_codes))
if place_names:
params["placeNames"] = place_names
url = self.base_url + path
headers = self.auth.generate_headers("GET", path)
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
data = response.json()
return [item["outboundShippingPlaceCode"] for item in data.get("content", [])]
else:
response.raise_for_status()
def get_return_center(self, vendor_id, page_num=1, page_size=10):
path = f"/v2/providers/openapi/apis/api/v4/vendors/{vendor_id}/returnShippingCenters"
params = {"pageNum": page_num, "pageSize": page_size}
url = self.base_url + path
headers = self.auth.generate_headers("GET", path)
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
data = response.json()
return [item["returnCenterCode"] for item in data.get("data", {}).get("content", [])]
else:
response.raise_for_status()
5. 카테고리 정하기
이제 카테고리 API를 통해서 카테고리 정보를 가져와야합니다.
그런데, 쿠팡에서는 카테고리 자동매칭 서비스가 있어서 이를 이용할 수 있습니다.
아래의 설명을 참고하면, 상품생성 API에서 displayCategoryCode와 notices 값을 입력하지 않은 상태로 상품생성 API를 호출하면 된다고 합니다.
이제 카테고리 자동매칭 서비스를 이용하겠다고 등록만 하면 됩니다.
위의 설명에 나온것 처럼 추가판매정보에서 카테고리 자동매칭 서비스 동의를 해 줍니다.
추가판매정보에서 "OPEN API 키 발급" 항목에 보면 카테고리 자동매칭 이용동의가 있습니다. 이것을 동의해 주시면 아래와 같이 이용동의 완료로 나타납니다.
자~ 이제 상품 등록을 위한 1차적인 준비는 끝났습니다.
이제는 네이버에서 상품 정보를 가져와서 쿠팡의 상품 생성 API를 채워서 호출을 하면 됩니다.
포스팅이 길어져서 다음 포스팅에서 이어서 진행해 보겠습니다.
'IT' 카테고리의 다른 글
HP 노트북의 에러 없애기 - HP Client Security 제거로 DPPassFilter.dll 오류 해결 (3) | 2024.11.04 |
---|---|
쿠팡 API를 이용하여 상품 업로드 시 인증 에러 원인과 처리 방법 (6) | 2024.10.31 |
우분투 20.04 리눅스에서 crontab(크론탭)으로 주기적인 작업 자동화하기 (0) | 2024.10.21 |
우분투에서 크롬 드라이버와 Selenium으로 headless(헤드리스) 웹 크롤링 문제 해결하기 (1) | 2024.09.23 |
파이썬으로 웹 페이지 크롤링 - 홈페이지 로그인 하기 (1) | 2024.09.23 |