Меню

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

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

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

В первую очередь нужно уточнить, что необходимо особым образом подписывать API-запросы с помощью параметра Signature. Информацию об этом вы можете найти в предыдущей статье Рекомендации по подключению к API Amazon Marketplace Web Service

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

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

<?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, как описано в предыдущей статье.

Опыт подключения API Admitad 20.09.2019 Опыт подключения API Admitad
Admitad - это глобальная партнерская сеть с большим выбором партнерских программ, высокими ставками, экспресс-выплатами и множеством инструментов.

Советы по подключению к сервису API ShipStation 17.09.2019 Советы по подключению к сервису API ShipStation
Используйте API ShipStation в качестве агрегатора для вашего сервиса и как отличный инструмент для экономии средств на отправках посылок. Описание особенностей сервиса

Возврат к списку