Ошибка обновления количества товаров на Amazon с помощью API - PullRequest
4 голосов
/ 06 января 2012

Я прочитал много документации по Amazon API и до сих пор не ясно, какую ошибку я получаю, в документации нет полезных примеров.

Я использую это для обновления моего изобретения:

Я прочитал разные документы, в каждом из которых указан новый URL-адрес службы, и я действительно смущен этим ..

config.ServiceURL = "https://mws.amazonservices.co.uk/FulfillmentInventory/2011-10-01";
config.ServiceURL = "https://secure.amazon.co.uk/exec/panama/seller-admin/catalog-upload/modify-only";

Мой код для запуска процесса и отправки запроса:

String accessKeyId = "#";
String secretAccessKey = "#";
String merchantId = "#";
String marketplaceId = "#";

MemoryStream stream = new MemoryStream();
stream = GenerateInventoryDocument(txtxSku.Text, merchantId, txtQuantity.Text);

const string applicationName = "C#";
const string applicationVersion = "4";

MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig();

MarketplaceWebService.MarketplaceWebService service = new MarketplaceWebServiceClient(accessKeyId, secretAccessKey, applicationName, applicationVersion, config);
MarketplaceWebService.Model.SubmitFeedResponse response = new MarketplaceWebService.Model.SubmitFeedResponse();

MarketplaceWebService.Model.SubmitFeedRequest request = new MarketplaceWebService.Model.SubmitFeedRequest();
request.Merchant = merchantId;
request.MarketplaceIdList = new MarketplaceWebService.Model.IdList();
request.MarketplaceIdList.Id = new List<string>(new string[] { marketplaceId });

request.FeedContent = stream;
request.ContentMD5 = MarketplaceWebServiceClient.CalculateContentMD5(request.FeedContent);
request.FeedContent.Position = 0;

request.FeedType = "_POST_INVENTORY_AVAILABILITY_DATA_";

SubmitFeedSample.InvokeSubmitFeed(service, request);

Функция GenerateInventoryDocument():

MemoryStream myDocument = new MemoryStream();
string myString;

//Add the document header.
myString = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
this.AddStringToStream(ref myString, myDocument);

myString = "<AmazonEnvelope xsi:noNamespaceSchemaLocation=\"amzn-envelope.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">";
this.AddStringToStream(ref myString, myDocument);

myString = "<Header>";
this.AddStringToStream(ref myString, myDocument);

myString = "<DocumentVersion>1.01</DocumentVersion>";
this.AddStringToStream(ref myString, myDocument);

myString = "<MerchantIdentifier>" + merchantID + "</MerchantIdentifier>";
this.AddStringToStream(ref myString, myDocument);

myString = "</Header>";
this.AddStringToStream(ref myString, myDocument);

myString = "<MessageType>Inventory</MessageType>";
this.AddStringToStream(ref myString, myDocument);

myString = "<Message>";
this.AddStringToStream(ref myString, myDocument);

myString = "<MessageID>1</MessageID>";
this.AddStringToStream(ref myString, myDocument);

myString = "<OperationType>Update</OperationType>";
this.AddStringToStream(ref myString, myDocument);

myString = "<Inventory>";
this.AddStringToStream(ref myString, myDocument);

myString = "<SKU>" + sku + "</SKU>";
this.AddStringToStream(ref myString, myDocument);

myString = "<FulfillmentLatency>1</FulfillmentLatency>";
this.AddStringToStream(ref myString, myDocument);

myString = "<Quantity>" + quantity + "</Quantity>";
this.AddStringToStream(ref myString, myDocument);

myString = "</Inventory>";
this.AddStringToStream(ref myString, myDocument);

myString = "</Message>";
this.AddStringToStream(ref myString, myDocument);

myString = "</AmazonEnvelope>";
this.AddStringToStream(ref myString, myDocument);

return myDocument;

Когда я использую этот URL:

config.ServiceURL = "https://mws.amazonservices.co.uk/FulfillmentInventory/2011-10-01";

Я получаю следующее сообщение об ошибке:

<ErrorResponse xmlns="http://mws.amazonaws.com/FulfillmentInventory/2011-10-01/"> 
    <Error>
       <Type>Sender</Type>
       <Code>NoSuchVersion</Code>
       <Message>The requested version ( 2010-01-01 ) is not valid.</Message>
       <Detail/>
    </Error>
    <RequestID>f35d1eb0-b8e7-40c0-8394-027619fb0762</RequestID>
</ErrorResponse>

И когда я использую этот сервисный URL, который я прочитал в другом документе:

config.ServiceURL = "https://secure.amazon.co.uk/exec/panama/seller-admin/catalog-upload/modify-only";

Я получаю следующее сообщение об ошибке:

<BusinessLogicError>CUSTOMER_UNAUTHORIZED</BusinessLogicError>

Пожалуйста, дайте мне знать, если что-то не так в этом коде, так как я полностью слежу за документами, и третий день я потратил на это. Может быть, я схожу с ума: D

Это небольшие проблемы, и я не могу их понять.

1 Ответ

4 голосов
/ 07 января 2012

В вашем коде есть несколько ошибок. Я предполагаю, что вы хотите обновить инвентарь, который вы выполняете самостоятельно (в отличие от FBA ). Я также предполагаю, что вы являетесь профессиональным продавцом, который требуется от Amazon для использования любых API-интерфейсов MWS.

Правильный serviceUrl для Великобритании - https://mws.amazonservices.co.uk. Правильный feedType для обновления / добавления инвентаря - _POST_FLAT_FILE_LISTINGS_DATA_. Есть и другие типы кормов, которые вы можете использовать. См. Раздел «Перечисление типов фидов» справки Feeds API . Этот тип ленты представляет собой файл с разделителями табуляции, и вы можете найти шаблон (ы) здесь . Существует также тип фида XML, но вы должны иметь соответствующую учетную запись, чтобы использовать этот тип подачи фида. Эти типы учетных записей только по приглашению.

Предполагая, что вы загрузили C # Feeds API , вам следует взглянуть на файл MarketplaceWebServiceSamples.cs, который включен в проект MarketplaceWebService.Samples внутри решения. В этом файле есть несколько разделов, которые были закомментированы. Найдите тот, который связан с действием «Отправить канал», и используйте его, чтобы узнать, как отправить канал.

Вам следует потратить немного больше времени на чтение документации по API фидов , особенно в разделе Перечисление типов фидов, поскольку есть другие типы фидов, которые вы можете использовать (только с разделителями табуляции).

...