Как загрузить отчеты Amazon с помощью API Amazon MWS - PullRequest
0 голосов
/ 07 сентября 2018

Я использую клиентскую библиотеку API Amazon Reports - C # - версия 2009-01-01 по этой ссылке: Клиент Amazon Reports C # .

Проблема заключается в том, что даже после выборок из этой библиотеки метод GetReport () из класса MarketplaceWebServiceClient.cs не будет возвращать реальный отчет в ответе GetReportResponse ().

Кажется, что-то происходит там, где GetReportResponse возвращает NULL вместо каких-либо данных.

1 Ответ

0 голосов
/ 07 сентября 2018

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

Итак, я получил правильный ответ с этого сайта: download-amazon-reports-using-mws-api

В основном, наиболее важными являются следующие строки:

var request = new GetReportRequest();

//... (more details in a few)

var path = request.ReportId + "_" + Guid.NewGuid();
var thePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + string.Format("{0}.txt", path);

request.Report = File.Open(thePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);  <-- this line makes the trick!

Вам необходимо открыть файл и передать ссылку при запросе отчета. Возвращенный файл отчета будет расположен по адресу thePath.

Вот метод теста, который я создал, который вы можете использовать для получения ваших отчетов. Обновите свои учетные данные MWS API соответствующим образом. Вам также необходимо скачать библиотеку API отчетов Amazon C # по ссылке выше.

        [TestMethod]
        public void TestGetReport()
        {
            // Developer AWS access key
            var accessKey = "[YOUR-ACCESS-KEY]";

            // Developer AWS secret key
            var secretKey = "[YOUR-SECRET-KEY]";

            // The client application name
            var appName = "MWS Reports API SAMPLE";

            // The client application version
            var appVersion = "1.0";

            // The endpoint for region service and version (see developer guide)
            // ex: https://mws.amazonservices.com
            var serviceURL = "https://mws.amazonservices.com";

            var config = new MarketplaceWebServiceConfig();
            config.ServiceURL = serviceURL;

            var client = new MarketplaceWebServiceClient(accessKey, secretKey, appName, appVersion, config);

            var request = new GetReportRequest();
            var sellerId = "[YOUR-SELLER-ID]";
            request.Merchant = sellerId;
            var mwsAuthToken = "[YOUR-MWS-AUTH-TOKEN]";
            request.MWSAuthToken = mwsAuthToken;
            request.ReportId = "[YOUR-REPORT-ID]";

            var path = request.ReportId + "_" + Guid.NewGuid();
            var thePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + string.Format("{0}.txt", path);

            request.Report = File.Open(thePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);

            //request.ReportTypeList = new TypeList { Type = new List<string> { "_GET_V2_SETTLEMENT_REPORT_DATA_XML_" } };

            try
            {
                GetReportResponse response = null;
                response = client.GetReport(request);
                Console.WriteLine("Response:");
                var rhmd = response.ResponseHeaderMetadata;
                // We recommend logging the request id and timestamp of every call.
                Console.WriteLine("RequestId: " + rhmd.RequestId);
                Console.WriteLine("Timestamp: " + rhmd.Timestamp);
                var responseXml = response.ToXML();
                Console.WriteLine(responseXml);
                request.Report.Close();
            }
            catch (MarketplaceWebServiceException ex)
            {
                // Exception properties are important for diagnostics.
                ResponseHeaderMetadata rhmd = ex.ResponseHeaderMetadata;
                Console.WriteLine("Service Exception:");
                if (rhmd != null)
                {
                    Console.WriteLine("RequestId: " + rhmd.RequestId);
                    Console.WriteLine("Timestamp: " + rhmd.Timestamp);
                }

                Console.WriteLine("Message: " + ex.Message);
                Console.WriteLine("StatusCode: " + ex.StatusCode);
                Console.WriteLine("ErrorCode: " + ex.ErrorCode);
                Console.WriteLine("ErrorType: " + ex.ErrorType);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Message: " + ex.Message);
            }
        }
...