Меню

Рекомендации по подключению к API Amazon Marketplace Web Service (MWS)

logo
Как подключиться к Amazon MWS API? Процесс получения списка заказов и формирование подписи запроса с использованием нескольких параметров
Рекомендации по подключению к API Amazon Marketplace Web Service (MWS)

Особенности подключения API Amazon Marketplace Web Service (MWS)

Для знакомства с Amazon MWS API рассмотрим процесс получения списка заказов.

Формат передаваемых данных MWS представляет собой не JSON, и не XML, а некоторый свой уникальный формат, где вложение осуществляется с помощью разделителя ".". Так, если нужно передать ключ, вложенный в ключ "a", ключ "b" со значением "c", что можно было бы сделать с помощью json следующим образом - {"a":{"b":"c"}}, то в MWS придется передавать ключ "a.b" со значением "c". Формат же получаемых данных - XML.

Подпись запроса формируется с использованием нескольких параметров: "AWSAccessKeyId" - предоставляется Amazon, "SellerId" - 14-значный уникальный идентификатор продавца Amazon, состоящий из букв и цифр, "MWSAuthToken" - токен доверенного разработчика, который будет описан далее, "SignatureVersion" - версия способа получения сигнатуры, например "2", "Timestamp" - дата и время отправки запроса в формате "ISO 8601", "Version" - версия конкретной ветки API в формате "YYYY-MM-DD", так для Orders API это "2013-09-01", "SignatureMethod" - метод получения сигнатуры, например "HmacSHA256".

Что касается "SellerId" и "MWSAuthToken", тут нужно учесть специфику Amazon по предоставлению разработчикам доступа к аккаунтам продавцов. Сначала нужно перевести аккаунт в режим разработчика. После этого, другие продавцы смогут предоставить новосозданному разработчику доступ к управлению их данными по API. В личном кабинете продавца есть список доверенных разработчиков, каждому из которых присваивается специальный ключ, "MWSAuthToken", который нужно предоставить разработчику для использования в подписи API-запросов наряду с "SellerId". Т.к. продавцу, ставшему разработчиком, не нужно предоставлять доступ самому себе, то при осуществлении запросов от своего лица, нужно указывать ключ "MWSAuthToken" со значением "".

Amazon не предоставляет sandbox-режим, а потому вся работа по подключению будет производиться по реальным данным. Отладку подписи запросов можно провести по GET-запросам, а с чем-то посложнее может возникнуть риск поломки. Для отправки запросов нужно использовать URL https://mws.amazonaws.com

После того, как подпись запросов отлажена, по API можно получать некоторые данные из личного кабинета, например, список заказов. Вся функциональность API поделена на ветки по сущностям, с которыми ведется работа: Orders, Products, Fulfillment Inbound Shipments, Fulfillment Outbound Shipments, Feeds и т.д. Мы же будем использовать OrdersAPI, http://docs.developer.amazonservices.com/en_US/orders-2013-09-01/Orders_Overview.html.

Для получения списка заказов нужно использовать GET-запрос на https://mws.amazonaws.com/Orders/2013-09-01 с параметром "Action" со значением "ListOrders". Параметр "Action" используется и в GET-, и в POST-запросах, и однозначно определяет текущую функциональность API. Кроме того, для "ListOrders" можно указать фильтрующие параметры, но базовый запрос можно сделать без них. Так, если подпись запроса отлажена, при выполнении запроса на вышеуказанный URL должен вернуться XML с корневым элементом ListOrdersResponse, элементом первого уровня ListOrdersResult и второго - Orders, который группирует список элементов Order, каждый из которых является XML API представлением заказа в Amazon (рис. 1). Пагинация реализована не еще одним query-параметром, а другим значением параметра "Action", "ListOrdersByNextToken". Так, если запрос на "ListOrders" вернул элемент второго уровня "NextToken", то продавец имеет более 100 заказов и нужно делать еще как минимум один запрос с параметрами "Action" со значением "ListOrdersByNextToken" и "NextToken" со значением элемента "NextToken" с прошлого запроса. Все последующие страницы пагинации получаются через "ListOrdersByNextToken".

рис. 1

Каждый заказ имеет, например, строковые свойства AmazonOrderId, PurchaseDate, OrderStatus и вложенные ShippingAddress, OrderTotal и другие. Сама информация о заказе довольно непрактична для использования на сайте, поэтому для полноты картины нужно получить связанные продукты. Для этого нужно в первую очередь сделать запрос с "Action" со значением "GetOrder", передав также параметр "AmazonOrderId" со значением соответствующего элемента "AmazonOrderId" из ответа на запрос "ListOrders" или "ListOrdersByNextToken". В ответе будет список продуктов, идентифицируемых значением поля ASIN (рис. 2). Данные о самих же продуктах необходимо получать с другой ветки, Products API, https://mws.amazonaws.com/Products/2011-10-01, а в запросе указывать такие параметры: "Action" - "GetMatchingProduct", "ASINList.ASIN.1" - ASIN искомого продукта. Чтобы оптимизировать количество запросов к API можно указывать вплоть до 10 ASIN продуктов, соответственно передавая их как значения параметров "ASINList.ASIN.2", "ASINList.ASIN.3", ..., "ASINList.ASIN.10". Для этой ветки соответственно в подписи запроса будет использоваться значение "2011-10-01" для параметра "Version". Структуру ответа можно увидеть на рис. 3.

рис. 2

рис. 3

В остальном - необходимо реализовать обработку ошибок и интеграцию с бизнес-логикой. Также для каждого "Action", Amazon имеет свои лимиты по количеству и частоте запросов, за чем в случае необходимости нужно следить отдельно.

Также в некоторых запросах можно передавать параметр "MarketplaceId", который определяет "подрынок". Кроме того, сам рынок определяется доменом. Так для США и Бразилии используется домен https://mws.amazonservices.com, а значение параметра "MarketplaceId" для США равно "ATVPDKIKX0DER", а для Бразилии - "A2Q3Y263D00KWC", для ознакомления со всем списком см. http://docs.developer.amazonservices.com/en_US/dev_guide/DG_Endpoints.html.

Подключение API EasyPost 07.10.2019 Подключение API EasyPost
Особенности подключения API EasyPost

Советы по подключению к сервису API ShipStation 17.09.2019 Советы по подключению к сервису API ShipStation
Используйте API ShipStation в качестве агрегатора для вашего сервиса и как отличный инструмент для экономии средств на отправках посылок. Описание особенностей сервиса

Возврат к списку