用 Python × SP-API 检索订单管理信息 | Amazon Selling Partner API

Selling Partner API(SP-API)是面向Amazon卖家合作伙伴的自动化功能的新一代API套件,是Amazon Marketplace Web Service(MWS)API的演进版本。MWS已提供对Amazon重要功能的程序化访问超过十年。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即可
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"
}
多设置几种参数,让自己能够获取所需的数据吧。



留言