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
Статті, які можуть вас також зацікавити
Реалізація структури бази продуктів з сервісу sql-ex.ru з підтримкою Doctrine2
Розширюйте проект на міцній основі з використанням вбудованого функціоналу Doctrine2, спробуйте додати свої класи і таблиці. Характеристика бази продуктів
Поради щодо підключення до сервісу API ShipStation
Поради щодо підключення до сервісу API ShipStation
Використовуйте API ShipStation як агрегатор для вашого сервісу, а такж як відмінний інструмент для економії коштів на відправленнях посилок. Опис особливостей сервісу
Ключові відмінності між Laravel і Symfony
Ключові відмінності між Laravel і Symfony
Який з двох фреймворків Laravel чи Symfony вибрати для реалізації проекту? Під які конкретні потреби використовувати той чи інший фреймворк? Характеристика функціональних можливостей фреймворків
Особливості впровадження принципів SCRUM в нашій компанії і їх ефективність
Впровадження методів управління проектами SCRUM в нашій компанії, які використовують принципи і артефакти, результати застосування в спектрі ефективності використання трудових і часових ресурсів.
Зв'яжіться з нами
#0013
Готові Розпочати? Повідомте нас про це!
Телефон:
Адреса:

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

Пн-Пт 9.00 - 19.00

Зв'яжіться з нами
#0000
Залишилися запитання?
Опишіть свою проблему, заповніть форму нижче та наші спеціалісти допоможуть Вам!
Обов'язкове поле
Обов'язкове поле
Обов'язкове поле
Обов'язкове поле