Возникли проблемы с использованием SubmitFeed MWS - PullRequest
1 голос
/ 19 сентября 2019

В настоящее время я пытаюсь разработать программу, которая будет использовать вызов submitfeed для MWS API.

Я использую библиотеку C # MarketplaceWebService, предоставляемую amazon, и пытаюсь отправить фид.

Я использую фид в этом API Amazon MWS: порядок стека _POST_PRODUCT_DATA_ , чтобы посмотреть, добавляет ли он какие-либо продукты, но завершается с ошибкой, что значение MD5 «Полученное содержимое» G85osovfRorZxCAeswQpBQ == не соответствует вычисленному значению+ nfzhPlusTqb / Cbo18vEiA == "

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

Вот код

    private void SyncProduct()
    {
        MarketplaceWebServiceConfig mwsconfig = new MarketplaceWebServiceConfig();
        mwsconfig.ServiceURL = serviceurl;

        MarketplaceWebServiceClient mwsclient = new MarketplaceWebServiceClient(AccessKeyId, SecretKeyId, ApplicationName, ApplicationVersion,mwsconfig);
        //
        //
        //
        SubmitFeedRequest request = new SubmitFeedRequest
        {
            Merchant = SellerId,
            MarketplaceIdList = new IdList
            {
                Id = new List<string>(new string[] { MarketplaceId })
            }
        };
        var fileName = "C://Windows//Temp//AmazonOrder.xml";


        request.FeedContent = File.Open(fileName, FileMode.Open, FileAccess.Read);
        request.ContentMD5 = MarketplaceWebServiceClient.CalculateContentMD5(request.FeedContent);
        request.FeedContent.Position = 0;

        request.FeedType = "_POST_PRODUCT_DATA_";
        InvoiceSubmitFeed(mwsclient,request);
        request.FeedContent.Close();
        if (!String.IsNullOrEmpty(feedid))
        {
            GetFeedSubmissionResult(feedid);
        }
    }

    private static void InvoiceSubmitFeed(MarketplaceWebServiceClient mwsclient,SubmitFeedRequest request)
    {
        try
        {
            SubmitFeedResponse response = mwsclient.SubmitFeed(request);


            Console.WriteLine("Service Response");
            Console.WriteLine("=============================================================================");
            Console.WriteLine();

            Console.WriteLine("        SubmitFeedResponse");
            if (response.IsSetSubmitFeedResult())
            {
                Console.WriteLine("            SubmitFeedResult");
                SubmitFeedResult submitFeedResult = response.SubmitFeedResult;

                if (submitFeedResult.IsSetFeedSubmissionInfo())
                {
                    Console.WriteLine("                FeedSubmissionInfo");
                    FeedSubmissionInfo feedSubmissionInfo = submitFeedResult.FeedSubmissionInfo;
                    if (feedSubmissionInfo.IsSetFeedSubmissionId())
                    {
                        Console.WriteLine("                    FeedSubmissionId");
                        Console.WriteLine("                        {0}", feedSubmissionInfo.FeedSubmissionId);
                    }
                    if (feedSubmissionInfo.IsSetFeedType())
                    {
                        Console.WriteLine("                    FeedType");
                        Console.WriteLine("                        {0}", feedSubmissionInfo.FeedType);
                    }
                    if (feedSubmissionInfo.IsSetSubmittedDate())
                    {
                        Console.WriteLine("                    SubmittedDate");
                        Console.WriteLine("                        {0}", feedSubmissionInfo.SubmittedDate);
                    }
                    if (feedSubmissionInfo.IsSetFeedProcessingStatus())
                    {
                        Console.WriteLine("                    FeedProcessingStatus");
                        Console.WriteLine("                        {0}", feedSubmissionInfo.FeedProcessingStatus);
                    }
                    if (feedSubmissionInfo.IsSetStartedProcessingDate())
                    {
                        Console.WriteLine("                    StartedProcessingDate");
                        Console.WriteLine("                        {0}", feedSubmissionInfo.StartedProcessingDate);
                    }
                    if (feedSubmissionInfo.IsSetCompletedProcessingDate())
                    {
                        Console.WriteLine("                    CompletedProcessingDate");
                        Console.WriteLine("                        {0}", feedSubmissionInfo.CompletedProcessingDate);
                    }
                    feedid = feedSubmissionInfo.FeedSubmissionId;

                }
            }
            if (response.IsSetResponseMetadata())
            {
                Console.WriteLine("            ResponseMetadata");
                ResponseMetadata responseMetadata = response.ResponseMetadata;
                if (responseMetadata.IsSetRequestId())
                {
                    Console.WriteLine("                RequestId");
                    Console.WriteLine("                    {0}", responseMetadata.RequestId);
                }
            }

            Console.WriteLine("            ResponseHeaderMetadata");
            Console.WriteLine("                RequestId");
            Console.WriteLine("                    " + response.ResponseHeaderMetadata.RequestId);
            Console.WriteLine("                ResponseContext");
            Console.WriteLine("                    " + response.ResponseHeaderMetadata.ResponseContext);
            Console.WriteLine("                Timestamp");
            Console.WriteLine("                    " + response.ResponseHeaderMetadata.Timestamp);

        }
        catch (MarketplaceWebServiceException ex)
        {
            Console.WriteLine("Caught Exception: " + ex.Message);
            Console.WriteLine("Response Status Code: " + ex.StatusCode);
            Console.WriteLine("Error Code: " + ex.ErrorCode);
            Console.WriteLine("Error Type: " + ex.ErrorType);
            Console.WriteLine("Request ID: " + ex.RequestId);
            Console.WriteLine("XML: " + ex.XML);
            Console.WriteLine("ResponseHeaderMetadata: " + ex.ResponseHeaderMetadata);
        }
    }

    public void GetFeedSubmissionResult(string reportid)
    {

        string strbuff = string.Empty;

        MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig();
        config.ServiceURL = serviceurl;

        MarketplaceWebServiceClient client = new MarketplaceWebServiceClient(
                                                         AccessKeyId,
                                                         SecretKeyId,
                                                         ApplicationName,
                                                         ApplicationVersion,
                                                         config);
        GetFeedSubmissionResultRequest request = new GetFeedSubmissionResultRequest();
        request.FeedSubmissionId = reportid;
        request.Merchant = SellerId;
        //request.MWSAuthToken = MWSAuthToken;
        request.FeedSubmissionResult = System.IO.File.Open(@"C:\Windows\Temp\SubmissionResult.xml", System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite);

        GetFeedSubmissionResultResponse response = client.GetFeedSubmissionResult(request);
        if (response.IsSetGetFeedSubmissionResultResult())
        {
            strbuff = "Processing completed successfully.";
        }
        Console.WriteLine( strbuff);
    }
...