Подключению к API Amazon (MWS) - Изображение №1
01

Подключению к API Amazon (MWS)

Содержание:
Как вам статья?
Спасибо за отзыв!
5.0
Просмотров: 817

В данной статье мы предлагаем рассмотреть особенности подключения к API сервиса Amazon Marketplace Web Service (MWS). Для ознакомления рассмотрим процесс получения списка заказов.


Начало работы с MWS

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


Подпись запроса формируется с использованием нескольких параметров:

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

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

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


Получение заказов из Amazon с помощью API

После успешной настройки подписи для запросов, через API можно получать определенные данные из личного кабинета, например, список заказов. Вся функциональность API разделена на ветки в зависимости от объектов, с которыми проводится работа: Orders, Products, Fulfillment Inbound Shipments, Fulfillment Outbound Shipments, Feeds и т.д. В данном случае мы будем использовать Orders API, доступный по ссылке 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. Каждый элемент Order представляет собой XML-представление заказа в Amazon. Для реализации пагинации используется не отдельный query-параметр, а значение параметра "Action" - "ListOrdersByNextToken". Так, если запрос "ListOrders" вернул элемент второго уровня "NextToken", это означает, что продавец имеет более 100 заказов, и необходимо сделать еще как минимум один запрос с параметрами "Action" - "ListOrdersByNextToken" и "NextToken" со значением, полученным из предыдущего запроса. Дальнейшие страницы пагинации можно получить с помощью "ListOrdersByNextToken".


Рекомендации по подключению к API Amazon Marketplace Web Service (MWS) - изображение №3

Рис. 1


Каждый заказ имеет ряд строковых свойств, таких как AmazonOrderId, PurchaseDate, OrderStatus, а также вложенные объекты ShippingAddress, OrderTotal и другие. Информация о заказах не совсем подходит для прямого использования на сайте, поэтому для получения полной информации также необходимо получить связанные продукты. Для получения данных о них, сначала нужно сделать запрос с параметром "Action" и значением "GetOrder", передав также параметр "AmazonOrderId" со значением, полученным из ответа на запрос "ListOrders" или "ListOrdersByNextToken". Ответ на этот запрос будет содержать список продуктов, идентифицированных значением поля ASIN (рис.2).


Рекомендации по подключению к API Amazon Marketplace Web Service (MWS) - изображение №4

Рис. 2


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


Рекомендации по подключению к API Amazon Marketplace Web Service (MWS) - изображение №5

Рис. 3


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

Для ознакомления со всем списком смотрите http://docs.developer.amazonservices.com/en_US/dev_guide/DG_Endpoints.html .



Передача данных на примере присвоения трек-номера к заказу

Для передачи данных используется Feeds API. Все запросы этой категории требуют еще одной дополнительной подписи. Этот подпись базируется на содержимом файла фида, который необходимо передать в теле POST-запроса. Давайте предположим, что в Amazon есть заказ с идентификатором "A", за которым закреплен продукт с идентификатором связи "B" в количестве одной штуки, и мы хотим указать для этого заказа трек-номер "C" для службы доставки "D" методом "E".

В этом случае наш файл будет иметь следующий вид:



Помимо вышеуказанных параметров, мы также можем видеть SellerId и FulfillmentDate. SellerId - это уникальный идентификатор Amazon, о котором уже обсуждалось ранее, а FulfillmentDate - это дата отгрузки в формате ISO 8601. Подписью к файлу фида будет служить значение заголовка Content-MD5. Это значение представляет собой base64 закодированную строку, которая получается после выполнения кодирования md5 содержимого файла. Параметры D и E могут, например, иметь значения USPS и USPS First Class соответственно.

Тело запроса уже занято файлом, поэтому, хотя запрос передается методом POST, параметры Action со значением SubmitFeed и FeedType со значением POST_ORDER_FULFILLMENT_DATA нужно передавать как параметры строки запроса (query string). Для правильной передачи файла используйте заголовок Content-Type со значением text/xml.

Поскольку файл может быть очень большим, до 2 Гб, Amazon не предоставляет результат обработки файла в ответе, но возвращает Id зарегистрированного фида.


Таким образом, для примера, будет возвращен ответ следующего формата:



FeedSubmissionId - это идентификатор фида, с помощью которого позже можно проверить результат обработки файла. SubmittedDate - время регистрации фида. RequestId - это идентификатор запроса, присущий каждому ответу от Amazon. Затем, со временем, и если файл небольшой, мы можем выполнить GET-запрос с параметрами Action со значением GetFeedSubmissionResult и FeedSubmissionId со значением ранее сохраненного FeedSubmissionId для проверки статуса фида.


Другие загрузки фидов происходят аналогично и требуют знания Id различных сущностей в базе данных Amazon, таких, как A и B, которые вы можете получить в личном кабинете или с помощью API.

Следующая статья Как подключить API Paypal?
Предыдущая статья Особенности настройки и установки API-ключа EasyPost
Давайте обсудим ваш проект
Нажимая кнопку "Отправить", вы соглашаетесь с обработкой персональных данных.Подробнее
Блог
#0000

Читайте также другие статьи в нашем блоге

Зачем нужна CRM-система: понятие, преимущества, разновидности
22 Фев, 2024
CRM — это программное обеспечение для автоматизации и управления взаимодействия с клиентами. В нем хранятся данные о заказах, клиентах, их предпочтениях и взаимодействии с брендом. CRM помогает увеличить прибыль и удовлетворить потребности клиента.
ПРОСМОТРЕТЬ СТАТЬЮ
Подключению к API Amazon (MWS) - Изображение №5
Yii или Laravel: что лучше для вашего проекта?
02 Янв, 2024
Благодаря технологическому развитию, писать на PHP код с нуля теперь не обязательно: существует множество фреймворков. готовых моделей, «шаблонов» для программных платформ, среди которых самыми популярными стали Yii2 и Laravel. В чем их и какой из фреймворков для создания продукта выбрать? Рассказываем и сравниваем структуры в этом материале.
ПРОСМОТРЕТЬ СТАТЬЮ
Подключению к API Amazon (MWS) - Изображение №6
Что такое PWA: подробная инструкция с примерами кода
26 Фев, 2024
PWA, или Progressive Web Apps, — это веб-приложения, объединившие в себе все лучшее из веб-сайтов и мобильных приложений. Подобные нативным по своему функционалу, они работают на любом устройстве, где есть веб-браузеры.
ПРОСМОТРЕТЬ СТАТЬЮ
Что такое Single Page Application?
06 Мар, 2024
За последнее десятилетие появилось огромное количество веб-приложений на любой вкус. Все их объединяет фокус на легком взаимодействии с пользователем: быстрая загрузка, интуитивный интерфейс и бесшовность взаимодействия.
ПРОСМОТРЕТЬ СТАТЬЮ
 
Контакты
#0000

Готовы начать?
Свяжитесь с нами!

Телефон:
+ 38 (096) 880 99 00
Адрес:

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

График:

Пн – Пт 9.00 – 19.00

Телефон:
+48 570 337 815
Адрес:

Poland, Warsaw, 00-842
Łucka street 15/204

График:

Пн – Пт 9.00 – 19.00

 
 
Свяжитесь с нами
#0000

Остались вопросы?

Пожалуйста, заполните форму ниже и наши специалисты свяжутся с вами как можно быстрее!
Нажимая кнопку "Отправить", вы соглашаетесь с обработкой персональных данных. Подробнее.