
Рассмотрим передачу данных на примере присвоения заказу трекномера
В первую очередь нужно уточнить, что необходимо особым образом подписывать 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, как описано в предыдущей статье.