파이썬으로 네이버 스마트스토어 커머스API 활용하기 - 주문 조회
2022.11.25 - [프로그래밍/Python] - 파이썬으로 네이버 스마트스토어 커머스API 활용하기 - 애플리케이션아이디, 시크릿키 발급
2022.11.25 - [프로그래밍/Python] - 파이썬으로 네이버 스마트스토어 커머스API 활용하기 - 인증 토큰 발급
스마트스토어의 커머스API를 사용하게된 목적은
수동으로 주문 조회 -> 구매자에게 메일 발송하던 시스템을 자동화하기 위함이다.
나름 주문 내역을 자주 확인하고 있지만 늦은 밤, 새벽, 주말, 운전중 등 확인이 바로 불가능한 상황이 있는데 이런 상황에도 나 대신 프로그램 다운로드 링크와 이용권을 자동으로 메일 발송할 수 있는 시스템이 꼭 필요했다.
상태별 주문 내역 조회 - 결제 완료 된 주문 정보 가져오기
커머스 API 주문 조회에서 결제 완료된 주문 정보를 확인하기 위해서는 '변경 상품 주문 내역 조회'를 하면 된다.
변경 상품 주문 내역 조회에 필요한 요청 파라미터
조회 시작 일시(lastChangeFrom)의 datatime 형식은 ISO 8610에 따른 형태로 구성해야 하며, 커머스API 문서에서 필드값이 String<data-time> 형식인 경우 이에 해당된다고 한다. 또한 매 초의 정각을 표현하더라도 밀리초 표현(소수점)은 반드시 포함해야 한다.
주문 상품 조회 소스
def get_new_order_list():
from datetime import datetime, timedelta
headers = {'Authorization': token}
url = 'https://api.commerce.naver.com/external/v1/pay-order/seller/product-orders/last-changed-statuses'
now = datetime.now()
# before_date = now - timedelta(hours=3) #3시간전
# before_date = now - timedelta(seconds=10) #10초전
# before_date = now - timedelta(minutes=10) #10분전
before_date = now - timedelta(days=2) #이틀전
iosFormat = before_date.astimezone().isoformat()
params = {
'lastChangedFrom' : iosFormat, #조회시작일시
'lastChangedType' : 'DISPATCHED', #최종변경구분(PAYED : 결제완료, DISPATCHED : 발송처리)
}
res = requests.get(url=url, headers=headers, params=params)
res_data = res.json()
if 'data' not in res_data: #조회된 정보가 없을 경우 data키 없음
print('주문 내역 없음')
return False
data_list = res_data['data']['lastChangeStatuses']
for data in data_list:
print(data) #주문 정보
get_new_order_list()
lastChangedType(최종 변경 구분) 상태 표
코드 | 설명 | 비고 |
PAY_WAITING | 결제 대기 | |
PAYED | 결제 완료 | |
EXCHANGE_OPTION | 옵션 변경 | 선물하기 |
DELIVERY_ADDRESS_CHANGED | 배송지 변경 | |
GIFT_RECEIVED | 선물 수락 | 선물하기 |
CLAIM_REJECTED | 클레임 철회 | |
DISPATCHED | 발송 처리 | |
CLAIM_REQUESTED | 클레임 요청 | |
COLLECT_DONE | 수거 완료 | |
CLAIM_HOLDBACK_RELEASED | 클레임 보류 해제 | |
CLAIM_COMPLETED | 클레임 완료 | |
PURCHASE_DECIDED | 구매 확정 |
요청 파라미터중 조회 종료 일시(lastChangedTo)를 생략할 경우 조회 시작 일시부터 24시간 후로 자동 지정된다.
실제로 서버에 올려서 자동으로 새로운 주문내역을 가져올 때는 조회 시작 일시를 3~10초전으로 할 예정이지만 현재는 응답 데이터가 있어야 포스팅을 할 수 있기때문에 2일전으로 설정했다. (새로운 주문 내역이 음슴)
같은 이유로 최종 변경 구분(lastChangedType)을 발송처리가 된 상태(DISPATCHED)로 요청했다.
내가 필요한 최종 변경 구분(lastChangedType)은 두가지다.
PAYED(결제완료) - 새로운 주문중 결제가 완료된 내역이 있을 경우 즉시 메일 발송을 위해
DELIVERED(배송완료) - 나같은 경우 비실물 판매 상품이기때문에 실제 배송이 필요하지 않고 메일만 발송하면 바로 배송완료 상태로 변경을 한다. 결제완료된 내역을 처리하고 배송 완료 상태로 변경한 후 정상적으로 배송완료 처리가 되었는지 확인을 위해 필요하다.
위의 요청을 보내면 2일전부터 24시간동안 주문 내역 중 발송 처리가 완료된 내역을 응답받는다. 내가 실제로 사용할때는 결제 완료(PAYED) 상태로 요청해야 새로운 주문 중 결제가 완료된(바로 메일을 전송해야 하는) 내역을 응답 받을 수 있다.
응답받은 데이터는 data안에 lastChangeStatuses에서 확인이 가능하며, 조회된 주문 정보가 없을 경우 data키가 없다.
이렇게 커머스API를 이용하여 새로운 주문 정보를 받아올 수 있다. 이 얼마나 편리하고 간단한지....!! 하지만 여기서 끝이 아니다.
받아온 데이터는 주문ID(orderId), 상품 주문 ID(productOrderId), 최종 변경 구분 - 주문내역상태(lastChangedType), 결제 일시(paymentDate), 최종 변경 일시(lastChangedDate), 상품 주문 상태(productOrderStatus) 정도만 응답을 받기때문에 해당 정보로 구매자에게 메일을 보내거나 할 수는 없고 위의 응답으로 받은 상품 주문 ID(productOrderId)를 이용해 상품 주문 상세 내역 조회를 요청해야 해당 주문 내역에 대한 상세한 정보를 얻을 수 있다.
공감과 댓글은 작성자에게 많은 힘이됩니다. 감사합니다😄