Как должен выглядеть мой канал при использовании Amazon MWS?

Я пытаюсь реализовать собственный способ загрузки продукта на мой рынок Amazon с использованием MWS.

Я пробежался по образцам и подумал, что я на правильном пути, учитывая успешные сообщения и FeedSubmissionID, но это не тот случай, и MWS сообщает вам, что вы успешно завершили SubmitFeed, даже если вы на самом деле этого не сделали.

Мой вопрос касается того, что именно мой $feed переменная должна выглядеть, когда я пытаюсь обновить свой инвентарь. Основанный на Amazon MWS найден Вот.

Код

Это сжатая версия SubmitFeedSample.php,
Мой AWS_ACCESS_etc .. находится внутри моего .config.inc.php, который включен один раз в самом начале. Почти наверняка все это хорошо, потому что я получаю ответы об успехах.

include_once ('.config.inc.php');

$serviceUrl = "https://mws.amazonservices.com";

$config = array (
'ServiceURL' => $serviceUrl,
'ProxyHost' => null,
'ProxyPort' => -1,
'MaxErrorRetry' => 3,
);

$service = new MarketplaceWebService_Client(
AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY,
$config,
APPLICATION_NAME,
APPLICATION_VERSION);

$feed = '
<?xml version="1.0" ?>
<AmazonEnvelope xsi:noNamespaceSchemaLocation="amzn-envelope.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Header>
<DocumentVersion>1.01</DocumentVersion>
<MerchantIdentifier>A2EUQ1WTGCTBG2</MerchantIdentifier>
</Header>
<MessageType>Inventory</MessageType>
<Message>
<MessageID>1</MessageID>
<OperationType>Update</OperationType>
<Inventory>
<SKU>424271</SKU>
<Quantity>8</Quantity>
</Inventory>
</Message>
</AmazonEnvelope>
';

$marketplaceIdArray = array("Id" => array('ATVPDKIKX0DER'));

$feedHandle = @fopen('php://temp', 'rw+');
fwrite($feedHandle, $feed);
rewind($feedHandle);

$parameters = array (
'Merchant' => MERCHANT_ID,
'MarketplaceIdList' => $marketplaceIdArray,
'FeedType' => '_POST_INVENTORY_AVAILABILITY_DATA_',
'FeedContent' => $feedHandle,
'PurgeAndReplace' => false,
'ContentMd5' => base64_encode(md5(stream_get_contents($feedHandle), true)),
//'MWSAuthToken' => '<MWS Auth Token>', // Optional
);

rewind($feedHandle);

$request = new MarketplaceWebService_Model_SubmitFeedRequest($parameters);

invokeSubmitFeed($service, $request);

@fclose($feedHandle);

function invokeSubmitFeed(MarketplaceWebService_Interface $service, $request)
{
try {
$response = $service->submitFeed($request);
echo ("Service Response\n");
echo ("=============================================================================\n");

echo("        SubmitFeedResponse\n");
if ($response->isSetSubmitFeedResult()) {
echo("            SubmitFeedResult\n");
$submitFeedResult = $response->getSubmitFeedResult();
if ($submitFeedResult->isSetFeedSubmissionInfo()) {
echo("                FeedSubmissionInfo\n");
$feedSubmissionInfo = $submitFeedResult->getFeedSubmissionInfo();
if ($feedSubmissionInfo->isSetFeedSubmissionId())
{
echo("                    FeedSubmissionId\n");
echo("                        " . $feedSubmissionInfo->getFeedSubmissionId() . "\n");
}
if ($feedSubmissionInfo->isSetFeedType())
{
echo("                    FeedType\n");
echo("                        " . $feedSubmissionInfo->getFeedType() . "\n");
}
if ($feedSubmissionInfo->isSetSubmittedDate())
{
echo("                    SubmittedDate\n");
echo("                        " . $feedSubmissionInfo->getSubmittedDate()->format(DATE_FORMAT) . "\n");
}
if ($feedSubmissionInfo->isSetFeedProcessingStatus())
{
echo("                    FeedProcessingStatus\n");
echo("                        " . $feedSubmissionInfo->getFeedProcessingStatus() . "\n");
}
if ($feedSubmissionInfo->isSetStartedProcessingDate())
{
echo("                    StartedProcessingDate\n");
echo("                        " . $feedSubmissionInfo->getStartedProcessingDate()->format(DATE_FORMAT) . "\n");
}
if ($feedSubmissionInfo->isSetCompletedProcessingDate())
{
echo("                    CompletedProcessingDate\n");
echo("                        " . $feedSubmissionInfo->getCompletedProcessingDate()->format(DATE_FORMAT) . "\n");
}
}
}
if ($response->isSetResponseMetadata()) {
echo("            ResponseMetadata\n");
$responseMetadata = $response->getResponseMetadata();
if ($responseMetadata->isSetRequestId())
{
echo("                RequestId\n");
echo("                    " . $responseMetadata->getRequestId() . "\n");
}
}

echo("            ResponseHeaderMetadata: " . $response->getResponseHeaderMetadata() . "\n");
} catch (MarketplaceWebService_Exception $ex) {
echo("Caught Exception: " . $ex->getMessage() . "\n");
echo("Response Status Code: " . $ex->getStatusCode() . "\n");
echo("Error Code: " . $ex->getErrorCode() . "\n");
echo("Error Type: " . $ex->getErrorType() . "\n");
echo("Request ID: " . $ex->getRequestId() . "\n");
echo("XML: " . $ex->getXML() . "\n");
echo("ResponseHeaderMetadata: " . $ex->getResponseHeaderMetadata() . "\n");
}
}

Так что моя переменная $ feed — это та, о которой я говорю. У меня есть amzn-envelope.xsd и другие файлы .xsd в каталоге с ним. Что я делаю неправильно?

Я нашел решение было на самом деле мой $feed Переменная в том, что мне не нужно \<\? xml version = «1.0» \?> линия, которая была частью моей подачи.

2

Решение

Ваш фид проверяется с помощью Amazon XSD, что означает, что он структурно исправен, но все же может содержать логические ошибки, такие как отсутствие SKU 424271 в вашем списке продуктов. Чтобы получить информацию о логических ошибках из Amazon, недостаточно позвонить SubmitFeed и проверьте его результаты, потому что это только говорит о том, что канал был принят и помещен в очередь обработки. Вам также нужно дождаться обработки этого фида и проверить результаты обработки, как только это произойдет.

как проверить состояние обработки и результаты MWS-фидов

Также обратите внимание, что вам нужно отправить несколько каналов, которые зависят друг от друга. Ленты могут легко потерпеть неудачу, если другие каналы не были отправлены (или не были обработаны) до текущих данных.

отправка нескольких зависимых каналов MWS для обновления продуктов

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]