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#

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
}
}