본문 바로가기
IT

쿠팡 API를 이용하여 상품 업로드 시 인증 에러 원인과 처리 방법

by developer's warehouse 2024. 10. 31.

지난시간에 네이버 스마트스토어 상품을 가져다 쿠팡 API로 쿠팡에 업로드 하는 방법 첫번째 시간을 가졌었습니다.

오늘은 쿠팡 API 연동시 발생하는 인증 에러 관련해서 처리 방법을 알아보겠습니다.

401 Unauthorized 오류

쿠팡의 openAPI는 한 업체에 하나의 앱만 연결 가능합니다. 그러므로, 자체개발하는 경우 다른 툴 연동은 안된다고 보시면 됩니다.

OpenAPI Key가 정상적으로 등록되어있지 않으면 401 Unauthorized 에러가 발생합니다.

쿠팡 API 자주 묻는 질문중 Key 여러개 문의

자체개발 Key 등록하기

OPEN API를 발급 받으면 업체를 입력해야하는데, "판매자정보 > 추가판매정보"로 이동해서 OPEN API 키 수정 항목을 눌러서 "자체개발"을 입력해 주시면 됩니다.

업체명과 URL, IP 주소를 넣으면 되는데, 업체명은 본인 업체 이름넣으면 됩니다.

URL의 경우에는 따로 업체 URL이 없으시면 wing.coupang.com을 입력하시면 됩니다.

마지막으로 IP 주소를 넣어야 하는데, 이 때 IP 주소는 아래 링크를 눌러서 확인하시면 됩니다.

내 공인 IP 주소를 가장 빠르게 찾는 방법 - the fastest way to find a my public IP address

 

내 공인 IP 주소를 가장 빠르게 찾는 방법 - the fastest way to find a my public IP address

IT 정보와 소프트웨어 개발, 엔지니어링, Database, 프로그래밍, Kafka, C, JAVA, blog, search engine, open source

it.wellife.info

 

혹시 쿠팡 API 사용하시다가 아래와 같이 인증 에러가 나타나면, IP 주소가 맞는지 먼저 확인해 보시는게 좋습니다.

<HTTPError 401: 'Unauthorized'>

 

"Specified signature is expired." 에러가 발생하는 경우

 

쿠팡 API는 서명 생성 시 UTC 시간을 요구하기 때문에 UTC 기준으로 작성해야합니다.

그런데, 쿠팡에 있는 파이썬 예제 프로그램에 버그가 있어서 정상 동작하지 않습니다.


방법 1 timezone을 GMT+0으로 설정.

쿠팡 오픈 API 예제 소스는 아래와 같이 되어있는데, 이렇게 하면 UTC 시간을 얻을 수 없습니다.

쿠팡이 셀러나 개발자에게 불친절한 것 같다는 생각이 들었는데, 아래 코드가 정상 동작을 하지 않아서 1:1 문의를 했더니, 다른 사람 코드는 디버깅 해줄 수 없다네요... ㅎㅎㅎ

제 코드가 아니라 샘플이 안된다고 했는데.. 무슨 말을 하는건지... 그러면서 샘플은 그냥 참고용이라고 합니다.

 

그럼 쿠팡 API 예제를 보여드리겠습니다. 아래 코드인데요,

아래 코드에서 os.environ['TZ'] = 'GMT+0' 다음 라인에 "time.tzset()"를 호출하지 않아서 정상 동작하지가 않습니다.

정말 심플한 예제인데, 동작 확인도 안하고 올려놓고... 문의해도 나 몰라라 하는 쿠팡의 대응에 약간 실망하였습니다.

time.tzset() 만 넣고 돌리면 바로 동작하니, 참고하세요 ^^

os.environ['TZ'] = 'GMT+0'

datetime=time.strftime('%y%m%d')+'T'+time.strftime('%H%M%S')+'Z'
method = "POST"

path = "/v2/providers/seller_api/apis/api/v1/marketplace/seller-products"

message = datetime+method+path

#replace with your own accesskey
accesskey = "****"
#replace with your own secretKey
secretkey = "****"

#********************************************************#
#authorize, demonstrate how to generate hmac signature here
signature=hmac.new(secretkey.encode('utf-8'),message.encode('utf-8'),hashlib.sha256).hexdigest()
authorization  = "CEA algorithm=HmacSHA256, access-key="+accesskey+", signed-date="+datetime+", signature="+signature
#print out the hmac key
#print(authorization)
#********************************************************#

 

방법2 UTC gmtime 사용

UTC vs. KST: 한국 시간(KST)은 UTC보다 9시간 빠릅니다. 쿠팡 API는 요청 시 UTC 시간을 사용하여 서명을 생성해야 합니다. 만약 한국 시간을 사용하면, 401 Unauthorized 오류가 발생할 수 있습니다.
gmtime() 사용: gmtime() 함수는 UTC 시간으로 현재 시간을 반환합니다. 이를 통해 API 요청에 필요한 정확한 UTC 시간이 보장됩니다.

from time import strftime, gmtime

# 현재 UTC 날짜를 'YYMMDD' 형식으로 반환
dateGMT = strftime('%y%m%d', gmtime())
# 현재 UTC 시간을 'HHMMSS' 형식으로 반환
timeGMT = strftime('%H%M%S', gmtime())
# 날짜와 시간을 조합하여 'YYMMDDTHHMMSSZ' 형식으로 설정
datetime = dateGMT + 'T' + timeGMT + 'Z'

Python Example – Open APIs

위와같이 하시면 쿠팡 셀러 API를 사용하기 위한 Hmac Signature까지 완료되었습니다. 

다음 시간에는 이제 네이버에서 상품을 가져와서 어떻게 쿠팡에 올릴지 하나씩 알아보도록 하겠습니다.  

facebook twitter kakaoTalk kakaostory naver band shareLink