セリングパートナーAPI(SP-API)は、Amazonのセリングパートナー向けの自動化機能の次世代APIスイートで、AmazonマーケットプレイスWebサービス(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が注文情報の検索に使用されます。
getOrders 指定されたオーダー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):
#OrdersAPI利用のためのオブジェクト生成
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'])
パラメータの説明
実行結果(サンプル)
{
"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"
}
パラメータをいろいろ設定し、必要なデータを取得できるようになりましょう。
Comments