public AmazonEnvelope CheckFeedStatus(string feedSubmissionId) { GetFeedSubmissionResultRequest req = new GetFeedSubmissionResultRequest(); req.MWSAuthToken = sellerInfo.MwsAuthToken; req.Merchant = sellerInfo.SellerId; req.FeedSubmissionId = feedSubmissionId; RedCarpet.MWS.Feeds.Model.AmazonEnvelope response = null; try { nLogger.Info("CheckFeedStatus"); response = service.GetFeedSubmissionResultAmazonEnvelope(req); } catch (MarketplaceWebServiceException e) { if (e.ErrorCode == "FeedProcessingResultNotReady") { nLogger.Info("feed result not available"); } } catch (Exception e) { nLogger.Error("CheckFeedStatus Failed"); throw; } return(response); }
public void GetFeedSubmissionResultTest() { MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig(); config.ServiceURL = serviceURL; MarketplaceWebService.MarketplaceWebService service = new MarketplaceWebServiceClient( creds.AccessKey, creds.SecretKey, appName, appVersion, config); GetFeedSubmissionResultRequest req = new GetFeedSubmissionResultRequest(); req.MWSAuthToken = mWSAuthToken; req.Merchant = sellerId; req.FeedSubmissionId = "50014017726"; //50003017583 //50002017580 var response = service.GetFeedSubmissionResultAmazonEnvelope(req); Console.WriteLine(response.Message.First().ProcessingReport.ProcessingSummary.MessagesSuccessful); Console.WriteLine(response.Message.First().ProcessingReport.ProcessingSummary.MessagesWithError); if (response.Message.First().ProcessingReport.Result != null) { Console.WriteLine(response.Message.First().ProcessingReport.Result.ResultCode); Console.WriteLine(response.Message.First().ProcessingReport.Result.ResultMessageCode); Console.WriteLine(response.Message.First().ProcessingReport.Result.ResultDescription); } }
/// <summary> /// Create GetFeedSubmissionResultRequest object with the submission ID /// </summary> /// <param name="submissionId">The id of submission</param> /// <returns></returns> public static GetFeedSubmissionResultRequest CreateFeedSubmissionResultRequest(string submissionId) { var request = new GetFeedSubmissionResultRequest { Merchant = MerchantId, FeedSubmissionId = submissionId, }; return(request); }
/// <summary> /// Handles calling the GetFeedSubmissionResult method on Amazon's webservice and returns the stream /// </summary> /// <param name="feedSubmissionId">The id of the feed submission</param> /// <returns>A stream of the xml result</returns> private Stream GetFeedSubmissionResultStream(string feedSubmissionId) { GetFeedSubmissionResultRequest feedSubmissionResultRequest = new GetFeedSubmissionResultRequest(); feedSubmissionResultRequest.Merchant = _MerchantId; feedSubmissionResultRequest.FeedSubmissionId = feedSubmissionId; var stream = new MemoryStream(); feedSubmissionResultRequest.FeedSubmissionResult = stream; _AmazonClient.GetFeedSubmissionResult(feedSubmissionResultRequest); return(feedSubmissionResultRequest.FeedSubmissionResult); }
/// <summary> /// Handles calling the GetFeedSubmissionResult method on Amazon's web service and returns the stream /// </summary> /// <param name="feedSubmissionId">The id of the feed submission</param> /// <returns>A stream of the XML result</returns> private Stream GetFeedSubmissionResult(string feedSubmissionId) { var stream = new MemoryStream(); var feedSubmissionResultRequest = new GetFeedSubmissionResultRequest { Merchant = _merchantId, FeedSubmissionId = feedSubmissionId, FeedSubmissionResult = stream }; // send the feed _amazonCient.GetFeedSubmissionResult(feedSubmissionResultRequest); return(feedSubmissionResultRequest.FeedSubmissionResult); }
/** * Convert GetFeedSubmissionResultRequest to name value pairs */ private IDictionary <String, String> ConvertGetFeedSubmissionResult(GetFeedSubmissionResultRequest request) { IDictionary <String, String> parameters = new Dictionary <String, String>(); parameters.Add("Action", "GetFeedSubmissionResult"); if (request.IsSetMarketplace()) { parameters.Add("Marketplace", request.Marketplace); } if (request.IsSetMerchant()) { parameters.Add("Merchant", request.Merchant); } if (request.IsSetMWSAuthToken()) { parameters.Add("MWSAuthToken", request.MWSAuthToken); } if (request.IsSetFeedSubmissionId()) { parameters.Add("FeedSubmissionId", request.FeedSubmissionId); } return(parameters); }
private void GetSubmitFeedResult(SubmitFeedParamaters objParams, string submissionFeedId, MemoryStream ms) { try { GetFeedSubmissionResultRequest request = new GetFeedSubmissionResultRequest(); request.FeedSubmissionId = submissionFeedId; request.Merchant = objParams.objSOAmazonSetup.SellerId; request.MWSAuthToken = objParams.objSOAmazonSetup.AuthToken; request.FeedSubmissionResult = ms; clientFeed.GetFeedSubmissionResult(request); } catch (Exception ex) { if (ex is MarketplaceWebServiceException) { MarketplaceWebServiceException exception = ex as MarketplaceWebServiceException; if (!string.IsNullOrEmpty(exception.ErrorCode) && exception.ErrorCode.ToLower().Trim() == SOConstants.feedProcessingResultNotReady) { Thread.Sleep(SOHelper.DelayProcess(objParams.objPartialMaint, SOConstants.apiFeedResultWaiting)); GetSubmitFeedResult(objParams, submissionFeedId, ms); } else { throw new PXException(!string.IsNullOrEmpty(ex.Message) ? ex.Message : ex.InnerException != null && ex.InnerException.InnerException != null ? ex.InnerException.InnerException.Message : SOConstants.exceptionIsEmpty); } } else { throw new PXException(!string.IsNullOrEmpty(ex.Message) ? ex.Message : ex.InnerException != null && ex.InnerException.InnerException != null ? ex.InnerException.InnerException.Message : SOConstants.exceptionIsEmpty); } } }
/// <summary> /// Get Feed Submission Result /// </summary> /// <param name="request">Get Feed Submission Result request</param> /// <returns>Get Feed Submission Result Response from the service</returns> /// <remarks> /// retrieves the feed processing report /// /// </remarks> public GetFeedSubmissionResultResponse GetFeedSubmissionResult(GetFeedSubmissionResultRequest request) { return(Invoke <GetFeedSubmissionResultResponse>("GetFeedSubmissionResultResponse.xml")); }
/// <summary> /// retrieves the feed processing report. /// /// </summary> /// <param name="service">Instance of MarketplaceWebService service.</param> /// <param name="request">GetFeedSubmissionResultRequest request.</param> public static async Task InvokeGetFeedSubmissionResult(IMarketplaceWebService service, GetFeedSubmissionResultRequest request) { try { var response = await service.GetFeedSubmissionResult(request); Console.WriteLine("Service Response"); Console.WriteLine("============================================================================="); Console.WriteLine(); Console.WriteLine(" GetFeedSubmissionResultResponse"); if (response.IsSetGetFeedSubmissionResultResult()) { Console.WriteLine(" GetFeedSubmissionResult"); var getFeedSubmissionResultResult = response.GetFeedSubmissionResultResult; if (getFeedSubmissionResultResult.IsSetContentMD5()) { Console.WriteLine(" ContentMD5"); Console.WriteLine(" {0}", getFeedSubmissionResultResult.ContentMD5); } } if (response.IsSetResponseMetadata()) { Console.WriteLine(" ResponseMetadata"); var 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); } }
/// <summary> /// Get Feed Submission Result /// </summary> /// <param name="request">Get Feed Submission Result request</param> /// <returns>Get Feed Submission Result Response from the service</returns> /// <remarks> /// retrieves the feed processing report /// /// </remarks> public GetFeedSubmissionResultResponse GetFeedSubmissionResult(GetFeedSubmissionResultRequest request) { return(Invoke <GetFeedSubmissionResultResponse, GetFeedSubmissionResultRequest>(ConvertGetFeedSubmissionResult(request), request)); }
public AmazonEnvelope GetFeedSubmissionResultAmazonEnvelope(GetFeedSubmissionResultRequest request) { throw new NotImplementedException(); }
private static bool SendAmazonFeed(KeyValuePair <string, string> type, List <FeedModel> liObj) { var config2 = new MarketplaceWebServiceConfig(); // Set configuration to use US marketplace config2.ServiceURL = ConfigurationHelper.ServiceURL; // Set the HTTP Header for user agent for the application. config2.SetUserAgentHeader( ConfigurationHelper.AppName, ConfigurationHelper.Version, "C#"); var amazonClient = new MarketplaceWebServiceClient(ConfigurationHelper.AccessKey, ConfigurationHelper.SecretKey, config2); SubmitFeedRequest request = new SubmitFeedRequest { Merchant = ConfigurationHelper.SellerId, FeedContent = FeedRequestXML.GenerateInventoryDocument(ConfigurationHelper.AppName, liObj, type.Key) }; // Calculating the MD5 hash value exhausts the stream, and therefore we must either reset the // position, or create another stream for the calculation. request.ContentMD5 = MarketplaceWebServiceClient.CalculateContentMD5(request.FeedContent); request.FeedContent.Position = 0; request.FeedType = type.Value; var subResp = FeedSample.InvokeSubmitFeed(amazonClient, request); request.FeedContent.Close(); var feedReq = new GetFeedSubmissionResultRequest() { Merchant = ConfigurationHelper.SellerId, FeedSubmissionId = subResp.SubmitFeedResult.FeedSubmissionInfo.FeedSubmissionId,//"50148017726", FeedSubmissionResult = File.Create("feedSubmissionResult1.xml") }; Thread.Sleep(10000); bool bRet = false; //need to handle error else the loop will be infinite while (true) { GetFeedSubmissionResultResponse getResultResp = null; getResultResp = FeedSample.InvokeGetFeedSubmissionResult(amazonClient, feedReq); if (getResultResp != null) { //using (var op = File.Open("feedSubmissionResult1.xml", FileMode.Open)) //{ using (var stream = feedReq.FeedSubmissionResult) { XDocument doc = XDocument.Parse(stream.ReadToEnd()); //or XDocument.Load(path) string jsonText = JsonConvert.SerializeXNode(doc); Console.WriteLine("\n*** Got Response: {0} ", jsonText); dynamic dyn = JsonConvert.DeserializeObject <ExpandoObject>(jsonText); dynamic processingSummary = dyn.AmazonEnvelope.Message.ProcessingReport.ProcessingSummary; if (processingSummary.MessagesProcessed == processingSummary.MessagesSuccessful) { ProductDAL.UpdateProductAfterAmazonFeed(ConfigurationHelper.ConnectionString, liObj, type.Key); bRet = true; break; } else { //send email with failed sku info - need to handle this Console.WriteLine("\n*** Feed Submission failed. Error: {0} ", jsonText); bRet = false; } } //} } feedReq.FeedSubmissionResult.Close(); File.Delete("feedSubmissionResult1.xml"); feedReq.FeedSubmissionResult = File.Create("feedSubmissionResult1.xml"); Console.WriteLine("Going to sleep for 1 min at {0}", DateTime.Now); Thread.Sleep(60000); } File.Delete("feedSubmissionResult1.xml"); return(bRet); }
public List <XElement> SubmitFeed(string accountName, XElement feed) { List <XElement> errors = new List <XElement>(); SubmitFeedRequest request = new SubmitFeedRequest(); request.FeedType = "_POST_INVENTORY_AVAILABILITY_DATA_"; request.MWSAuthToken = mwsAuthTokenDictionary[accountName]; request.Merchant = sellerIdDictionary[accountName]; request.MarketplaceIdList = new IdList(); request.MarketplaceIdList.Id = new List <string>(); request.MarketplaceIdList.Id.Add(marketplaceId); MemoryStream memoryStream = new MemoryStream(); feed.Save(memoryStream); request.FeedContent = memoryStream; request.FeedContent.Position = 0; request.ContentMD5 = MarketplaceWebServiceClient.CalculateContentMD5(request.FeedContent); request.FeedContent.Position = 0; int retryCount = 0; SubmitFeedResponse response = null; while (retryCount <= 4 && response == null) { Thread.Sleep(TimeSpan.FromMinutes(retryCount * 2)); try { response = mwsClient.SubmitFeed(request); } catch (Exception e) { if (retryCount >= 4) { throw e; } retryCount++; } } memoryStream.Close(); string feedSubmissionId = response.SubmitFeedResult.FeedSubmissionInfo.FeedSubmissionId; int count = 0; bool done = false; while (count < 100 && !done) { Thread.Sleep(60000); GetFeedSubmissionListRequest feedSubmissionListRequest = new GetFeedSubmissionListRequest(); feedSubmissionListRequest.MWSAuthToken = mwsAuthTokenDictionary[accountName]; feedSubmissionListRequest.Merchant = sellerIdDictionary[accountName]; feedSubmissionListRequest.FeedSubmissionIdList = new IdList(); feedSubmissionListRequest.FeedSubmissionIdList.Id.Add(feedSubmissionId); GetFeedSubmissionListResponse feedSubmissionResponse = mwsClient.GetFeedSubmissionList(feedSubmissionListRequest); foreach (FeedSubmissionInfo info in feedSubmissionResponse.GetFeedSubmissionListResult.FeedSubmissionInfo) { if (info.FeedSubmissionId == feedSubmissionId) { if (info.FeedProcessingStatus == "_DONE_") { done = true; GetFeedSubmissionResultRequest feedSubmissionResultRequest = new GetFeedSubmissionResultRequest(); feedSubmissionResultRequest.MWSAuthToken = mwsAuthTokenDictionary[accountName]; feedSubmissionResultRequest.Merchant = sellerIdDictionary[accountName]; feedSubmissionResultRequest.FeedSubmissionId = feedSubmissionId; MemoryStream stream = new MemoryStream(); feedSubmissionResultRequest.FeedSubmissionResult = stream; retryCount = 0; GetFeedSubmissionResultResponse feedSubmissionResultResponse = null; while (retryCount <= m_maxRetry && feedSubmissionResultResponse == null) { Thread.Sleep(TimeSpan.FromMinutes(retryCount * 2)); try { feedSubmissionResultResponse = mwsClient.GetFeedSubmissionResult(feedSubmissionResultRequest); } catch (MarketplaceWebServiceException e) { if (e.ErrorCode == "RequestThrottled") { retryCount++; } } } XElement responseElement = XElement.Load(stream); IEnumerable <XElement> messages = responseElement.Descendants("Message"); foreach (XElement message in messages) { XElement processingReportElement = message.Element("ProcessingReport"); int nError = (int)processingReportElement.Element("ProcessingSummary").Element("MessagesWithError"); if (nError > 0) { int messageId = (int)message.Element("MessageID"); } } } } } count++; } return(errors); }
/// <summary> /// retrieves the feed processing report /// /// </summary> /// <param name="service">Instance of MarketplaceWebService service</param> /// <param name="request">GetFeedSubmissionResultRequest request</param> public static void InvokeGetFeedSubmissionResult(MarketplaceWebService service, GetFeedSubmissionResultRequest request) { try { GetFeedSubmissionResultResponse response = service.GetFeedSubmissionResult(request); Console.WriteLine("Service Response"); Console.WriteLine("============================================================================="); Console.WriteLine(); Console.WriteLine(" GetFeedSubmissionResultResponse"); if (response.IsSetGetFeedSubmissionResultResult()) { Console.WriteLine(" GetFeedSubmissionResult"); GetFeedSubmissionResultResult getFeedSubmissionResultResult = response.GetFeedSubmissionResultResult; if (getFeedSubmissionResultResult.IsSetContentMD5()) { Console.WriteLine(" ContentMD5"); Console.WriteLine(" {0}", getFeedSubmissionResultResult.ContentMD5); } } if (response.IsSetResponseMetadata()) { Console.WriteLine(" ResponseMetadata"); ResponseMetadata responseMetadata = response.ResponseMetadata; if (responseMetadata.IsSetRequestId()) { Console.WriteLine(" RequestId"); Console.WriteLine(" {0}", responseMetadata.RequestId); } } } 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); } }
public static void GetAmazonTrackingFeedSubmissionResult(string feedSubmissionId, string merchantId, string marketplaceId, string accessKeyId, string secretAccessKey) { GetFeedSubmissionResultRequest request = new GetFeedSubmissionResultRequest(); request.Merchant = merchantId; request.FeedSubmissionId = feedSubmissionId; //request.FeedSubmissionResult = File.Open("feedSubmissionResult.xml", FileMode.OpenOrCreate, FileAccess.ReadWrite); request.FeedSubmissionResult = new FileStream(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\AmazonTrackingResult.xml", FileMode.Truncate, FileAccess.ReadWrite); const string applicationName = "<Your Application Name>"; const string applicationVersion = "<Your Application Version>"; MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig(); config.ServiceURL = "https://mws.amazonservices.com"; config.SetUserAgentHeader( applicationName, applicationVersion, "C#", "<Parameter 1>", "<Parameter 2>"); MarketplaceWebService.MarketplaceWebService service = new MarketplaceWebServiceClient(accessKeyId, secretAccessKey, config); string requestId = ""; try { GetFeedSubmissionResultResponse response = service.GetFeedSubmissionResult(request); Console.WriteLine("Service Response"); Console.WriteLine("============================================================================="); Console.WriteLine(); Console.WriteLine(" GetFeedSubmissionResultResponse"); if (response.IsSetGetFeedSubmissionResultResult()) { Console.WriteLine(" GetFeedSubmissionResult"); GetFeedSubmissionResultResult getFeedSubmissionResultResult = response.GetFeedSubmissionResultResult; if (getFeedSubmissionResultResult.IsSetContentMD5()) { Console.WriteLine(" ContentMD5"); Console.WriteLine(" {0}", getFeedSubmissionResultResult.ContentMD5); } } 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) { ExceptionUtility exceptionUtility = new ExceptionUtility(); exceptionUtility.CatchMethod(ex, "AmazonTrackingResult->GetAmazonTrackingResult: ", feedSubmissionId + ": " + ex.Message.ToString(), senderEmail, messageFromPassword, messageToEmail, smtpClient, smtpPortNum); 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); } request.FeedSubmissionResult.Close(); request.FeedSubmissionResult.Dispose(); }
/// <summary> /// retrieves the feed processing report /// /// </summary> /// <param name="service">Instance of MarketplaceWebService service</param> /// <param name="request">GetFeedSubmissionResultRequest request</param> public static GetFeedSubmissionResultResponse InvokeGetFeedSubmissionResult(MarketplaceWebService service, GetFeedSubmissionResultRequest request) { try { GetFeedSubmissionResultResponse response = service.GetFeedSubmissionResult(request); string re = response.ToXML(); Console.WriteLine("Service Response"); Console.WriteLine("============================================================================="); Console.WriteLine(); Console.WriteLine(" GetFeedSubmissionResultResponse"); if (response.IsSetGetFeedSubmissionResultResult()) { Console.WriteLine(" GetFeedSubmissionResult"); GetFeedSubmissionResultResult getFeedSubmissionResultResult = response.GetFeedSubmissionResultResult; //if (getFeedSubmissionResultResult.IsSetContentMD5()) //{ // Console.WriteLine(" ContentMD5"); // Console.WriteLine(" {0}", getFeedSubmissionResultResult.ContentMD5); //} } 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.ResponseHeaderMetadata2.RequestId); //Console.WriteLine(" ResponseContext"); //Console.WriteLine(" " + response.ResponseHeaderMetadata2.ResponseContext); //Console.WriteLine(" Timestamp"); //Console.WriteLine(" " + response.ResponseHeaderMetadata2.Timestamp); return(response); } catch (MarketplaceWebServiceException ex) { if (ex.ErrorCode == "FeedProcessingResultNotReady") { Console.WriteLine("{0} {1} ", ex.Message, DateTime.Now); } else { 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); } return(null); } }
/// <summary> /// Get Feed Submission Result /// </summary> /// <param name="request">Get Feed Submission Result request</param> /// <returns>Get Feed Submission Result Response from the service</returns> /// <remarks> /// retrieves the feed processing report /// /// </remarks> public async Task <GetFeedSubmissionResultResponse> GetFeedSubmissionResult(GetFeedSubmissionResultRequest request) { return(await Invoke <GetFeedSubmissionResultResponse>("GetFeedSubmissionResultResponse.xml")); }