img
scroll
#

Передача данных в Amazon несколько отличается от получения

Uk Ru En
Статья
#0002

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

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

Posting data to Amazon have to be made in a different way

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

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

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

Пн-Пт 9.00 - 19.00

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