private static string BuildEbayPaymentTransactionSql(EbayOrderPaymentTransactionType eoptType) { string sql = @"INSERT INTO [dbo].[EbayPaymentTransaction] ([OrderID] ,[ExternalTransactionID] ,[ExternalTransactionStatus] ,[ExternalTransactionTime] ,[FeeOrCreditAmount] ,[PaymentOrRefundAmount] ,[EnterDate] ,[UpdateDate]) VALUES ('" + eoptType.OrderID + "','" + eoptType.ExternalTransactionID + "','" + eoptType.ExternalTransactionStatus + "','" + eoptType.ExternalTransactionTime + "','" + eoptType.FeeOrCreditAmount + "','" + eoptType.PaymentOrRefundAmount + "','" + eoptType.EnterDate + "','" + eoptType.UpdateDate + "')"; return(sql); }
private static EbayOrderPaymentTransactionType AddOrderPaymentTransaction(string orderID, ExternalTransactionType externalTransactionType) { EbayOrderPaymentTransactionType ebayOrderPaymentTransactionType = new EbayOrderPaymentTransactionType(); ebayOrderPaymentTransactionType.OrderID = orderID; ebayOrderPaymentTransactionType.ExternalTransactionID = externalTransactionType.ExternalTransactionID.ToString(); ebayOrderPaymentTransactionType.ExternalTransactionStatus = externalTransactionType.ExternalTransactionStatus.ToString(); if (externalTransactionType.ExternalTransactionTime.ToLocalTime() <= ConvertUtility.ToDateTime("1901-01-01 00:00:00")) { ebayOrderPaymentTransactionType.ExternalTransactionTime = (DateTime)SqlDateTime.MinValue; } else { ebayOrderPaymentTransactionType.ExternalTransactionTime = externalTransactionType.ExternalTransactionTime.ToLocalTime(); } ebayOrderPaymentTransactionType.FeeOrCreditAmount = externalTransactionType.FeeOrCreditAmount == null ? 0 : externalTransactionType.FeeOrCreditAmount.Value; ebayOrderPaymentTransactionType.PaymentOrRefundAmount = externalTransactionType.PaymentOrRefundAmount == null ? 0 : externalTransactionType.PaymentOrRefundAmount.Value; ebayOrderPaymentTransactionType.EnterDate = System.DateTime.Now; ebayOrderPaymentTransactionType.UpdateDate = System.DateTime.Now; return ebayOrderPaymentTransactionType; }
public static List<EbayOrderType> GetOrderFromEbay(string token,string accountNum) { 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"]); List<EbayOrderType> OrderList = new List<EbayOrderType>(); ApiContext context = new ApiContext(); context.ApiCredential.eBayToken = token; context.SoapApiServerUrl = "https://api.ebay.com/wsapi"; context.Site = SiteCodeType.US; DateTime createTimeFrom, createTimeTo; GetOrdersCall GetOrderCall = new GetOrdersCall(context); GetOrderCall.DetailLevelList = new DetailLevelCodeTypeCollection(); GetOrderCall.DetailLevelList.Add(DetailLevelCodeType.ReturnAll); createTimeFrom = DateTime.Now.AddDays(-15).ToUniversalTime(); createTimeTo = DateTime.Now.ToUniversalTime(); int pageNumber = 1; int errorCount = 0; GetOrderCall.CreateTimeFrom = createTimeFrom; GetOrderCall.CreateTimeTo = createTimeTo; GetOrderCall.OrderStatus = OrderStatusCodeType.Completed; while (pageNumber<100) { try { PaginationType pagination = new PaginationType(); pagination.EntriesPerPage = 100; GetOrderCall.Pagination = pagination; pagination.PageNumber = pageNumber; GetOrderCall.Execute(); int totalPageNumber = GetOrderCall.PaginationResult.TotalNumberOfPages; if (pageNumber > totalPageNumber) { break; } else { if (GetOrderCall.ApiResponse.Ack != AckCodeType.Failure) { if (GetOrderCall.ApiResponse.OrderArray.Count != 0) { foreach (OrderType orderType in GetOrderCall.ApiResponse.OrderArray) { try { EbayOrderType ebayOrderType = new EbayOrderType(); string orderId = orderType.OrderID; DataRow checkDuplidatedDr = Db.Db.CheckDuplicatedOrderID(orderId); if (checkDuplidatedDr!=null) { if(checkDuplidatedDr["OrderStatus"].ToString() == "Completed") { continue; // continue if order already exist } else { Db.Db.DeleteUncompletedEbayOrder(orderId); } } else { EbayOrderHeaderType ebayOrderHeaderType = AddOrderHeader(orderType);//add header info foreach (ExternalTransactionType externalTransactionType in orderType.ExternalTransaction)//add external trasnaction info { EbayOrderPaymentTransactionType ebayOrderPaymentTransactionType = AddOrderPaymentTransaction(orderId, externalTransactionType); ebayOrderType.paymentTransaction.Add(ebayOrderPaymentTransactionType); } ebayOrderType.Header = ebayOrderHeaderType; int lineId = 0; foreach (TransactionType transactionType in orderType.TransactionArray)//add line info { lineId = lineId + 1; EbayOrderLineType ebayOrderLineType = AddOrderLine(orderId, transactionType, lineId); ebayOrderType.Line.Add(ebayOrderLineType); } OrderList.Add(ebayOrderType); } } catch(Exception ex) { ExceptionUtility exceptionUtility = new ExceptionUtility(); exceptionUtility.CatchMethod(ex, accountNum + ": GetOrderCall--foreach ", ex.Message.ToString(), senderEmail, messageFromPassword, messageToEmail, smtpClient, smtpPortNum); continue; //continue next single order if current order error } } } else { continue; // continue next account if no order } } else { ExceptionUtility exceptionUtility = new ExceptionUtility(); exceptionUtility.ErrorWarningMethod("AckCodeType Failure: " + accountNum, "AckCodeType Failure: " + accountNum, senderEmail, messageFromPassword, messageToEmail, smtpClient, smtpPortNum); continue; // continue next account if ack error } } pageNumber = pageNumber + 1; } catch (Exception ex) { if (errorCount > 4) { ExceptionUtility exceptionUtility = new ExceptionUtility(); exceptionUtility.CatchMethod(ex,accountNum+ ": While ",ex.Message.ToString(),senderEmail,messageFromPassword,messageToEmail,smtpClient,smtpPortNum); break; } else { errorCount = errorCount + 1; continue; // continue try if error less 4 times } } } return OrderList; }