You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1033 lines
61 KiB
C#
1033 lines
61 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Web;
|
|
using System.Net;
|
|
using System.IO;
|
|
using System.Xml;
|
|
using System.Xml.Linq;
|
|
using NetLibrary;
|
|
using NetLibrary.Express;
|
|
using NetLibrary.Log;
|
|
|
|
namespace NetLibrary.OnlineTrade
|
|
{
|
|
public class EbayApiNew
|
|
{
|
|
public string Appkey { get; set; }
|
|
public string DeveKey { get; set; }
|
|
public string CertKey { get; set; }
|
|
public int Level { get; set; }
|
|
public string ShopNo { get; set; }
|
|
public EbayApiNew()
|
|
{
|
|
Appkey = "mitang648-0b4d-45cc-8393-22985badfcb";
|
|
DeveKey = "f56448c8-0099-4e84-bbbb-2e30b3e2c8a3";
|
|
CertKey = "adfccd96-4a84-402e-959f-c19d26fce4c5";
|
|
Level = 955;//771;
|
|
|
|
}
|
|
|
|
#region 订单分析
|
|
Ebay_Order ConvertOrder(XElement item)
|
|
{
|
|
XElement cElement = null;
|
|
Ebay_Order Model = new Ebay_Order();
|
|
|
|
Model.OrderID = CustomIO.GetXmlElement(item, "OrderID");
|
|
Model.OrderStatus = CustomIO.GetXmlElement(item, "OrderStatus");
|
|
if (item.Element("AdjustmentAmount") != null)
|
|
{
|
|
Model.AdjustmentAmount.currencyID = CustomIO.GetXmlAttribute(item.Element("AdjustmentAmount"), "currencyID");
|
|
Model.AdjustmentAmount.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item, "AdjustmentAmount"));
|
|
}
|
|
if (item.Element("AmountPaid") != null)
|
|
{
|
|
Model.AmountPaid.currencyID = CustomIO.GetXmlAttribute(item.Element("AmountPaid"), "currencyID");
|
|
Model.AmountPaid.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item, "AmountPaid"));
|
|
}
|
|
if (item.Element("AmountSaved") != null)
|
|
{
|
|
Model.AmountSaved.currencyID = CustomIO.GetXmlAttribute(item.Element("AmountSaved"), "currencyID");
|
|
Model.AmountSaved.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item, "AmountSaved"));
|
|
}
|
|
|
|
cElement = item.Element("CheckoutStatus");
|
|
if (cElement != null)
|
|
{
|
|
Model.CheckoutStatus.eBayPaymentStatus = CustomIO.GetXmlElement(cElement, "eBayPaymentStatus");
|
|
Model.CheckoutStatus.SetLastModifiedTime(CustomIO.GetXmlElement(cElement, "LastModifiedTime"));
|
|
Model.CheckoutStatus.PaymentMethod = CustomIO.GetXmlElement(cElement, "PaymentMethod");
|
|
Model.CheckoutStatus.Status = CustomIO.GetXmlElement(cElement, "Status");
|
|
Model.CheckoutStatus.IntegratedMerchantCreditCardEnabled = Convert.ToBoolean(CustomIO.GetXmlElement(cElement, "IntegratedMerchantCreditCardEnabled"));
|
|
}
|
|
|
|
cElement = item.Element("ShippingDetails");
|
|
if (cElement != null)
|
|
{
|
|
Model.ShippingDetails.SellingManagerSalesRecordNumber = Convert.ToInt64(CustomIO.GetXmlElement(cElement, "SellingManagerSalesRecordNumber"));
|
|
Model.ShippingDetails.GetItFast = Convert.ToBoolean(CustomIO.GetXmlElement(cElement, "GetItFast"));
|
|
cElement = cElement.Element("SalesTax");
|
|
if (cElement != null)
|
|
{
|
|
if (CustomIO.GetXmlElement(cElement, "SalesTaxPercent") != "")
|
|
Model.ShippingDetails.SalesTax.SalesTaxPercent = Convert.ToDecimal(CustomIO.GetXmlElement(cElement, "SalesTaxPercent"));
|
|
Model.ShippingDetails.SalesTax.SalesTaxState = CustomIO.GetXmlElement(cElement, "SalesTaxState");
|
|
if (CustomIO.GetXmlElement(cElement, "ShippingIncludedInTax") != "")
|
|
Model.ShippingDetails.SalesTax.ShippingIncludedInTax = Convert.ToBoolean(CustomIO.GetXmlElement(cElement, "ShippingIncludedInTax"));
|
|
if (cElement.Element("SalesTaxAmount") != null)
|
|
{
|
|
Model.ShippingDetails.SalesTax.SalesTaxAmount.currencyID = CustomIO.GetXmlAttribute(cElement.Element("SalesTaxAmount"), "currencyID");
|
|
if (CustomIO.GetXmlElement(cElement, "SalesTaxAmount") != "")
|
|
Model.ShippingDetails.SalesTax.SalesTaxAmount.Price = Convert.ToDecimal(CustomIO.GetXmlElement(cElement, "SalesTaxAmount"));
|
|
}
|
|
}
|
|
cElement = item.Element("ShippingDetails").Element("ShippingServiceOptions");
|
|
if (cElement != null)
|
|
{
|
|
Model.ShippingDetails.ShippingServiceOptions.ShippingService = Convert.ToString(CustomIO.GetXmlElement(cElement, "ShippingService"));
|
|
if (cElement.Element("ShippingServiceCost") != null)
|
|
{
|
|
Model.ShippingDetails.ShippingServiceOptions.ShippingServiceCost.currencyID = CustomIO.GetXmlAttribute(cElement.Element("ShippingServiceCost"), "currencyID");
|
|
Model.ShippingDetails.ShippingServiceOptions.ShippingServiceCost.Price = Convert.ToDecimal(CustomIO.GetXmlElement(cElement, "ShippingServiceCost"));
|
|
}
|
|
Model.ShippingDetails.ShippingServiceOptions.ShippingServicePriority = Convert.ToInt32(CustomIO.GetXmlElement(cElement, "ShippingServicePriority"));
|
|
Model.ShippingDetails.ShippingServiceOptions.ExpeditedService = Convert.ToBoolean(CustomIO.GetXmlElement(cElement, "ExpeditedService"));
|
|
Model.ShippingDetails.ShippingServiceOptions.ShippingTimeMin = Convert.ToInt32(CustomIO.GetXmlElement(cElement, "ShippingTimeMin"));
|
|
Model.ShippingDetails.ShippingServiceOptions.ShippingTimeMax = Convert.ToInt32(CustomIO.GetXmlElement(cElement, "ShippingTimeMax"));
|
|
}
|
|
}
|
|
|
|
|
|
Model.CreatingUserRole = Convert.ToString(CustomIO.GetXmlElement(item, "CreatingUserRole"));
|
|
Model.SetCreatedTime(CustomIO.GetXmlElement(item, "CreatedTime"));
|
|
Model.PaymentMethods = Convert.ToString(CustomIO.GetXmlElement(item, "PaymentMethods"));
|
|
Model.SellerEmail = Convert.ToString(CustomIO.GetXmlElement(item, "SellerEmail"));
|
|
|
|
cElement = item.Element("ShippingAddress");
|
|
if (cElement != null)
|
|
{
|
|
Model.ShippingAddress.Name = Convert.ToString(CustomIO.GetXmlElement(cElement, "Name"));
|
|
Model.ShippingAddress.Street1 = Convert.ToString(CustomIO.GetXmlElement(cElement, "Street1"));
|
|
Model.ShippingAddress.Street2 = Convert.ToString(CustomIO.GetXmlElement(cElement, "Street2"));
|
|
Model.ShippingAddress.CityName = Convert.ToString(CustomIO.GetXmlElement(cElement, "CityName"));
|
|
Model.ShippingAddress.StateOrProvince = Convert.ToString(CustomIO.GetXmlElement(cElement, "StateOrProvince"));
|
|
Model.ShippingAddress.Country = Convert.ToString(CustomIO.GetXmlElement(cElement, "Country"));
|
|
Model.ShippingAddress.CountryName = Convert.ToString(CustomIO.GetXmlElement(cElement, "CountryName"));
|
|
Model.ShippingAddress.Phone = Convert.ToString(CustomIO.GetXmlElement(cElement, "Phone"));
|
|
Model.ShippingAddress.PostalCode = Convert.ToString(CustomIO.GetXmlElement(cElement, "PostalCode"));
|
|
Model.ShippingAddress.AddressID = Convert.ToString(CustomIO.GetXmlElement(cElement, "AddressID"));
|
|
Model.ShippingAddress.AddressOwner = Convert.ToString(CustomIO.GetXmlElement(cElement, "AddressOwner"));
|
|
Model.ShippingAddress.ExternalAddressID = Convert.ToString(CustomIO.GetXmlElement(cElement, "ExternalAddressID"));
|
|
}
|
|
|
|
cElement = item.Element("ShippingServiceSelected");
|
|
if (cElement != null)
|
|
{
|
|
Model.ShippingServiceSelected.ShippingService = Convert.ToString(CustomIO.GetXmlElement(cElement, "ShippingService"));
|
|
if (cElement.Element("ShippingServiceCost") != null)
|
|
{
|
|
Model.ShippingServiceSelected.ShippingServiceCost.currencyID = CustomIO.GetXmlAttribute(cElement.Element("ShippingServiceCost"), "currencyID");
|
|
Model.ShippingServiceSelected.ShippingServiceCost.Price = Convert.ToDecimal(CustomIO.GetXmlElement(cElement, "ShippingServiceCost"));
|
|
}
|
|
}
|
|
if (item.Element("Subtotal") != null)
|
|
{
|
|
Model.Subtotal.currencyID = CustomIO.GetXmlAttribute(item.Element("Subtotal"), "currencyID");
|
|
Model.Subtotal.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item, "Subtotal"));
|
|
}
|
|
if (item.Element("Total") != null)
|
|
{
|
|
Model.Total.currencyID = CustomIO.GetXmlAttribute(item.Element("Total"), "currencyID");
|
|
Model.Total.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item, "Total"));
|
|
}
|
|
|
|
Model.CreatingUserRole = Convert.ToString(CustomIO.GetXmlElement(item, "CreatingUserRole"));
|
|
Model.CreatingUserRole = Convert.ToString(CustomIO.GetXmlElement(item, "CreatingUserRole"));
|
|
|
|
XElement Element2 = item.Element("TransactionArray");
|
|
if (Element2 != null)
|
|
{
|
|
foreach (XElement item2 in Element2.Elements("Transaction"))
|
|
{
|
|
Ebay_Transaction model = new Ebay_Transaction();
|
|
cElement = item2.Element("Buyer");
|
|
model.Buyer.Email = Convert.ToString(CustomIO.GetXmlElement(cElement, "Email"));
|
|
model.Buyer.UserFirstName = Convert.ToString(CustomIO.GetXmlElement(cElement, "UserFirstName"));
|
|
model.Buyer.UserLastName = Convert.ToString(CustomIO.GetXmlElement(cElement, "UserLastName"));
|
|
|
|
cElement = item2.Element("ShippingDetails");
|
|
if (cElement != null)
|
|
{
|
|
model.ShippingDetails.SellingManagerSalesRecordNumber = Convert.ToInt32(CustomIO.GetXmlElement(cElement, "SellingManagerSalesRecordNumber"));
|
|
cElement = cElement.Element("ShipmentTrackingDetails");
|
|
if (cElement != null)
|
|
{
|
|
model.ShippingDetails.ShipmentTrackingDetails.ShippingCarrierUsed = Convert.ToString(CustomIO.GetXmlElement(cElement, "ShippingCarrierUsed"));
|
|
model.ShippingDetails.ShipmentTrackingDetails.ShipmentTrackingNumber = Convert.ToString(CustomIO.GetXmlElement(cElement, "ShipmentTrackingNumber"));
|
|
}
|
|
}
|
|
|
|
model.SetCreatedDate(CustomIO.GetXmlElement(item2, "CreatedDate"));
|
|
|
|
cElement = item2.Element("Item");
|
|
if (cElement != null)
|
|
{
|
|
model.Item.ItemID = Convert.ToString(CustomIO.GetXmlElement(cElement, "ItemID"));
|
|
model.Item.Site = Convert.ToString(CustomIO.GetXmlElement(cElement, "Site"));
|
|
model.Item.Title = Convert.ToString(CustomIO.GetXmlElement(cElement, "Title"));
|
|
model.Item.SKU = Convert.ToString(CustomIO.GetXmlElement(cElement, "SKU"));
|
|
model.Item.ConditionID = Convert.ToString(CustomIO.GetXmlElement(cElement, "ConditionID"));
|
|
model.Item.ConditionDisplayName = Convert.ToString(CustomIO.GetXmlElement(cElement, "ConditionDisplayName"));
|
|
}
|
|
|
|
model.QuantityPurchased = Convert.ToInt32(CustomIO.GetXmlElement(item2, "QuantityPurchased"));
|
|
|
|
cElement = item2.Element("Status");
|
|
if (cElement != null)
|
|
{
|
|
model.Status.PaymentHoldStatus = Convert.ToString(CustomIO.GetXmlElement(cElement, "PaymentHoldStatus"));
|
|
}
|
|
|
|
model.TransactionID = Convert.ToString(CustomIO.GetXmlElement(item2, "TransactionID"));
|
|
if (item2.Element("TransactionPrice") != null)
|
|
{
|
|
model.TransactionPrice.currencyID = CustomIO.GetXmlAttribute(item2.Element("TransactionPrice"), "currencyID");
|
|
model.TransactionPrice.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item2, "TransactionPrice"));
|
|
}
|
|
|
|
model.TransactionSiteID = Convert.ToString(CustomIO.GetXmlElement(item2, "TransactionSiteID"));
|
|
model.Platform = Convert.ToString(CustomIO.GetXmlElement(item2, "Platform"));
|
|
|
|
cElement = item2.Element("Variation");
|
|
if (cElement != null)
|
|
{
|
|
model.Variation.SKU = Convert.ToString(CustomIO.GetXmlElement(cElement, "SKU"));
|
|
XElement Element3 = cElement.Element("VariationSpecifics");
|
|
if (Element3 != null)
|
|
{
|
|
foreach (XElement item3 in Element3.Elements("NameValueList"))
|
|
{
|
|
Ebay_Transaction_VariationSpecifics model2 = new Ebay_Transaction_VariationSpecifics();
|
|
model2.Name = Convert.ToString(CustomIO.GetXmlElement(item3, "Name"));
|
|
model2.Value = Convert.ToString(CustomIO.GetXmlElement(item3, "Value"));
|
|
model.VariationSpecifics.Add(model2);
|
|
}
|
|
}
|
|
|
|
model.Variation.VariationTitle = Convert.ToString(CustomIO.GetXmlElement(cElement, "VariationTitle"));
|
|
model.Variation.VariationViewItemURL = Convert.ToString(CustomIO.GetXmlElement(cElement, "VariationViewItemURL"));
|
|
}
|
|
|
|
cElement = item2.Element("Taxes");
|
|
if (cElement != null)
|
|
{
|
|
if (cElement.Element("TotalTaxAmount") != null)
|
|
{
|
|
model.Taxes.TotalTaxAmount.currencyID = CustomIO.GetXmlAttribute(cElement.Element("TotalTaxAmount"), "currencyID");
|
|
model.Taxes.TotalTaxAmount.Price = Convert.ToDecimal(CustomIO.GetXmlElement(cElement, "TotalTaxAmount"));
|
|
}
|
|
|
|
foreach (XElement item3 in cElement.Elements("TaxDetails"))
|
|
{
|
|
Ebay_Transaction_TaxDetails model2 = new Ebay_Transaction_TaxDetails();
|
|
model2.Imposition = Convert.ToString(CustomIO.GetXmlElement(item3, "Imposition"));
|
|
model2.TaxDescription = Convert.ToString(CustomIO.GetXmlElement(item3, "TaxDescription"));
|
|
if (item3.Element("TaxAmount") != null)
|
|
{
|
|
model2.TaxAmount.currencyID = CustomIO.GetXmlAttribute(item3.Element("TaxAmount"), "currencyID");
|
|
model2.TaxAmount.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item3, "TaxAmount"));
|
|
}
|
|
if (item3.Element("TaxOnSubtotalAmount") != null)
|
|
{
|
|
model2.TaxOnSubtotalAmount.currencyID = CustomIO.GetXmlAttribute(item3.Element("TaxOnSubtotalAmount"), "currencyID");
|
|
model2.TaxOnSubtotalAmount.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item3, "TaxOnSubtotalAmount"));
|
|
}
|
|
if (item3.Element("TaxOnShippingAmount") != null)
|
|
{
|
|
model2.TaxOnShippingAmount.currencyID = CustomIO.GetXmlAttribute(item3.Element("TaxOnShippingAmount"), "currencyID");
|
|
model2.TaxOnShippingAmount.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item3, "TaxOnShippingAmount"));
|
|
}
|
|
if (item3.Element("TaxOnHandlingAmount") != null)
|
|
{
|
|
model2.TaxOnHandlingAmount.currencyID = CustomIO.GetXmlAttribute(item3.Element("TaxOnHandlingAmount"), "currencyID");
|
|
model2.TaxOnHandlingAmount.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item3, "TaxOnHandlingAmount"));
|
|
}
|
|
model.Taxes.TaxDetails.Add(model2);
|
|
}
|
|
|
|
if (item2.Element("ActualShippingCost") != null)
|
|
{
|
|
model.ActualShippingCost.currencyID = CustomIO.GetXmlAttribute(item2.Element("ActualShippingCost"), "currencyID");
|
|
model.ActualShippingCost.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item2, "ActualShippingCost"));
|
|
}
|
|
if (item2.Element("ActualHandlingCost") != null)
|
|
{
|
|
model.ActualHandlingCost.currencyID = CustomIO.GetXmlAttribute(item2.Element("ActualHandlingCost"), "currencyID");
|
|
model.ActualHandlingCost.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item2, "ActualHandlingCost"));
|
|
}
|
|
model.OrderLineItemID = CustomIO.GetXmlElement(item2, "OrderLineItemID");
|
|
|
|
Model.TransactionArray.Add(model);
|
|
}
|
|
}
|
|
}
|
|
|
|
Model.BuyerUserID = CustomIO.GetXmlElement(item, "BuyerUserID");
|
|
Model.SetPaidTime(CustomIO.GetXmlElement(item, "PaidTime"));
|
|
Model.SetShippedTime(CustomIO.GetXmlElement(item, "ShippedTime"));
|
|
Model.IntegratedMerchantCreditCardEnabled = Convert.ToBoolean(CustomIO.GetXmlElement(item, "IntegratedMerchantCreditCardEnabled"));
|
|
Model.EIASToken = CustomIO.GetXmlElement(item, "EIASToken");
|
|
Model.PaymentHoldStatus = CustomIO.GetXmlElement(item, "PaymentHoldStatus");
|
|
return Model;
|
|
}
|
|
#endregion
|
|
|
|
#region 订单分析
|
|
List<Ebay_Order> ConvertOrderForTM(XElement item)
|
|
{
|
|
XElement cElement = null;
|
|
List<Ebay_Order> elist = new List<Ebay_Order>();
|
|
Ebay_Order Model = new Ebay_Order();
|
|
|
|
|
|
Model.OrderStatus = CustomIO.GetXmlElement(item, "OrderStatus");
|
|
if (item.Element("AdjustmentAmount") != null)
|
|
{
|
|
Model.AdjustmentAmount.currencyID = CustomIO.GetXmlAttribute(item.Element("AdjustmentAmount"), "currencyID");
|
|
Model.AdjustmentAmount.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item, "AdjustmentAmount"));
|
|
}
|
|
if (item.Element("AmountPaid") != null)
|
|
{
|
|
Model.AmountPaid.currencyID = CustomIO.GetXmlAttribute(item.Element("AmountPaid"), "currencyID");
|
|
Model.AmountPaid.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item, "AmountPaid"));
|
|
}
|
|
if (item.Element("AmountSaved") != null)
|
|
{
|
|
Model.AmountSaved.currencyID = CustomIO.GetXmlAttribute(item.Element("AmountSaved"), "currencyID");
|
|
Model.AmountSaved.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item, "AmountSaved"));
|
|
}
|
|
|
|
cElement = item.Element("CheckoutStatus");
|
|
if (cElement != null)
|
|
{
|
|
Model.CheckoutStatus.eBayPaymentStatus = CustomIO.GetXmlElement(cElement, "eBayPaymentStatus");
|
|
Model.CheckoutStatus.SetLastModifiedTime(CustomIO.GetXmlElement(cElement, "LastModifiedTime"));
|
|
Model.CheckoutStatus.PaymentMethod = CustomIO.GetXmlElement(cElement, "PaymentMethod");
|
|
Model.CheckoutStatus.Status = CustomIO.GetXmlElement(cElement, "Status");
|
|
Model.CheckoutStatus.IntegratedMerchantCreditCardEnabled = Convert.ToBoolean(CustomIO.GetXmlElement(cElement, "IntegratedMerchantCreditCardEnabled"));
|
|
}
|
|
|
|
cElement = item.Element("ShippingDetails");
|
|
if (cElement != null)
|
|
{
|
|
Model.ShippingDetails.SellingManagerSalesRecordNumber = Convert.ToInt64(CustomIO.GetXmlElement(cElement, "SellingManagerSalesRecordNumber"));
|
|
Model.ShippingDetails.GetItFast = Convert.ToBoolean(CustomIO.GetXmlElement(cElement, "GetItFast"));
|
|
cElement = cElement.Element("SalesTax");
|
|
if (cElement != null)
|
|
{
|
|
Model.ShippingDetails.SalesTax.SalesTaxPercent = Convert.ToDecimal(CustomIO.GetXmlElement(cElement, "SalesTaxPercent"));
|
|
Model.ShippingDetails.SalesTax.SalesTaxState = CustomIO.GetXmlElement(cElement, "SalesTaxState");
|
|
Model.ShippingDetails.SalesTax.ShippingIncludedInTax = Convert.ToBoolean(CustomIO.GetXmlElement(cElement, "ShippingIncludedInTax"));
|
|
if (cElement.Element("SalesTaxAmount") != null)
|
|
{
|
|
Model.ShippingDetails.SalesTax.SalesTaxAmount.currencyID = CustomIO.GetXmlAttribute(cElement.Element("SalesTaxAmount"), "currencyID");
|
|
Model.ShippingDetails.SalesTax.SalesTaxAmount.Price = Convert.ToDecimal(CustomIO.GetXmlElement(cElement, "SalesTaxAmount"));
|
|
}
|
|
}
|
|
cElement = item.Element("ShippingDetails").Element("ShippingServiceOptions");
|
|
if (cElement != null)
|
|
{
|
|
Model.ShippingDetails.ShippingServiceOptions.ShippingService = Convert.ToString(CustomIO.GetXmlElement(cElement, "ShippingService"));
|
|
if (cElement.Element("ShippingServiceCost") != null)
|
|
{
|
|
Model.ShippingDetails.ShippingServiceOptions.ShippingServiceCost.currencyID = CustomIO.GetXmlAttribute(cElement.Element("ShippingServiceCost"), "currencyID");
|
|
Model.ShippingDetails.ShippingServiceOptions.ShippingServiceCost.Price = Convert.ToDecimal(CustomIO.GetXmlElement(cElement, "ShippingServiceCost"));
|
|
}
|
|
Model.ShippingDetails.ShippingServiceOptions.ShippingServicePriority = Convert.ToInt32(CustomIO.GetXmlElement(cElement, "ShippingServicePriority"));
|
|
Model.ShippingDetails.ShippingServiceOptions.ExpeditedService = Convert.ToBoolean(CustomIO.GetXmlElement(cElement, "ExpeditedService"));
|
|
Model.ShippingDetails.ShippingServiceOptions.ShippingTimeMin = Convert.ToInt32(CustomIO.GetXmlElement(cElement, "ShippingTimeMin"));
|
|
Model.ShippingDetails.ShippingServiceOptions.ShippingTimeMax = Convert.ToInt32(CustomIO.GetXmlElement(cElement, "ShippingTimeMax"));
|
|
}
|
|
}
|
|
|
|
|
|
Model.CreatingUserRole = Convert.ToString(CustomIO.GetXmlElement(item, "CreatingUserRole"));
|
|
Model.SetCreatedTime(CustomIO.GetXmlElement(item, "CreatedTime"));
|
|
Model.PaymentMethods = Convert.ToString(CustomIO.GetXmlElement(item, "PaymentMethods"));
|
|
Model.SellerEmail = Convert.ToString(CustomIO.GetXmlElement(item, "SellerEmail"));
|
|
|
|
cElement = item.Element("ShippingAddress");
|
|
if (cElement != null)
|
|
{
|
|
Model.ShippingAddress.Name = Convert.ToString(CustomIO.GetXmlElement(cElement, "Name"));
|
|
Model.ShippingAddress.Street1 = Convert.ToString(CustomIO.GetXmlElement(cElement, "Street1"));
|
|
Model.ShippingAddress.Street2 = Convert.ToString(CustomIO.GetXmlElement(cElement, "Street2"));
|
|
Model.ShippingAddress.CityName = Convert.ToString(CustomIO.GetXmlElement(cElement, "CityName"));
|
|
Model.ShippingAddress.StateOrProvince = Convert.ToString(CustomIO.GetXmlElement(cElement, "StateOrProvince"));
|
|
Model.ShippingAddress.Country = Convert.ToString(CustomIO.GetXmlElement(cElement, "Country"));
|
|
Model.ShippingAddress.CountryName = Convert.ToString(CustomIO.GetXmlElement(cElement, "CountryName"));
|
|
Model.ShippingAddress.Phone = Convert.ToString(CustomIO.GetXmlElement(cElement, "Phone"));
|
|
Model.ShippingAddress.PostalCode = Convert.ToString(CustomIO.GetXmlElement(cElement, "PostalCode"));
|
|
Model.ShippingAddress.AddressID = Convert.ToString(CustomIO.GetXmlElement(cElement, "AddressID"));
|
|
Model.ShippingAddress.AddressOwner = Convert.ToString(CustomIO.GetXmlElement(cElement, "AddressOwner"));
|
|
Model.ShippingAddress.ExternalAddressID = Convert.ToString(CustomIO.GetXmlElement(cElement, "ExternalAddressID"));
|
|
}
|
|
|
|
cElement = item.Element("ShippingServiceSelected");
|
|
if (cElement != null)
|
|
{
|
|
Model.ShippingServiceSelected.ShippingService = Convert.ToString(CustomIO.GetXmlElement(cElement, "ShippingService"));
|
|
if (cElement.Element("ShippingServiceCost") != null)
|
|
{
|
|
Model.ShippingServiceSelected.ShippingServiceCost.currencyID = CustomIO.GetXmlAttribute(cElement.Element("ShippingServiceCost"), "currencyID");
|
|
Model.ShippingServiceSelected.ShippingServiceCost.Price = Convert.ToDecimal(CustomIO.GetXmlElement(cElement, "ShippingServiceCost"));
|
|
}
|
|
}
|
|
if (item.Element("Subtotal") != null)
|
|
{
|
|
Model.Subtotal.currencyID = CustomIO.GetXmlAttribute(item.Element("Subtotal"), "currencyID");
|
|
Model.Subtotal.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item, "Subtotal"));
|
|
}
|
|
if (item.Element("Total") != null)
|
|
{
|
|
Model.Total.currencyID = CustomIO.GetXmlAttribute(item.Element("Total"), "currencyID");
|
|
Model.Total.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item, "Total"));
|
|
}
|
|
|
|
Model.CreatingUserRole = Convert.ToString(CustomIO.GetXmlElement(item, "CreatingUserRole"));
|
|
Model.CreatingUserRole = Convert.ToString(CustomIO.GetXmlElement(item, "CreatingUserRole"));
|
|
|
|
|
|
|
|
Model.BuyerUserID = CustomIO.GetXmlElement(item, "BuyerUserID");
|
|
Model.SetPaidTime(CustomIO.GetXmlElement(item, "PaidTime"));
|
|
Model.SetShippedTime(CustomIO.GetXmlElement(item, "ShippedTime"));
|
|
Model.IntegratedMerchantCreditCardEnabled = Convert.ToBoolean(CustomIO.GetXmlElement(item, "IntegratedMerchantCreditCardEnabled"));
|
|
Model.EIASToken = CustomIO.GetXmlElement(item, "EIASToken");
|
|
Model.PaymentHoldStatus = CustomIO.GetXmlElement(item, "PaymentHoldStatus");
|
|
XElement Element2 = item.Element("TransactionArray");
|
|
if (Element2 != null)
|
|
{
|
|
foreach (XElement item2 in Element2.Elements("Transaction"))
|
|
{
|
|
|
|
Ebay_Transaction model = new Ebay_Transaction();
|
|
cElement = item2.Element("Buyer");
|
|
model.Buyer.Email = Convert.ToString(CustomIO.GetXmlElement(cElement, "Email"));
|
|
model.Buyer.UserFirstName = Convert.ToString(CustomIO.GetXmlElement(cElement, "UserFirstName"));
|
|
model.Buyer.UserLastName = Convert.ToString(CustomIO.GetXmlElement(cElement, "UserLastName"));
|
|
|
|
cElement = item2.Element("ShippingDetails");
|
|
if (cElement != null)
|
|
{
|
|
Model.OrderID = "632" + CustomIO.GetXmlElement(cElement, "SellingManagerSalesRecordNumber");
|
|
model.ShippingDetails.SellingManagerSalesRecordNumber = Convert.ToInt32(CustomIO.GetXmlElement(cElement, "SellingManagerSalesRecordNumber"));
|
|
cElement = cElement.Element("ShipmentTrackingDetails");
|
|
if (cElement != null)
|
|
{
|
|
model.ShippingDetails.ShipmentTrackingDetails.ShippingCarrierUsed = Convert.ToString(CustomIO.GetXmlElement(cElement, "ShippingCarrierUsed"));
|
|
model.ShippingDetails.ShipmentTrackingDetails.ShipmentTrackingNumber = Convert.ToString(CustomIO.GetXmlElement(cElement, "ShipmentTrackingNumber"));
|
|
}
|
|
}
|
|
|
|
model.SetCreatedDate(CustomIO.GetXmlElement(item2, "CreatedDate"));
|
|
|
|
cElement = item2.Element("Item");
|
|
if (cElement != null)
|
|
{
|
|
model.Item.ItemID = Convert.ToString(CustomIO.GetXmlElement(cElement, "ItemID"));
|
|
model.Item.Site = Convert.ToString(CustomIO.GetXmlElement(cElement, "Site"));
|
|
model.Item.Title = Convert.ToString(CustomIO.GetXmlElement(cElement, "Title"));
|
|
model.Item.SKU = Convert.ToString(CustomIO.GetXmlElement(cElement, "SKU"));
|
|
model.Item.ConditionID = Convert.ToString(CustomIO.GetXmlElement(cElement, "ConditionID"));
|
|
model.Item.ConditionDisplayName = Convert.ToString(CustomIO.GetXmlElement(cElement, "ConditionDisplayName"));
|
|
}
|
|
|
|
model.QuantityPurchased = Convert.ToInt32(CustomIO.GetXmlElement(item2, "QuantityPurchased"));
|
|
|
|
cElement = item2.Element("Status");
|
|
if (cElement != null)
|
|
{
|
|
model.Status.PaymentHoldStatus = Convert.ToString(CustomIO.GetXmlElement(cElement, "PaymentHoldStatus"));
|
|
}
|
|
|
|
model.TransactionID = Convert.ToString(CustomIO.GetXmlElement(item2, "TransactionID"));
|
|
if (item2.Element("TransactionPrice") != null)
|
|
{
|
|
model.TransactionPrice.currencyID = CustomIO.GetXmlAttribute(item2.Element("TransactionPrice"), "currencyID");
|
|
model.TransactionPrice.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item2, "TransactionPrice"));
|
|
}
|
|
|
|
model.TransactionSiteID = Convert.ToString(CustomIO.GetXmlElement(item2, "TransactionSiteID"));
|
|
model.Platform = Convert.ToString(CustomIO.GetXmlElement(item2, "Platform"));
|
|
|
|
cElement = item2.Element("Variation");
|
|
if (cElement != null)
|
|
{
|
|
model.Variation.SKU = Convert.ToString(CustomIO.GetXmlElement(cElement, "SKU"));
|
|
|
|
XElement Element3 = cElement.Element("VariationSpecifics");
|
|
if (Element3 != null)
|
|
{
|
|
foreach (XElement item3 in Element3.Elements("NameValueList"))
|
|
{
|
|
Ebay_Transaction_VariationSpecifics model2 = new Ebay_Transaction_VariationSpecifics();
|
|
model2.Name = Convert.ToString(CustomIO.GetXmlElement(item3, "Name"));
|
|
model2.Value = Convert.ToString(CustomIO.GetXmlElement(item3, "Value"));
|
|
model.VariationSpecifics.Add(model2);
|
|
}
|
|
}
|
|
|
|
model.Variation.VariationTitle = Convert.ToString(CustomIO.GetXmlElement(cElement, "VariationTitle"));
|
|
model.Variation.VariationViewItemURL = Convert.ToString(CustomIO.GetXmlElement(cElement, "VariationViewItemURL"));
|
|
}
|
|
|
|
cElement = item2.Element("Taxes");
|
|
if (cElement != null)
|
|
{
|
|
if (cElement.Element("TotalTaxAmount") != null)
|
|
{
|
|
model.Taxes.TotalTaxAmount.currencyID = CustomIO.GetXmlAttribute(cElement.Element("TotalTaxAmount"), "currencyID");
|
|
model.Taxes.TotalTaxAmount.Price = Convert.ToDecimal(CustomIO.GetXmlElement(cElement, "TotalTaxAmount"));
|
|
}
|
|
|
|
foreach (XElement item3 in cElement.Elements("TaxDetails"))
|
|
{
|
|
Ebay_Transaction_TaxDetails model2 = new Ebay_Transaction_TaxDetails();
|
|
model2.Imposition = Convert.ToString(CustomIO.GetXmlElement(item3, "Imposition"));
|
|
model2.TaxDescription = Convert.ToString(CustomIO.GetXmlElement(item3, "TaxDescription"));
|
|
if (item3.Element("TaxAmount") != null)
|
|
{
|
|
model2.TaxAmount.currencyID = CustomIO.GetXmlAttribute(item3.Element("TaxAmount"), "currencyID");
|
|
model2.TaxAmount.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item3, "TaxAmount"));
|
|
}
|
|
if (item3.Element("TaxOnSubtotalAmount") != null)
|
|
{
|
|
model2.TaxOnSubtotalAmount.currencyID = CustomIO.GetXmlAttribute(item3.Element("TaxOnSubtotalAmount"), "currencyID");
|
|
model2.TaxOnSubtotalAmount.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item3, "TaxOnSubtotalAmount"));
|
|
}
|
|
if (item3.Element("TaxOnShippingAmount") != null)
|
|
{
|
|
model2.TaxOnShippingAmount.currencyID = CustomIO.GetXmlAttribute(item3.Element("TaxOnShippingAmount"), "currencyID");
|
|
model2.TaxOnShippingAmount.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item3, "TaxOnShippingAmount"));
|
|
}
|
|
if (item3.Element("TaxOnHandlingAmount") != null)
|
|
{
|
|
model2.TaxOnHandlingAmount.currencyID = CustomIO.GetXmlAttribute(item3.Element("TaxOnHandlingAmount"), "currencyID");
|
|
model2.TaxOnHandlingAmount.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item3, "TaxOnHandlingAmount"));
|
|
}
|
|
model.Taxes.TaxDetails.Add(model2);
|
|
}
|
|
|
|
if (item2.Element("ActualShippingCost") != null)
|
|
{
|
|
model.ActualShippingCost.currencyID = CustomIO.GetXmlAttribute(item2.Element("ActualShippingCost"), "currencyID");
|
|
model.ActualShippingCost.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item2, "ActualShippingCost"));
|
|
}
|
|
if (item2.Element("ActualHandlingCost") != null)
|
|
{
|
|
model.ActualHandlingCost.currencyID = CustomIO.GetXmlAttribute(item2.Element("ActualHandlingCost"), "currencyID");
|
|
model.ActualHandlingCost.Price = Convert.ToDecimal(CustomIO.GetXmlElement(item2, "ActualHandlingCost"));
|
|
}
|
|
model.OrderLineItemID = CustomIO.GetXmlElement(item2, "OrderLineItemID");
|
|
|
|
|
|
}
|
|
Model.TransactionArray.Add(model);
|
|
elist.Add(Model);
|
|
}
|
|
}
|
|
return elist;
|
|
}
|
|
#endregion
|
|
|
|
#region 订单数据上传
|
|
public string senderorder(Eub_Order model, JC_PostAddress2 Addr, string Token, string groupname)
|
|
{
|
|
string[] orderstr = model.OrderCode.Split('-');
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
|
|
sb.Append("<APIDevUserID>" + DeveKey + "</APIDevUserID>"); //eBay 开发者 ID
|
|
sb.Append("<APISellerUserToken>" + Token + "</APISellerUserToken>"); //eBay token
|
|
sb.Append("<APISellerUserID>" + groupname + "</APISellerUserID>"); //卖家 eBay 账户
|
|
sb.Append("<AppID>" + Appkey + "</AppID>"); //
|
|
sb.Append("<AppCert>" + CertKey + "</AppCert>");
|
|
//sb.Append("<MessageID></MessageID>");
|
|
sb.Append("<Version>4.0.0</Version>"); //APAC Shipping Platform API 版本,
|
|
sb.Append("<Carrier>CNPOST</Carrier>"); //
|
|
sb.Append("<Service>EPACK</Service>");
|
|
sb.Append("<OrderDetail>");
|
|
sb.Append("<EMSPickUpType>0</EMSPickUpType>"); //揽收方式
|
|
sb.Append("<PickUpAddress>"); //揽收地址信息。 国际 e 邮宝的订单必须使用中文地址。
|
|
sb.Append("<Contact>" + Addr.SendName + "</Contact>"); //联系人
|
|
sb.Append("<Company>" + Addr.CompanyName + "</Company>"); //
|
|
sb.Append("<Street>" + Addr.Address + "</Street>");
|
|
sb.Append("<District>" + Addr.county + "</District>");
|
|
sb.Append("<City>" + Addr.city + "</City>");
|
|
sb.Append("<Province>" + Addr.province + "</Province>");
|
|
sb.Append("<Postcode>" + Addr.PostCode + "</Postcode>");
|
|
sb.Append("<CountryCode>CN</CountryCode>");
|
|
sb.Append("<Email>" + Addr.Email + "</Email>");
|
|
sb.Append("<Mobile>" + Addr.Phone + "</Mobile>");
|
|
sb.Append("<Phone>" + Addr.Phone + "</Phone>");
|
|
sb.Append("</PickUpAddres>");
|
|
sb.Append("<ShipFromAddress>"); //寄件人地址信息,必须以英文填写。
|
|
sb.Append("<Contact>" + Addr.SendEnglishName + "</Contact>");
|
|
sb.Append("<Company>" + Addr.CompanyEnglishName + "</Company>");
|
|
sb.Append("<Street>" + Addr.EnglishAddress + "</Street>");
|
|
sb.Append("<District>" + Addr.countycode + "</District>");
|
|
sb.Append("<City>" + Addr.citycode + "</City>");
|
|
sb.Append("<Province>" + Addr.provincecode + "</Province>");
|
|
sb.Append("<Postcode>" + Addr.PostCode + "</Postcode>");
|
|
sb.Append("<CountryCode>CN</CountryCode>");
|
|
sb.Append("<Email>" + Addr.Email + "</Email>");
|
|
sb.Append("<Mobile>" + Addr.Phone + "</Mobile>");
|
|
sb.Append("<Phone>" + Addr.Phone + "</Phone>");
|
|
sb.Append("</ShipFromAddress>");
|
|
sb.Append("<ShipToAddress>"); //收件人地址信息。
|
|
sb.Append("<Contact>" + model.receiver.name + "</Contact>");
|
|
sb.Append("<Company>" + model.receiver.name + "</Company>");
|
|
sb.Append("<Street>" + model.receiver.street + "</Street>");
|
|
sb.Append("<District>" + model.receiver.county + "</District>");
|
|
sb.Append("<City>" + model.receiver.city + "</City>");
|
|
sb.Append("<Province>" + model.receiver.province + "</Province>");
|
|
sb.Append("<Postcode>" + model.receiver.postcode + "</Postcode>");
|
|
sb.Append("<CountryCode>" + model.receiver.country + "</CountryCode>");
|
|
sb.Append("<Email>" + model.receiver.email + "</Email>");
|
|
sb.Append("<Mobile>" + model.receiver.mobile + "</Mobile>");
|
|
sb.Append("<Phone>" + model.receiver.phone + "</Phone>");
|
|
sb.Append("</ShipToAddress>");
|
|
sb.Append("<ReturnAddress>"); //退货地址信息,对国际 e 邮宝,请填写中文地址
|
|
sb.Append("<Contact>" + Addr.SendName + "</Contact>"); //联系人
|
|
sb.Append("<Company>" + Addr.CompanyName + "</Company>"); //
|
|
sb.Append("<Street>" + Addr.Address + "</Street>");
|
|
sb.Append("<District>" + Addr.county + "</District>");
|
|
sb.Append("<City>" + Addr.city + "</City>");
|
|
sb.Append("<Province>" + Addr.province + "</Province>");
|
|
sb.Append("<Postcode>" + Addr.PostCode + "</Postcode>");
|
|
sb.Append("<CountryCode>CN</CountryCode>");
|
|
sb.Append("<Email>" + Addr.Email + "</Email>");
|
|
sb.Append("<Mobile>" + Addr.Phone + "</Mobile>");
|
|
sb.Append("<Phone>" + Addr.Phone + "</Phone>");
|
|
sb.Append("</ReturnAddress>");
|
|
//sb.Append("<ShippingPackage>");
|
|
//sb.Append("<Description></Description>");
|
|
//sb.Append("<Length></Length>");
|
|
//sb.Append("<Height></Height>");
|
|
//sb.Append("<Width></Width>");
|
|
//sb.Append("<Incoterms></Incoterms>");
|
|
//sb.Append("<CollectionInstructions></CollectionInstructions>");
|
|
//sb.Append("<DeliveryInstructions></DeliveryInstructions>");
|
|
//sb.Append("</ShippingPackage>");
|
|
sb.Append("<ItemList>");
|
|
sb.Append("<Item>");
|
|
sb.Append("<EBayItemID>" + orderstr[0] + "</EBayItemID>"); //eBay 物品号
|
|
sb.Append("<EBayTransactionID" + orderstr[1] + "></EBayTransactionID>"); //eBay 交易号,拍卖的物品请输入 0
|
|
sb.Append("<EBayBuyerID>" + model.BuyID + "</EBayBuyerID>"); //eBay 买家 ID
|
|
//sb.Append("<EBayItemTitle></EBayItemTitle>");
|
|
//sb.Append("<EBayEmail></EBayEmail>");
|
|
//sb.Append("<SoldQTY></SoldQTY>");
|
|
sb.Append("<PostedQTY>" + model.ListGoods.Sum(o => o.count) + "</PostedQTY>"); //寄货数量,不能为 0
|
|
//sb.Append("<SalesRecordNumber></SalesRecordNumber>");
|
|
//sb.Append("<OrderSalesRecordNumber></OrderSalesRecordNumber>");
|
|
//sb.Append("<OrderID></OrderID>");
|
|
//sb.Append("<EBaySiteID></EBaySiteID>");
|
|
foreach (var q in model.ListGoods)
|
|
{
|
|
sb.Append("<SKU>");
|
|
sb.Append("<DeclaredValue>" + q.unit + "</DeclaredValue>"); //物品申报价值
|
|
sb.Append("<Weight>" + q.weight + "</Weight>");
|
|
sb.Append("<CustomsTitle>" + q.cnname + "</CustomsTitle>"); //国际 e 邮宝包裹请填中文报关名
|
|
sb.Append("<CustomsTitleEN>" + q.enname + "</CustomsTitleEN>"); //英文报关名称
|
|
sb.Append("<OriginCountryCode>CN</OriginCountryCode>");
|
|
sb.Append("</SKU>");
|
|
}
|
|
sb.Append("</Item>");
|
|
sb.Append("</ItemList>");
|
|
sb.Append("</OrderDetail>");
|
|
|
|
string PostXmlTemplate = sb.ToString();
|
|
ASCIIEncoding encoding = new ASCIIEncoding();
|
|
byte[] data = encoding.GetBytes(PostXmlTemplate);
|
|
string ErrorMessage = "";
|
|
string XmlContent = CustomIO.HttpRequest2("https://api.apacshipping.ebay.com.hk/aspapi/v4/ApacShippingService", "POST", "", null, HttpVersion.Version10, data, out ErrorMessage);
|
|
if (XmlContent == "") return null;
|
|
XmlContent = XmlContent.Replace(" xmlns=\"urn:ebay:apis:eBLBaseComponents\"", "");
|
|
return "";
|
|
}
|
|
#endregion
|
|
|
|
#region 读取订单
|
|
public List<OrderModel> GetOrders(DateTime? StartDate, DateTime? StopDate, string Token, out string ErrorMessage)
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
|
|
sb.Append("<GetOrdersRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">");
|
|
sb.Append("<RequesterCredentials>");
|
|
sb.Append("<eBayAuthToken>" + Token + "</eBayAuthToken>");
|
|
sb.Append("</RequesterCredentials>");
|
|
sb.Append("<OrderRole>Seller</OrderRole>");
|
|
|
|
sb.Append("<ModTimeFrom>" + StartDate.Value.ToString("yyyy-MM-dd") + "</ModTimeFrom>");
|
|
if (StopDate != null)
|
|
sb.Append("<ModTimeTo>" + StopDate.Value.ToString("yyyy-MM-dd HH:mm:ss") + "</ModTimeTo>");
|
|
|
|
sb.Append("<Pagination>");
|
|
sb.Append("<EntriesPerPage>100</EntriesPerPage>");
|
|
sb.Append("<PageNumber>@Page@</PageNumber>");
|
|
sb.Append("</Pagination>");
|
|
sb.Append("</GetOrdersRequest>");
|
|
string PostXmlTemplate = sb.ToString();
|
|
List<string> ListHeader = new List<string>();
|
|
ListHeader.Add("X-EBAY-API-COMPATIBILITY-LEVEL:" + Level);
|
|
ListHeader.Add("X-EBAY-API-DEV-NAME:" + DeveKey);
|
|
ListHeader.Add("X-EBAY-API-APP-NAME:" + Appkey);
|
|
ListHeader.Add("X-EBAY-API-CERT-NAME:" + CertKey);
|
|
ListHeader.Add("X-EBAY-API-SITEID:0");
|
|
ListHeader.Add("X-EBAY-API-CALL-NAME:GetOrders");
|
|
|
|
string postmessage = PostXmlTemplate.Replace("@Page@", "1");
|
|
ASCIIEncoding encoding = new ASCIIEncoding();
|
|
byte[] data = encoding.GetBytes(postmessage);
|
|
|
|
string XmlContent = CustomIO.HttpRequest2("https://api.ebay.com/ws/api.dll", "POST", "", ListHeader, HttpVersion.Version10, data, out ErrorMessage);
|
|
if (XmlContent == "") return null;
|
|
XmlContent = XmlContent.Replace(" xmlns=\"urn:ebay:apis:eBLBaseComponents\"", "");
|
|
List<OrderModel> ListModel = new List<OrderModel>();
|
|
XElement doc = XElement.Parse(XmlContent);
|
|
XElement doc_Order = doc.Element("OrderArray");
|
|
if (doc_Order == null) return null;
|
|
|
|
foreach (XElement item in doc_Order.Elements("Order"))
|
|
{
|
|
if (CustomIO.GetXmlElement(item, "PaidTime") == "")
|
|
continue;
|
|
Ebay_Order model = ConvertOrder(item);
|
|
//model.CheckoutStatus.Status = "";
|
|
if (model.PaidTime == null) continue;
|
|
|
|
|
|
OrderModel model2 = model.ToOrderModel();
|
|
ListModel.Add(model2);
|
|
}
|
|
int PageCount = Convert.ToInt32(CustomIO.GetXmlElement(doc.Element("PaginationResult"), "TotalNumberOfPages"));
|
|
if (PageCount > 1)
|
|
{
|
|
for (int i = 1; i < PageCount; i++)
|
|
{
|
|
postmessage = PostXmlTemplate.Replace("@Page@", (i + 1).ToString());
|
|
data = encoding.GetBytes(postmessage);
|
|
XmlContent = CustomIO.HttpRequest2("https://api.ebay.com/ws/api.dll", "POST", "", ListHeader, HttpVersion.Version10, data, out ErrorMessage);
|
|
if (XmlContent == "") return ListModel;
|
|
XmlContent = XmlContent.Replace(" xmlns=\"urn:ebay:apis:eBLBaseComponents\"", "");
|
|
doc = XElement.Parse(XmlContent);
|
|
doc_Order = doc.Element("OrderArray");
|
|
if (doc_Order != null)
|
|
{
|
|
foreach (XElement item in doc_Order.Elements("Order"))
|
|
{
|
|
if (CustomIO.GetXmlElement(item, "PaidTime") == "")
|
|
continue;
|
|
Ebay_Order model = ConvertOrder(item);
|
|
OrderModel model2 = model.ToOrderModel();
|
|
ListModel.Add(model2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return ListModel;
|
|
}
|
|
|
|
public List<OrderModel> GetOrdersForTM(DateTime? StartDate, DateTime? StopDate, string Token, out string ErrorMessage)
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
|
|
sb.Append("<GetOrdersRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">");
|
|
sb.Append("<RequesterCredentials>");
|
|
sb.Append("<eBayAuthToken>" + Token + "</eBayAuthToken>");
|
|
sb.Append("</RequesterCredentials>");
|
|
sb.Append("<OrderRole>Seller</OrderRole>");
|
|
|
|
sb.Append("<ModTimeFrom>" + StartDate.Value.ToString("yyyy-MM-dd") + "</ModTimeFrom>");
|
|
if (StopDate != null)
|
|
sb.Append("<ModTimeTo>" + StopDate.Value.ToString("yyyy-MM-dd HH:mm:ss") + "</ModTimeTo>");
|
|
|
|
sb.Append("<Pagination>");
|
|
sb.Append("<EntriesPerPage>100</EntriesPerPage>");
|
|
sb.Append("<PageNumber>@Page@</PageNumber>");
|
|
sb.Append("</Pagination>");
|
|
sb.Append("</GetOrdersRequest>");
|
|
string PostXmlTemplate = sb.ToString();
|
|
List<string> ListHeader = new List<string>();
|
|
ListHeader.Add("X-EBAY-API-COMPATIBILITY-LEVEL:" + Level);
|
|
ListHeader.Add("X-EBAY-API-DEV-NAME:" + DeveKey);
|
|
ListHeader.Add("X-EBAY-API-APP-NAME:" + Appkey);
|
|
ListHeader.Add("X-EBAY-API-CERT-NAME:" + CertKey);
|
|
ListHeader.Add("X-EBAY-API-SITEID:0");
|
|
ListHeader.Add("X-EBAY-API-CALL-NAME:GetOrders");
|
|
|
|
string postmessage = PostXmlTemplate.Replace("@Page@", "1");
|
|
ASCIIEncoding encoding = new ASCIIEncoding();
|
|
byte[] data = encoding.GetBytes(postmessage);
|
|
|
|
string XmlContent = CustomIO.HttpRequest2("https://api.ebay.com/ws/api.dll", "POST", "", ListHeader, HttpVersion.Version10, data, out ErrorMessage);
|
|
// ErrorFollow.TraceWrite("GetOrdersForTM", XmlContent, "");
|
|
if (XmlContent == "") return null;
|
|
XmlContent = XmlContent.Replace(" xmlns=\"urn:ebay:apis:eBLBaseComponents\"", "");
|
|
List<OrderModel> ListModel = new List<OrderModel>();
|
|
XElement doc = XElement.Parse(XmlContent);
|
|
XElement doc_Order = doc.Element("OrderArray");
|
|
if (doc_Order == null) return null;
|
|
|
|
foreach (XElement item in doc_Order.Elements("Order"))
|
|
{
|
|
if (item.Elements("PaidTime").Count() == 0 || item.Element("PaidTime").Value == "")
|
|
continue;
|
|
// Ebay_Order model = ConvertOrder(item);
|
|
//model.CheckoutStatus.Status = "";
|
|
//if (model.PaidTime == null) continue;
|
|
|
|
|
|
var Olist = AddOrderModel_new(item, ShopNo);
|
|
if (Olist == null)
|
|
continue;
|
|
foreach (var md in Olist)
|
|
{
|
|
ListModel.Add(md);
|
|
}
|
|
}
|
|
int PageCount = Convert.ToInt32(CustomIO.GetXmlElement(doc.Element("PaginationResult"), "TotalNumberOfPages"));
|
|
if (PageCount > 1)
|
|
{
|
|
for (int i = 1; i < PageCount; i++)
|
|
{
|
|
postmessage = PostXmlTemplate.Replace("@Page@", (i + 1).ToString());
|
|
data = encoding.GetBytes(postmessage);
|
|
XmlContent = CustomIO.HttpRequest2("https://api.ebay.com/ws/api.dll", "POST", "", ListHeader, HttpVersion.Version10, data, out ErrorMessage);
|
|
if (XmlContent == "") return ListModel;
|
|
XmlContent = XmlContent.Replace(" xmlns=\"urn:ebay:apis:eBLBaseComponents\"", "");
|
|
doc = XElement.Parse(XmlContent);
|
|
doc_Order = doc.Element("OrderArray");
|
|
if (doc_Order != null)
|
|
{
|
|
foreach (XElement item in doc_Order.Elements("Order"))
|
|
{
|
|
if (item.Elements("PaidTime").Count() == 0 || item.Element("PaidTime").Value == "")
|
|
continue;
|
|
var Olist =AddOrderModel_new(item, ShopNo);
|
|
if (Olist == null)
|
|
continue;
|
|
foreach (var md in Olist)
|
|
{
|
|
ListModel.Add(md);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return ListModel;
|
|
}
|
|
#endregion
|
|
#region 转换成统一的订单对象
|
|
public static List<OrderModel> AddOrderModel_new(XElement item, string ShopNo)
|
|
{
|
|
|
|
List<Ebay_Order> elist = new List<Ebay_Order>();
|
|
Ebay_Order Model = new Ebay_Order();
|
|
|
|
|
|
|
|
|
|
List<OrderModel> ListModel = new List<OrderModel>();
|
|
XElement Element2 = item.Element("TransactionArray");
|
|
if (Element2 != null)
|
|
{
|
|
int ONum = Element2.Elements("Transaction").Count();
|
|
string HBOrder = "";
|
|
|
|
foreach (XElement item2 in Element2.Elements("Transaction"))
|
|
{
|
|
|
|
OrderModel model = new OrderModel();
|
|
model.OrderCode = item2.Element("OrderLineItemID").Value;// ShopNo + item2.Element("ShippingDetails").Element("SellingManagerSalesRecordNumber").Value;//订单编号 item2.Element("OrderLineItemID").Value;//
|
|
//if (model.OrderCode == "124437772929-2416378713002")
|
|
//{
|
|
// string a = "";
|
|
//}
|
|
|
|
model.PlatOrderCode = item2.Element("ExtendedOrderID").Value;// item2.Element("OrderLineItemID").Value;//OrderLineItemID item2.Element("ExtendedOrderID").Value;//
|
|
//if (model.PlatOrderCode == "19-07163-60305-0" || model.PlatOrderCode == "19-07163-60305")
|
|
//{
|
|
// string b = "";
|
|
//}
|
|
if (ListModel != null)
|
|
{
|
|
var fmd = ListModel.FindAll(n => n.PlatOrderCode == model.PlatOrderCode);
|
|
if (fmd != null && fmd.Count>0)
|
|
{
|
|
model.PlatOrderCode = model.PlatOrderCode + "-" + fmd.Count;
|
|
}
|
|
}
|
|
if (ONum > 1 && HBOrder == "")
|
|
{
|
|
HBOrder = "M" + ShopNo + item.Element("ShippingDetails").Element("SellingManagerSalesRecordNumber").Value;
|
|
}
|
|
if (HBOrder != "")
|
|
model.HBOrderCode = HBOrder;
|
|
#region 计算每笔订单的运费
|
|
Decimal? ActualShippingCost = 0;
|
|
|
|
if (item2.Elements("ActualShippingCost").Count() > 0 && item2.Element("ActualShippingCost").Value != "0.0")
|
|
ActualShippingCost = Convert.ToDecimal(item2.Element("ActualShippingCost").Value);
|
|
|
|
if (item.Elements("ShippingServiceSelected").Count() > 0)
|
|
if (item.Element("ShippingServiceSelected").Elements("ShippingServiceCost").Count() > 0)
|
|
ActualShippingCost = Convert.ToDecimal(item.Element("ShippingServiceSelected").Element("ShippingServiceCost").Value) / item.Element("TransactionArray").Elements("Transaction").Count();
|
|
|
|
#endregion
|
|
|
|
model.TotalPrice = Convert.ToDecimal(item2.Element("TransactionPrice").Value) * Convert.ToDecimal(item2.Element("QuantityPurchased").Value) + ActualShippingCost;//总价格
|
|
model.MoneyCode = item.Element("Total").Attribute("currencyID").Value;//币种
|
|
if (item.Element("PaidTime") != null)
|
|
model.OrderDate = Convert.ToDateTime(item.Element("PaidTime").Value.Substring(0, 18).Replace("T", " "));//到账时间
|
|
model.BuyerID = item.Element("BuyerUserID").Value;//EB买家ID
|
|
if (string.IsNullOrEmpty(item.Element("ShippingAddress").Value) == true)
|
|
continue;
|
|
model.BuyerName = item.Element("ShippingAddress").Element("Name").Value;
|
|
model.BuyerCountry = item.Element("ShippingAddress").Element("CountryName").Value;
|
|
model.BuyerAddr = item.Element("ShippingAddress").Element("Street1").Value;
|
|
if (string.IsNullOrEmpty(item.Element("ShippingAddress").Element("Street2").Value) == false) model.BuyerAddr += "," + item.Element("ShippingAddress").Element("Street2").Value;
|
|
model.BuyerPhone = item.Element("ShippingAddress").Element("Phone").Value;
|
|
model.BuyerMobile = "";
|
|
if (item2.Element("Buyer").Element("Email") != null && item2.Element("Buyer").Element("Email").Value != null && item2.Element("Buyer").Element("Email").Value != "")
|
|
model.BuyerMail = item2.Element("Buyer").Element("Email").Value;//电子邮件
|
|
|
|
model.BuyerFax = "";
|
|
model.BuyerZip = item.Element("ShippingAddress").Element("PostalCode").Value;
|
|
model.BuyerProvince = item.Element("ShippingAddress").Element("StateOrProvince").Value;
|
|
model.BuyerCity = item.Element("ShippingAddress").Element("CityName").Value;
|
|
model.BuyerArea = "";
|
|
|
|
model.OrderRemark = ""; //memo
|
|
if (item.Elements("BuyerCheckoutMessage").Count() > 0)
|
|
model.LeaveWord = item.Element("BuyerCheckoutMessage").Value;//买家留言
|
|
else
|
|
model.LeaveWord = "";
|
|
if (item.Element("PaidTime") != null)
|
|
model.PayDate = Convert.ToDateTime(item.Element("PaidTime").Value.Substring(0, 18).Replace("T", " "));//到账时间
|
|
model.OutOrderDate = null;
|
|
|
|
//if (this.TransactionArray != null) model.PostInfo = this.TransactionArray[0].ShippingDetails.ShipmentTrackingDetails.ShippingCarrierUsed;
|
|
model.ListModel = new List<OrderDetailModel>();
|
|
|
|
|
|
OrderDetailModel model2 = new OrderDetailModel();
|
|
model2.GoodsNum = Convert.ToInt32(item2.Element("QuantityPurchased").Value);
|
|
model2.GoodsPrice = null;
|
|
if (item2.Elements("Variation").Elements("SKU").Count() > 0)
|
|
{
|
|
foreach (var e in item2.Element("Variation").Element("VariationSpecifics").Elements("NameValueList"))
|
|
{
|
|
model2.TypeDesc += e.Element("Name").Value + ":" + e.Element("Value").Value + ";";
|
|
}
|
|
}
|
|
model2.MoneyCode = model.MoneyCode;
|
|
if (item2.Elements("Variation").Elements("VariationTitle").Count() > 0)
|
|
model2.GoodsName = item2.Element("Variation").Element("VariationTitle").Value;
|
|
else
|
|
if (item2.Elements("Item").Elements("Title").Count() > 0)
|
|
model2.GoodsName = item2.Element("Item").Element("Title").Value;
|
|
if (item2.Elements("Variation").Elements("SKU").Count() > 0)
|
|
model2.GoodsSKU = item2.Element("Variation").Element("SKU").Value;
|
|
else if (item2.Elements("Item").Elements("SKU").Count() > 0)
|
|
model2.GoodsSKU = item2.Element("Item").Element("SKU").Value;
|
|
// model2.PostInfo = item2.ShippingDetails.ShipmentTrackingDetails.ShippingCarrierUsed;
|
|
model.ListModel.Add(model2);
|
|
|
|
ListModel.Add(model);
|
|
|
|
}
|
|
}
|
|
|
|
return ListModel;
|
|
}
|
|
#endregion
|
|
|
|
#region 发货上传跟踪码
|
|
public string CompleteSale(string Token, string ItemID, string Post, string TrackCode, DateTime? ShippedTime)
|
|
{
|
|
string[] itemlist = ItemID.Split('-');
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
|
|
sb.Append("<CompleteSaleRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">");
|
|
sb.Append("<RequesterCredentials>");
|
|
sb.Append("<eBayAuthToken>" + Token + "</eBayAuthToken>");
|
|
sb.Append("</RequesterCredentials>");
|
|
sb.Append("<WarningLevel>High</WarningLevel>");
|
|
|
|
// sb.Append("<FeedbackInfo>");
|
|
//sb.Append("<CommentText>Wonderful buyer, very fast payment.</CommentText>");//对买家评价
|
|
//sb.Append("<CommentType>Positive</CommentType>");//对买家评价
|
|
//sb.Append("<TargetUser>bountifulbuyer</TargetUser>");//买家用户
|
|
//sb.Append("</FeedbackInfo>");
|
|
sb.Append("<ItemID>" + itemlist[0] + "</ItemID>");//订单号
|
|
// sb.Append("<OrderID>" + ItemID + "</OrderID>");//订单号
|
|
sb.Append("<Paid>true</Paid>");
|
|
sb.Append("<Shipment>");
|
|
sb.Append("<ShipmentTrackingDetails>");
|
|
sb.Append("<ShipmentTrackingNumber>" + TrackCode + "</ShipmentTrackingNumber>");
|
|
sb.Append("<ShippingCarrierUsed>" + Post + "</ShippingCarrierUsed>");
|
|
sb.Append("</ShipmentTrackingDetails>");
|
|
sb.Append("<ShippedTime>" + ShippedTime.Value.ToString("yyyy-MM-dd HH:mm:ss") + "</ShippedTime>");
|
|
|
|
sb.Append("</Shipment>");
|
|
sb.Append("<Shipped>true</Shipped>");
|
|
sb.Append("<TransactionID>" + itemlist[1] + "</TransactionID>");
|
|
sb.Append("</CompleteSaleRequest>");
|
|
string PostXmlTemplate = sb.ToString();
|
|
List<string> ListHeader = new List<string>();
|
|
ListHeader.Add("X-EBAY-API-COMPATIBILITY-LEVEL:923");
|
|
ListHeader.Add("X-EBAY-API-DEV-NAME:" + DeveKey);
|
|
ListHeader.Add("X-EBAY-API-APP-NAME:" + Appkey);
|
|
ListHeader.Add("X-EBAY-API-CERT-NAME:" + CertKey);
|
|
ListHeader.Add("X-EBAY-API-SITEID:0");
|
|
ListHeader.Add("X-EBAY-API-CALL-NAME:CompleteSale");
|
|
|
|
string postmessage = PostXmlTemplate;//.Replace("@Page@", "1");
|
|
ASCIIEncoding encoding = new ASCIIEncoding();
|
|
byte[] data = encoding.GetBytes(postmessage);
|
|
string ErrorMessage = "";
|
|
string XmlContent = CustomIO.HttpRequest2("https://api.ebay.com/ws/api.dll", "POST", "", ListHeader, HttpVersion.Version10, data, out ErrorMessage);
|
|
if (XmlContent == "") return "失败";
|
|
XmlContent = XmlContent.Replace(" xmlns=\"urn:ebay:apis:eBLBaseComponents\"", "");
|
|
XElement doc = XElement.Parse(XmlContent).Element("Ack");
|
|
|
|
|
|
string a = doc.Value;
|
|
|
|
return a;
|
|
|
|
}
|
|
#endregion
|
|
|
|
#region 转换
|
|
List<OrderModel> ToListOrderModel(List<Ebay_Order> ListModel)
|
|
{
|
|
List<OrderModel> ListModel2 = new List<OrderModel>();
|
|
foreach (var item in ListModel)
|
|
{
|
|
OrderModel model = item.ToOrderModel();
|
|
ListModel2.Add(model);
|
|
}
|
|
return ListModel2;
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|