Меню

Рекомендації по підключенню до 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.

Реалізація структури бази продуктів з сервісу sql-ex.ru з підтримкою Doctrine2 16.09.2019 Реалізація структури бази продуктів з сервісу sql-ex.ru з підтримкою Doctrine2
Розширюйте проект на міцній основі з використанням вбудованого функціоналу Doctrine2, спробуйте додати свої класи і таблиці. Характеристика бази продуктів

Особливості впровадження принципів SCRUM в нашій компанії і їх ефективність 23.02.2021 Особливості впровадження принципів SCRUM в нашій компанії і їх ефективність
Впровадження методів управління проектами SCRUM в нашій компанії, які використовують принципи і артефакти, результати застосування в спектрі ефективності використання трудових і часових ресурсів.

Повернення до списку