示例#1
0
        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);
        }
示例#2
0
 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;
 }
示例#3
0
        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;
        }