프로그래밍/Python

파이썬으로 네이버 스마트스토어 커머스API 활용하기 - 주문 내역 상세 정보 조회, 발송 처리

abfc 2022. 12. 6.
반응형

 

2022.11.25 - [프로그래밍/Python] - 파이썬으로 네이버 스마트스토어 커머스API 활용하기 - 애플리케이션아이디, 시크릿키 발급

 

파이썬으로 네이버 스마트스토어 커머스API 활용하기 - 애플리케이션아이디, 시크릿키 발급

네이버쇼핑에서 판매중인 인스타봇이나 스마트스토어 상품정보/ 사업자정보 프로그램은 구매자에게 쿠폰을 발급하고 인증하는 시스템이다. 물리적인 배송을 하지않고, 구매자의 정보에서 네

private.tistory.com

 

2022.11.25 - [프로그래밍/Python] - 파이썬으로 네이버 스마트스토어 커머스API 활용하기 - 인증 토큰 발급

 

파이썬으로 네이버 스마트스토어 커머스API 활용하기 - 인증 토큰 발급

2022.11.25 - [프로그래밍/Python] - 파이썬으로 네이버 스마트스토어 커머스API 활용하기 - 애플리케이션아이디, 시크릿키 발급 파이썬으로 네이버 스마트스토어 커머스API 활용하기 - 애플리케이션아

private.tistory.com

 

2022.12.05 - [프로그래밍/Python] - 파이썬으로 네이버 스마트스토어 커머스API 활용하기 - 주문 조회

 

파이썬으로 네이버 스마트스토어 커머스API 활용하기 - 주문 조회

2022.11.25 - [프로그래밍/Python] - 파이썬으로 네이버 스마트스토어 커머스API 활용하기 - 애플리케이션아이디, 시크릿키 발급 파이썬으로 네이버 스마트스토어 커머스API 활용하기 - 애플리케이션아

private.tistory.com


 

주문 조회에서 현재 상태가 결제완료(새로운 주문)인 내역의 상품 주문 ID(productOrderId)로 상품 주문 상세 내역 조회를 요청해야 한다. 상세 내역에서 얻은 구매자의 정보로 프로그램 다운로드 링크와 이용권을 이메일 발송할 예정이다.

 

 

상품 주문 상세 내역 조회 요청 파라미터

요청 파라미터는 아주 간단하다. productOrderId가 담긴 배열(리스트)만 보내면 된다. POST 방식으로!

 

상품 주문 상세 내역 조회 소스

def get_order_detail():
    import datetime

    headers = {'Authorization': token}
    url = 'https://api.commerce.naver.com/external/v1/pay-order/seller/product-orders/query'
    
    params = {
        'productOrderIds' : ['']
    }

    res = requests.post(url=url, headers=headers, json=params)
    res_data = res.json()
    
    # print(res_data)
    if 'data' not in res_data:
        return False
    
    for data in res_data['data']:
        for d in data.keys():
            for d2 in data[d].keys():
                print(f'{d2} : {data[d][d2]}')

맨 아래 for문은 데이터를 키 별로 출력하기 위해 작성한 소스기때문에 실제로는 저렇게 사용하지 않고, 필요한 데이터만 가져올 예정이다. (필요한 데이터만 정리해서 이메일 발송 후 노션api를 이용해 자동으로 작성할 예정)

 

저렇게 요청하면 해당 주문 내역의 상세 정보를 받을 수 있다. 어떤 상품을 구매했는지, 구매 금액, 구매 시간, 구매자의 배송정보 등이 출력되는데 문제는... 개인정보보호법 때문에 네이버 아이디는 마스킹 처리되어 전체 아이디를 알 수가 없고, 주소나 연락처는 나오지만 이메일 주소는 제공되지 않는다. ㅎㅎ

 

새로운 주문이 들어오면 자동으로 이메일 발송하려고 했지만 불가능해졌다. 따로 배송메모에 이메일 주소를 남겨달라고 해야하는데 미기입 혹은 잘못기입된 메일 주소에 대해서는 또 어떻게 처리해야할지 문제다. 

커머스API측에 문의해보았는데 가까운 시일내에 비실물 상품 배송 관련 업데이트는 없을거라 했다...! ㅎㅎ..

 

아무튼 한 김에 커머스 API를 이용해 배송 완료 처리(발송 처리)까지 해보도록 하자..ㅠㅠ!

 

커머스API를 이용한 새로운 주문 내역 자동 발송 처리

발송 처리 요청 파라미터는 택배사 코드때문에 너무 길어서 가져오지 않았다. 나는 비실물 상품을 판매하기때문에 택배사 관련된 파라미터는 필요하지 않고 상품주문번호(produrctOrderId), 배송방법코드(deliveryMethod), 배송일(dispatchDate)만 필요하다. 실물 상품 판매자는 택배사코드(deliveryCompanyCode), 송장번호(trackingNumber)를 추가해야 한다.

 

배송방법코드는 택배, 방문 수령, 직접 전달, 퀵 서비스 등등 여러가지가 있는데 그 중 배송없음(NOTHING)을 작성했고, 배송일은 토큰을 발급받을때 사용했던 date양식을 사용해서 현재보다 3초전으로 전달했다.

 

 

발송 처리 소스

def item_sending(productOrderIds, dispatchDate):
    headers = {
        'Authorization': token,
        'content-type': "application/json"
        }
    url = 'https://api.commerce.naver.com/external/v1/pay-order/seller/product-orders/dispatch'
    
    params = {
        'dispatchProductOrders' : [{
            'productOrderId' : str(productOrderIds[0]),
            'deliveryMethod' : 'NOTHING',
            'dispatchDate' : dispatchDate, #배송일
    }]}

    res = requests.post(url=url, headers=headers, json=params)
    res_data = res.json()
    
    print(res_data)
    if 'data' not in res_data:
        return False
    

from datetime import datetime
now = datetime.now()
iosFormat = now.astimezone().isoformat()
timestamp = str(int((time.time()-3) * 1000))

item_sending(productOrderIds=[''], dispatchDate=timestamp)

 

 

요청 파라미터는 배열(리스트)형태로 요청하며 최대 30개까지 처리가 가능하다. 요청에 성공하면 성공한 상품 주문 번호(successProductOrderIds)를 응답 받을 수 있다. 만약 실패할 경우 failProductOrderInfos에 실패한 상품 주문 번호와 오류 코드를 응답받는다.

 

이메일 발송 작업만 빼놓고 테스트해보니 너무너무너무 편하다. 제발 네이버 아이디라도 알려주면 너무나 좋을텐데... 아쉽다....아쉬워...........

 

 

공감과 광고 클릭은 작성자에게 많은 힘이됩니다. 감사합니다😄

반응형

댓글

💲 추천 글