Python × SP-API로 주문 관리 정보 검색 | Amazon Selling Partner API
- 2일 전
- 2분 분량

셀링 파트너 API(SP-API)는 Amazon의 셀링 파트너를 위한 자동화 기능의 차세대 API 스위트로, Amazon 마켓플레이스 웹 서비스(MWS) API가 진화한 것입니다. MWS는 Amazon의 중요한 기능에 대한 프로그램적 접근을 10년 이상 제공해 왔습니다. SP-API가 공개되면, 현재 MWS를 지원하는 모든 Amazon 스토어에서 프로덕션 환경으로 이용할 수 있게 됩니다.
현재 MWS를 이용하는 개발자는, 2024년 4월 1일까지 SP-API로 이전해야 합니다.(2023년 1월 23일 시점의 정보)
Selling Partner API for Orders
Orders의 API를 사용하면 주문 정보를 프로그램에서 가져올 수 있습니다. 이 API들을 사용해 주문 정보 관리, 주문 상황 조사, 수요에 기반한 의사결정 지원 도구 등의 분야에서 유연한 커스텀 애플리케이션을 개발할 수 있습니다.
환경 준비
Python에서 SP-API를 이용하려면 python-amazon-sp-api 라이브러리를 설치해야 합니다. 저는 AWS Lambda에서 Python을 실행하므로, Lambda의 대상 프로젝트에 라이브러리를 설치하기 위해 「-t .」 옵션을 붙였습니다
pip install python-amazon-sp-api -t .SP-API 실행에는 자격 증명이 필요합니다. 자격 증명은 credentials에 모아 저장해 두면 편리합니다. 각 값의 취득 방법은 별도 기사에서 소개합니다.
credentials : {
"refresh_token": 리프레시 토큰,
"lwa_app_id": 클라이언트 ID,
"lwa_client_secret": 클라이언트 시크릿,
"aws_access_key": AWS 액세스 키,
"aws_secret_key": AWS 시크릿 키
}
API 실행
・getOrders: 지정한 파라미터가 나타내는 기간에 생성 또는 갱신된 주문 정보를 반환합니다. 여러 필터링 조건을 적용해 반환되는 주문 정보를 좁힐 수 있습니다. NextToken이 존재하는 경우, 다른 조건이 아니라 NextToken이 주문 정보 검색에 사용됩니다.
・getOrder: 지정된 주문 ID가 나타내는 주문을 반환합니다.
・getOrderBuyerInfo: 지정된 주문의 구매자 정보를 반환합니다.
・getOrderAddress: 지정된 주문의 배송지 주소를 반환합니다.
・getOrderItems: 지정된 주문 ID가 나타내는 주문의 상세한 수주 항목 정보를 반환합니다. NextToken이 지정된 경우 다음 페이지의 주문 항목을 가져올 수 있습니다.
・getOrderItemsBuyerInfo: 지정된 주문으로 주문된 상품의 구매자 정보를 반환합니다.
getOrders (샘플)
from sp_api.api import Orders
from sp_api.base.marketplaces import Marketplaces
def lambda_handler(event, context):
#Orders API 이용을 위한 객체 생성
obj = Orders(marketplace=Marketplaces.JP,
credentials=event['credentials'])
#검색에 필요한 값을 설정하고 주문 정보를 가져오기
result = obj.get_orders(CreatedAfter='2023-01-01T00:00:00',
CreatedBefore='2023-01-31T23:59:59',
FulfillmentChannels=["AFN"],
OrderStatuses=["Shipped,Canceled"])
return result.payload만약 Orders API에서 NextToken을 가져온 경우에는, 파라미터로 NextToken만 넘겨주면 OK
result = obj.get_orders(NextToken=event['NextToken'])
파라미터 설명
・CreatedAfter: 이 일시 이후에 생성된 주문을 대상으로 함
・CreatedBefore: 이 일시 이전에 생성된 주문을 대상으로 함
・FulfillmentChannels: AFN(FBA) 또는 MFN(자체 배송)
・OrderStatuses: Pending·Shipped·Canceled 등 주문 상태로 좁히기
・NextToken: 다음 페이지를 가져오기 위한 토큰
실행 결과(샘플)
{
"Orders": [
{
"BuyerInfo": {
"BuyerEmail": "*****@****.***"
},
"AmazonOrderId": "***-******-******",
"EarliestShipDate": "2023-01-04T14:59:59Z",
"SalesChannel": "Amazon.co.jp",
"OrderStatus": "Shipped",
"NumberOfItemsShipped": 1,
"OrderType": "StandardOrder",
"IsPremiumOrder": false,
"IsPrime": false,
"FulfillmentChannel": "AFN",
"NumberOfItemsUnshipped": 0,
"HasRegulatedItems": false,
"IsReplacementOrder": "false",
"IsSoldByAB": false,
"LatestShipDate": "2023-01-04T14:59:59Z",
"ShipServiceLevel": "Expedited",
"IsISPU": false,
"MarketplaceId": "A1VC38T7YXB528",
"PurchaseDate": "2023-01-03T07:21:21Z",
"ShippingAddress": {
"StateOrRegion": "◯◯県",
"PostalCode": "000-0000",
"CountryCode": "JP"
},
"IsAccessPointOrder": false,
"SellerOrderId": "***-******-******",
"PaymentMethod": "Other",
"IsBusinessOrder": false,
"OrderTotal": {
"CurrencyCode": "JPY",
"Amount": "2180.00"
},
"PaymentMethodDetails": [
"Standard"
],
"IsGlobalExpressEnabled": false,
"LastUpdateDate": "2023-01-05T09:02:23Z",
"ShipmentServiceLevelCategory": "Expedited"
},
{
"BuyerInfo": {},
"AmazonOrderId": "***-******-******",
"EarliestShipDate": "2023-01-05T14:59:59Z",
"SalesChannel": "Amazon.co.jp",
"OrderStatus": "Canceled",
"NumberOfItemsShipped": 0,
"OrderType": "StandardOrder",
"IsPremiumOrder": false,
"IsPrime": false,
"FulfillmentChannel": "AFN",
"NumberOfItemsUnshipped": 0,
"HasRegulatedItems": false,
"IsReplacementOrder": "false",
"IsSoldByAB": false,
"LatestShipDate": "2023-01-05T14:59:59Z",
"ShipServiceLevel": "Expedited",
"IsISPU": false,
"MarketplaceId": "A1VC38T7YXB528",
"PurchaseDate": "2023-01-03T11:51:29Z",
"IsAccessPointOrder": false,
"SellerOrderId": "***-******-******",
"PaymentMethod": "Other",
"IsBusinessOrder": true,
"PaymentMethodDetails": [
"Standard"
],
"IsGlobalExpressEnabled": false,
"LastUpdateDate": "2023-01-03T11:53:35Z",
"ShipmentServiceLevelCategory": "Expedited"
}
],
"CreatedBefore": "2023-01-04T23:59:59Z"
}
파라미터를 여러 가지로 설정해, 필요한 데이터를 가져올 수 있게 됩시다.



댓글