img
scroll
#

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

Uk Ru En
Статья
#0002
Amazon Marketplace Web Service (MWS) API Connection Guideline

Особенности подключения 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".

img

Каждый заказ имеет, например, строковые свойства 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.

img
img

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

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

Блог
#0002
Статьи, которые могут вас также заинтересовать
Особенности подключения Iiko API
Iiko API это JSON API. Каждый запрос нужно подписывать специальным временным токеном доступа. Получить временный токен можно используя имя и пароль Вашего Iiko аккаунта, предоставленного Вам Iiko.
Опыт подключения API Admitad
Опыт подключения API Admitad
Admitad - это глобальная партнерская сеть с большим выбором партнерских программ, высокими ставками, экспресс-выплатами и множеством инструментов.
Как правильно создать обменник электронных валют
Как правильно создать обменник электронных валют
Советы по созданию онлайн-обменника. На что следует обратить особое внимание при создании обменника, удобного для пользователя? Основные требования к коду
Реализация структуры база продуктов с сервиса sql-ex.ru с помощью Doctrine2
Расширяйте проект на прочной основе с использованием встроенного функционала Doctrine2, попробуйте добавить свои классы и таблицы. Характеристика базы продуктов
Свяжитесь с нами
#0013
Готовы Начать? Дайте нам знать!
Телефон:
Адрес:

Украина, Житомир
ул. Витрука 9в

Пн-Пт 9.00 - 19.00

Свяжитесь с нами
#0000
Остались вопросы?
Опишите свою проблему, заполните форму ниже и наши специалисты помогут Вам!
Обязательное поле
Обязательное поле
Обязательное поле
Обязательное поле