public static void GetAmazonReport(string accountName, string merchantId, string marketplaceId, string accessKeyId, string secretAccessKey, string reportGenerateId) { string senderEmail = ConfigurationManager.AppSettings["senderEmail"]; string messageFromPassword = ConfigurationManager.AppSettings["messageFromPassword"]; string messageToEmail = ConfigurationManager.AppSettings["messageToEmail"]; string smtpClient = ConfigurationManager.AppSettings["smtpClient"]; int smtpPortNum = ConvertUtility.ToInt(ConfigurationManager.AppSettings["smtpPortNum"]); GetReportRequest request = new GetReportRequest(); request.Merchant = merchantId; request.ReportId = reportGenerateId; //request.Report = File.Open(ConfigurationManager.AppSettings["filePath"], FileMode.OpenOrCreate, FileAccess.ReadWrite); request.Report = new FileStream(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + accountName + "_AmazonInventoryReport.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); try { GetReportResponse response = service.GetReport(request); Console.WriteLine("Service Response"); Console.WriteLine("============================================================================="); Console.WriteLine(); Console.WriteLine(" GetReportResponse"); if (response.IsSetGetReportResult()) { Console.WriteLine(" GetReportResult"); GetReportResult getReportResult = response.GetReportResult; if (getReportResult.IsSetContentMD5()) { Console.WriteLine(" ContentMD5"); Console.WriteLine(" {0}", getReportResult.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, "GetAmazonReport ", accountName + " " + ex.Message.ToString(), senderEmail, messageFromPassword, messageToEmail, smtpClient, smtpPortNum); } request.Report.Close(); request.Report.Dispose(); }
public string GetReport(string User, string Pass, string MsgID) { string result = ""; List <Report> Reports = new List <Report>(); // 判断参数合法性 if (User == "") { result = _ERR_USERISEMPTY; } else { if (Pass == "") { result = _ERR_PASSISEMPTY; } else { if (MsgID == "") // 根据账号查询 { try { // 密码加密 //SMS.Model.RPCResult<string> enpass = InterfaceProxy.GetSendService().Encrypt(Pass); SMS.Model.RPCResult <List <SMS.Model.StatusReport> > r = InterfaceProxy.GetSendService().GetReport(User, Pass); if (r.Success) { result = _ERR_SUCCESS; List <SMS.Model.StatusReport> rts = r.Value; for (int k = 0; k < rts.Count; k++) { Report rt = new Report(); rt.MsgID = rts[k].SMSID.ToString(); rt.Destination = rts[k].Number; rt.Stat = rts[k].StatusCode.ToString(); Reports.Add(rt); } } else { result = r.Message; } } catch (Exception ex) { result = _ERR_SERVICE; } } else // 根据发送的短信标识查询 { try { // 密码加密 //SMS.Model.RPCResult<string> enpass = InterfaceProxy.GetSendService().Encrypt(Pass); SMS.Model.RPCResult <List <SMS.Model.StatusReport> > r = InterfaceProxy.GetSendService().GetReport(User, Pass, MsgID); if (r.Success) { result = _ERR_SUCCESS; List <SMS.Model.StatusReport> rts = r.Value; for (int k = 0; k < rts.Count; k++) { Report rt = new Report(); rt.MsgID = rts[k].SMSID.ToString(); rt.Destination = rts[k].Number; rt.Stat = rts[k].StatusCode.ToString(); Reports.Add(rt); } } else { result = r.Message; } } catch (Exception ex) { result = _ERR_SERVICE; } } } } GetReportResult ret = new GetReportResult(); ret.Result = result; ret.Reports = Reports; string data = JsonSerialize.Serialize <GetReportResult>(ret); return(data); }
static void Main(string[] args) { ILogger nLogger = LogManager.GetLogger("Inventory.Console Logger"); nLogger.Info("Starting console app"); string outputLocation = "c:/Temp"; string keyFileLocation = "c:/Temp"; string asinFilterListLocation = "c:/Temp"; var appSettings = ConfigurationManager.AppSettings; outputLocation = appSettings["outputLocation"]; keyFileLocation = appSettings["keyFileLocation"]; asinFilterListLocation = appSettings["asinFilterListLocation"]; nLogger.Info("outputLocation: " + outputLocation); nLogger.Info("keyFileLocation: " + keyFileLocation); nLogger.Info("asinFilterListLocation: " + asinFilterListLocation); string keyData = File.ReadAllText(keyFileLocation); ServiceContext serviceContext = new ServiceContext(); serviceContext = JsonConvert.DeserializeObject <ServiceContext>(keyData); Console.WriteLine("month (1-12)"); string m = Console.ReadLine(); nLogger.Info("month: " + m); Console.WriteLine("year "); string y = Console.ReadLine(); nLogger.Info("year: " + y); int month; int year; DateTime date = DateTime.Now.Date; if (!Int32.TryParse(m, out month)) { month = date.Month; } if (!Int32.TryParse(y, out year)) { year = date.Year; } DateTime startDate = new DateTime(year, month, 1); DateTime endDate = startDate.AddMonths(1); try { ReportHandler reportHandler = new ReportHandler(serviceContext, nLogger); ReportManager reportManager = new ReportManager(reportHandler, serviceContext, nLogger); ReportBuilder reportBuilder = new ReportBuilder(); nLogger.Info("getting ordersReport"); GetReportResult ordersReport = reportManager.GetReport(ReportType._GET_FLAT_FILE_ALL_ORDERS_DATA_BY_ORDER_DATE_, startDate, endDate, outputLocation); nLogger.Info("getting inventoryReport"); GetReportResult inventoryReport = reportManager.GetReport(ReportType._GET_FBA_MYI_ALL_INVENTORY_DATA_, DateTime.Now.Date.AddDays(-1), DateTime.Now.Date, outputLocation); nLogger.Info("getting ordersTable"); DataTable ordersTable = Util.StringToDataTable(ordersReport.Content); nLogger.Info("getting inventoryTable"); DataTable inventoryTable = Util.StringToDataTable(inventoryReport.Content); nLogger.Info("calling JoinInventoryAndOrders"); IEnumerable <SalesInventoryReportItem> reportItems = reportBuilder.JoinInventoryAndOrders(inventoryTable, ordersTable, startDate); nLogger.Info(string.Format("SalesInventoryReportItem report created, Count: {0}", reportItems.Count())); nLogger.Info("GetAsinFilterList"); IList <string> asinFilterList = reportManager.GetAsinFilterList(asinFilterListLocation); nLogger.Info(string.Format("asinFilterList, Count: {0}", asinFilterList.Count())); nLogger.Info("filtering by asins"); reportItems = reportManager.FilterReportByAsins(reportItems.ToList(), asinFilterList); string writePath = reportHandler.CreateFileLocation(outputLocation, serviceContext.SellerId, "InventoryAndOrders", startDate, endDate); nLogger.Info("SalesInventoryReportItem report path: " + writePath); Directory.CreateDirectory(Path.GetDirectoryName(writePath)); using (var csv = new CsvWriter(new StreamWriter(writePath))) { csv.WriteRecords(reportItems); } nLogger.Info("csv written"); } catch (Exception e) { nLogger.Error(e); Console.WriteLine(e.Message); } Console.WriteLine("Report Complete."); Console.ReadKey(); }