img
scroll
#

Передача даних в Amazon дещо відрізняється від отримання

Uk Ru En
Статя
#0002

Розглянемо передачу даних на прикладі присвоєння замовлення трекномера

Насамперед слід уточнити, що необхідно особливим чином підписувати API-запити за допомогою параметра Signature. Інформацію про це ви можете знайти у попередній статті Рекомендації щодо підключення до API Amazon Marketplace Web Service
Для передачі даних використовується Feeds API. Усі запити цієї категорії вимагають ще одного додаткового підпису. Цей підпис базується на вмісті файлу фіда, який необхідно передати в тілі POST-запиту. Допустимо в Amazon зберігається замовлення з Id "A", за яким закріплений продукт з Id зв'язку "B" у кількості однієї штуки, і ми хочемо вказати це замовлення трекномер "C", для служби доставки "D" методом "E".

Публікація даних на Amazon має здійснюватися іншим способом

У цьому випадку наш файл буде виглядати так:

<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>
    <AmazonEnvelope xsi:noNamespaceSchemaLocation=\"amzn-envelope.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instancet\">;
         <Header>
              <DocumentVersion>1.01</DocumentVersion>
              <MerchantIdentifier>{{ SellerId }}</MerchantIdentifier>
         </Header>
         <MessageType>OrderFulfillment</MessageType>
         <Message>
              <MessageID>1</MessageID>
              <OrderFulfillment>
                   <AmazonOrderID>{{ A }}</AmazonOrderID>
                   <FulfillmentDate>{{ FulfillmentDate }}</FulfillmentDate>
                   <FulfillmentData>
                        <CarrierName>{{ D }}</CarrierName>
                        <ShippingMethod>{{ E }}</ShippingMethod>
                        <ShipperTrackingNumber>{{ C }}</ShipperTrackingNumber>
                   </FulfillmentData>
                   <Item>
                        <AmazonOrderItemCode>{{ B }}</AmazonOrderItemCode>
                         <Quantity>1</Quantity>
                   </Item>
              </OrderFulfillment>
         </Message>
</AmazonEnvelope>


Крім перерахованих вище параметрів ми можемо бачити 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.

Т.к. файл може бути дуже великим, до 2Gb, Amazon не надає результату обробки файлу у відповіді, але повертає Id зареєстрованого фіда.

Так, наприклад, буде повернено відповідь наступного формату:

<?xml version="1.0"?>
<SubmitFeedResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/">
    <SubmitFeedResult>
        <FeedSubmissionInfo>
            <FeedSubmissionId>{{ FeedSubmissionId }}</FeedSubmissionId>
            <FeedType>_POST_ORDER_FULFILLMENT_DATA_</FeedType>
            <SubmittedDate>{{ SubmittedDate }}</SubmittedDate>
            <FeedProcessingStatus>_SUBMITTED_</FeedProcessingStatus>
        </FeedSubmissionInfo>
    </SubmitFeedResult>
    <ResponseMetadata>
        <RequestId>{{ RequestId }}</RequestId>
    </ResponseMetadata>
</SubmitFeedResponse>


, де FeedSubmissionId - Id фіда, яким пізніше ми зможемо перевірити результат обробки файлу, SubmittedDate - час реєстрації фіда, RequestId - Id запиту, властивий кожному відповіді Amazon .

Тепер з часом, а якщо файл невеликий, то і в наступному запиті, можна буде перевірити статус фіда за допомогою GET-запиту з параметрами Action зі значенням GetFeedSubmissionResult і FeedSubmissionId зі значенням раніше збереженого FeedSubmissionId.

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

Блог
#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
Залишилися запитання?
Опишіть свою проблему, заповніть форму нижче та наші спеціалісти допоможуть Вам!
Обов'язкове поле
Обов'язкове поле
Обов'язкове поле
Обов'язкове поле