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.

1253 lines
53 KiB
C#

2 months ago
using APIForCustomer.Utility;
using NetLibrary.Log;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using TPSVService;
using System.Net;
using System.IO;
using NetLibrary.sflink;
namespace NetLibrary.Express
{
public class sfApi
{
public string url{get;set;}
/// <summary>
/// 接入码
/// </summary>
public string UserCode { get; set; }
/// <summary>
/// 校验码
/// </summary>
public string CheckCode { get; set; }
/// <summary>
/// 语言
/// </summary>
public string Lang { get; set; }
public sfApi()
{
// url = "http://bsp-oisp.sf-express.com/bsp-oisp/ws/expressService?wsdl";
url = "http://ibu-ibse.sit.sf-express.com:1091/CBTA/ws/sfexpressService?wsdl";
Lang = "en";
}
#region 顺丰E宝跟踪码申请
public string SendGoods(sf_Order model, out string ErrorMessage)
{
if (string.IsNullOrEmpty(UserCode) == true)
{
ErrorMessage = "接入码不能为空";
return null;
}
if (string.IsNullOrEmpty(CheckCode) == true)
{
ErrorMessage = "校验码不能为空";
return null;
}
sf_OrderResult model2=GetOrderResult(model, out ErrorMessage);
if (string.IsNullOrEmpty(ErrorMessage) == false) return ErrorMessage;
//bool bk = OrderConfirm(model.Orderid, model2.mailno, 1, out ErrorMessage);
//if (string.IsNullOrEmpty(ErrorMessage) == false) return "";
//if (bk == false) return "";
if (model2 != null && model2.mailno != "")
{
if (model.express_type == "10")
{
return model2.agent_mailno+","+model2.mailno;
}
else
{
return model2.mailno;
}
}
else
return "";
}
public string SendGoods2(sf_Order2 model, out string ErrorMessage)
{
if (string.IsNullOrEmpty(UserCode) == true)
{
ErrorMessage = "接入码不能为空";
return null;
}
if (string.IsNullOrEmpty(CheckCode) == true)
{
ErrorMessage = "校验码不能为空";
return null;
}
var sfmodel= GetOrderResult2(model, out ErrorMessage);
if (string.IsNullOrEmpty(ErrorMessage) == false) return ErrorMessage;
return sfmodel.mailno;
}
#endregion
#region 顺丰欧美跟踪码申请
public string SendOU(sf_Order model, out string ErrorMessage)
{
if (string.IsNullOrEmpty(UserCode) == true)
{
ErrorMessage = "接入码不能为空";
return null;
}
sf_OrderResult model2 = GetOrderResult(model, out ErrorMessage);
if (string.IsNullOrEmpty(ErrorMessage) == false) return ErrorMessage;
if (model2 != null && model2.mailno != "")
{
return model2.mailno;
}
else
return "";
}
#endregion
#region 读取运单号
public sf_OrderResult GetOrderResult(sf_Order model, out string ErrorMessage)
{
if (string.IsNullOrEmpty(UserCode) == true)
{
ErrorMessage = "接入码不能为空";
return null;
}
if (string.IsNullOrEmpty(CheckCode) == true)
{
ErrorMessage = "校验码不能为空";
return null;
}
//if (string.IsNullOrEmpty(url) == false)
//obj.Url = this.url;
ErrorMessage = "";
StringBuilder sb = new StringBuilder();
sb.Append("<?xml version='1.0' encoding='utf-8' ?>");
sb.Append("<Request service=\"OrderService\" lang=\"" + this.Lang + "\">");
sb.Append("<Head>" + this.UserCode + "," + this.CheckCode + "</Head>");
sb.Append("<Body>" + model.ToXml() + "</Body>");
sb.Append("</Request>");
string data = sb.ToString();
string XmlContent = "";
try
{
//string url = "http://bsp-oisp.sf-express.com/bsp-oisp/ws/expressService?wsdl";
string url = "http://ibu-ibse.sit.sf-express.com:1091/CBTA/ws/sfexpressService?wsdl";
string name = "sfexpressService";
WebServiceProxy wsd;
try
{
wsd = new WebServiceProxy(url, name);
}
catch (Exception ex)
{
throw new Exception("创建代理对象异常", ex);
}
//p.Country == "Russian Federation"
//string suc = wsd.Execute(name, data);
XmlContent = wsd.Execute(name, data);// obj.sfexpressService(data);
}
catch (Exception ex)
{
ErrorMessage = ex.Message;
ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message);
return null;
}
XmlContent = XmlContent.ToLower();
XElement doc = XElement.Parse(XmlContent);
string head = CustomIO.GetXmlElement(doc, "head");
if (head == "err")
{
ErrorMessage = CustomIO.GetXmlElement(doc, "error");
return null;
}
doc = doc.Element("body").Element("orderresponse");
sf_OrderResult model2 = new sf_OrderResult();
model2.orderid = CustomIO.GetXmlAttribute(doc, "orderid");
model2.mailno = CustomIO.GetXmlAttribute(doc, "mailno");
model2.return_tracking_no = CustomIO.GetXmlAttribute(doc, "return_tracking_no");
model2.agent_mailno = CustomIO.GetXmlAttribute(doc, "agent_mailno");
model2.origincode = CustomIO.GetXmlAttribute(doc, "origincode");
model2.destcode = CustomIO.GetXmlAttribute(doc, "destcode");
model2.filter_result = CustomIO.GetXmlAttribute(doc, "filter_result");
model2.remark = CustomIO.GetXmlAttribute(doc, "remark");
return model2;
}
#endregion
#region 读取运单号
public sf_OrderResult GetOrderResult2(sf_Order2 model, out string ErrorMessage)
{
if (string.IsNullOrEmpty(UserCode) == true)
{
ErrorMessage = "接入码不能为空";
return null;
}
if (string.IsNullOrEmpty(CheckCode) == true)
{
ErrorMessage = "校验码不能为空";
return null;
}
//if (string.IsNullOrEmpty(url) == false)
// obj.Url = this.url;
ErrorMessage = "";
StringBuilder sb = new StringBuilder();
// sb.Append("<?xml version='1.0' encoding='utf-8' ?>");
sb.Append("<Request service=\"OrderService\" lang=\"zh-CN\">");
sb.Append("<Head>" + this.UserCode+"</Head>");
sb.Append("<Body>" + model.ToXml() + "</Body>");
sb.Append("</Request>");
string xml = sb.ToString();
string XmlContent = "";
try
{
string check_word = CheckCode;
string verifyCode = MD5Base64(xml + check_word); //example format: ODA4RUExMzFDRDRFM0ZFOThFOTUwQjAyNDgyOERGNjQ=
SfexpressServiceClient service = new SfexpressServiceClient();
//service.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://ibu-ibse.sit.sf-express.com:1091/CBTA/ws/sfexpressService?wsdl");
//string name = "sfexpressService";
//WebServiceProxy wsd;
//try
//{
// wsd = new WebServiceProxy(url, name);
//}
//catch (Exception ex)
//{
// throw new Exception("创建代理对象异常", ex);
//}
XmlContent = service.sfexpressService(xml, verifyCode);
XmlContent = XmlContent.ToLower();
XElement doc = XElement.Parse(XmlContent);
string head = CustomIO.GetXmlElement(doc, "head");
if (head == "err")
{
XElement doc3 = doc.Element("error");
string code = CustomIO.GetXmlAttribute(doc3, "code");
ErrorMessage ="错误代码:"+code+","+CustomIO.GetXmlElement(doc, "error");
return null;
}
doc = doc.Element("body").Element("orderresponse");
sf_OrderResult model2 = new sf_OrderResult();
model2.orderid = CustomIO.GetXmlAttribute(doc, "orderid");
model2.mailno = CustomIO.GetXmlAttribute(doc, "mailno");
// model2.return_tracking_no = CustomIO.GetXmlAttribute(doc, "return_tracking_no");
model2.agent_mailno = CustomIO.GetXmlAttribute(doc, "agent_mailno");
model2.skybill_code = CustomIO.GetXmlAttribute(doc, "skybill_code");
//model2.destcode = CustomIO.GetXmlAttribute(doc, "destcode");
//model2.filter_result = CustomIO.GetXmlAttribute(doc, "filter_result");
//model2.remark = CustomIO.GetXmlAttribute(doc, "remark");
return model2;
//return response;
}
catch (Exception ex)
{
ErrorMessage = ex.Message;
return null;
// return ex.Message;
}
return null;
//try
//{
// //string url = "http://bsp-oisp.sf-express.com/bsp-oisp/ws/expressService?wsdl";
// string url = "http://ibu-ibse.sit.sf-express.com:1091/CBTA/ws/sfexpressService?wsdl";
// string name = "sfexpressService";
// WebServiceProxy wsd;
// try
// {
// wsd = new WebServiceProxy(url, name);
// }
// catch (Exception ex)
// {
// throw new Exception("创建代理对象异常", ex);
// }
// //p.Country == "Russian Federation"
// //string suc = wsd.Execute(name, data);
// XmlContent = wsd.Execute(name, data);// obj.sfexpressService(data);
//}
//catch (Exception ex)
//{
// ErrorMessage = ex.Message;
// ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message);
// return null;
//}
//XmlContent = XmlContent.ToLower();
//XElement doc = XElement.Parse(XmlContent);
//string head = CustomIO.GetXmlElement(doc, "head");
//if (head == "err")
//{
// ErrorMessage = CustomIO.GetXmlElement(doc, "error");
// return null;
//}
//doc = doc.Element("body").Element("orderresponse");
//sf_OrderResult model2 = new sf_OrderResult();
//model2.orderid = CustomIO.GetXmlAttribute(doc, "orderid");
//model2.mailno = CustomIO.GetXmlAttribute(doc, "mailno");
//model2.return_tracking_no = CustomIO.GetXmlAttribute(doc, "return_tracking_no");
//model2.agent_mailno = CustomIO.GetXmlAttribute(doc, "agent_mailno");
//model2.origincode = CustomIO.GetXmlAttribute(doc, "origincode");
//model2.destcode = CustomIO.GetXmlAttribute(doc, "destcode");
//model2.filter_result = CustomIO.GetXmlAttribute(doc, "filter_result");
//model2.remark = CustomIO.GetXmlAttribute(doc, "remark");
//return model2;
}
#endregion
public static string MD5Base64(string input)
{
string pwd = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(input, "MD5");
byte[] by = System.Text.Encoding.UTF8.GetBytes(pwd);
return Convert.ToBase64String(by);
}
#region 读取顺丰欧美运单号
public sf_OrderResult GetOrderResultOU(sf_Order model, out string ErrorMessage)
{
Lang = "zh-CN";
if (string.IsNullOrEmpty(UserCode) == true)
{
ErrorMessage = "接入码不能为空";
return null;
}
//if (string.IsNullOrEmpty(url) == false)
//obj.Url = this.url;
ErrorMessage = "";
StringBuilder sb = new StringBuilder();
sb.Append("<?xml version='1.0' encoding='utf-8' ?>");
sb.Append("<Request service=\"OrderService\" lang=\"" + this.Lang + "\">");
sb.Append("<Head>" + this.UserCode + "</Head>");
sb.Append("<Body>" + model.ToOUXml() + "</Body>");
sb.Append("</Request>");
string data = sb.ToString();
string XmlContent = "";
try
{
XmlContent = RequestUtility.SubmitRequest(data.Replace("\r", "").Trim());//sfobj.sfexpressService(data, this.UserCode);
}
catch (Exception ex)
{
ErrorMessage = ex.Message;
ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message);
return null;
}
XmlContent = XmlContent.ToLower();
XElement doc = XElement.Parse(XmlContent);
string head = CustomIO.GetXmlElement(doc, "head");
if (head == "err")
{
ErrorMessage = CustomIO.GetXmlElement(doc, "error");
return null;
}
doc = doc.Element("body").Element("orderresponse");
sf_OrderResult model2 = new sf_OrderResult();
model2.orderid = CustomIO.GetXmlAttribute(doc, "orderid");
model2.mailno = CustomIO.GetXmlAttribute(doc, "mailno");
model2.return_tracking_no = CustomIO.GetXmlAttribute(doc, "return_tracking_no");
model2.agent_mailno = CustomIO.GetXmlAttribute(doc, "agent_mailno");
model2.origincode = CustomIO.GetXmlAttribute(doc, "origincode");
model2.destcode = CustomIO.GetXmlAttribute(doc, "destcode");
model2.filter_result = CustomIO.GetXmlAttribute(doc, "filter_result");
model2.remark = CustomIO.GetXmlAttribute(doc, "remark");
return model2;
}
#endregion
#region 发货确认
/// <summary>
/// 发货确认
/// </summary>
/// <param name="orderid">订单号</param>
/// <param name="mailno">运单号</param>
/// <param name="dealttype">1运单确认2消单</param>
/// <param name="ErrorMessage">错误消息</param>
/// <returns>true成功false失败</returns>
public bool OrderConfirm(string orderid, string mailno, int dealttype, out string ErrorMessage)
{
if (string.IsNullOrEmpty(UserCode) == true)
{
ErrorMessage = "接入码不能为空";
return false;
}
if (string.IsNullOrEmpty(CheckCode) == true)
{
ErrorMessage = "校验码不能为空";
return false;
}
// if (string.IsNullOrEmpty(url) == false) obj.Url = this.url;
ErrorMessage = "";
StringBuilder sb = new StringBuilder();
sb.Append("<Request service=\"OrderConfirmService\" lang=\"" + this.Lang + "\">");
sb.Append("<Head>" + this.UserCode + "," + this.CheckCode + "</Head>");
sb.Append("<Body>");
sb.Append("<OrderConfirm");
sb.Append(" orderid=\"" + orderid + "\"");
sb.Append(" mailno=\"" + mailno + "\"");
sb.Append(" dealttype=\"" + dealttype + "\"");
sb.Append(">");
sb.Append("</OrderConfirm>");
sb.Append("</Body>");
sb.Append("</Request>");
string data = sb.ToString();
string XmlContent = "";
try
{
// XmlContent = obj.sfexpressService(data);
}
catch (Exception ex)
{
ErrorMessage = ex.Message;
ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message);
return false;
}
XmlContent = XmlContent.ToLower();
XElement doc = XElement.Parse(XmlContent);
string head = CustomIO.GetXmlElement(doc, "head");
if (head == "err")
{
ErrorMessage = CustomIO.GetXmlElement(doc, "error");
return false;
}
doc = doc.Element("body").Element("orderconfirmresponse");
string res_status = CustomIO.GetXmlAttribute(doc, "head");
if (res_status == "1") return false;
return true;
}
#endregion
public string PostXml(string url, string strPost)
{
string result = string.Empty;
//Our postvars
//ASCIIEncoding.ASCII.GetBytesstring str
//就是把字符串str按照简体中文(ASCIIEncoding.ASCII)的编码方式,
//编码成 Bytes类型的字节流数组;
// 要注意的这是这个编码方式还有内容的Xml内容的编码方式,如果没有注意对应会出现文末的错误
byte[] buffer = Encoding.UTF8.GetBytes(strPost);
StreamWriter myWriter = null;
//根据url创建HttpWebRequest对象
//Initialisation, we use localhost, change if appliable
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
//Our method is post, otherwise the buffer (postvars) would be useless
objRequest.Method = "POST";
//The length of the buffer (postvars) is used as contentlength.
//Set the content length of the string being posted.
objRequest.ContentLength = buffer.Length;
//We use form contentType, for the postvars.
//Set the content type of the data being posted.
objRequest.ContentType = "text/xml";//提交xml
//objRequest.ContentType = "application/x-www-form-urlencoded";//提交表单
try
{
//We open a stream for writing the postvars
myWriter = new StreamWriter(objRequest.GetRequestStream());
//Now we write, and afterwards, we close. Closing is always important!
myWriter.Write(strPost);
}
catch (Exception e)
{
return e.Message;
}
finally
{
myWriter.Close();
}
//读取服务器返回信息
//Get the response handle, we have no true response yet!
//本文URLhttp://www.bianceng.cn/Programming/csharp/201410/45576.htm
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
//using作为语句用于定义一个范围在此范围的末尾将释放对象
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
{
//ReadToEnd适用于小文件的读取一次性的返回整个文件
result = sr.ReadToEnd();
sr.Close();
}
return result;
}
}
#region 订单
public class sf_Order
{
/// <summary>
/// 客户订单号
/// </summary>
public string orderid { get; set; }
/// <summary>
/// 快件产品类别1 标准快递2 顺丰特惠9 顺E宝平邮10 顺E宝挂号此处传产品代码
/// 目前支持如下
///E1顺丰国际小包平邮
///E2: 顺丰国际小包挂号
///E3: 顺丰国际电商专递
/// </summary>
public string express_type { get; set; }
/// <summary>
/// 寄件方公司名称
/// </summary>
public string j_company { get; set; }
/// <summary>
/// 寄件方联系人
/// </summary>
public string j_contact { get; set; }
/// <summary>
/// 寄件方电话
/// </summary>
public string j_tel { get; set; }
/// <summary>
/// 寄件方手机
/// </summary>
public string j_mobile { get; set; }
/// <summary>
/// 寄件方详细地址
/// </summary>
public string j_address { get; set; }
/// <summary>
/// 到件方公司名称,没有的话就传联系人名称
/// </summary>
public string d_company { get; set; }
/// <summary>
/// 到件方联系人
/// </summary>
public string d_contact { get; set; }
/// <summary>
/// 到件方联系电话
/// </summary>
public string d_tel { get; set; }
/// <summary>
/// 到件方手机
/// </summary>
public string d_mobile { get; set; }
/// <summary>
/// 到件方详细地址
/// </summary>
public string d_address { get; set; }
/// <summary>
/// 包裹数
/// </summary>
public int? parcel_quantity { get; set; }
/// <summary>
/// 付款方式1:寄方付 2:收方付 3:第三方付
/// </summary>
public int? pay_method { get; set; }
/// <summary>
/// 寄件方所在省份
/// </summary>
public string j_province { get; set; }
/// <summary>
/// 寄件方所属城市名称
/// </summary>
public string j_city { get; set; }
/// <summary>
/// 到件方所在省份
/// </summary>
public string d_province { get; set; }
/// <summary>
/// 到件方所属城市名称
/// </summary>
public string d_city { get; set; }
/// <summary>
/// 托寄物声明价值
/// </summary>
public decimal? declared_value { get; set; }
/// <summary>
/// 托寄物声明价值币别CNY: 人民币HKD: 港币USD: 美元NTD: 新台币RUB: 卢布EUR: 欧元MOP: 澳门元SGD: 新元JPY: 日元KRW: 韩元MYR: 马币VND: 越南盾THB: 泰铢AUD: 澳大利亚元MNT: 图格里克
/// </summary>
public string declared_value_currency { get; set; }
/// <summary>
/// 月结卡号
/// </summary>
public string custid { get; set; }
/// <summary>
/// 模板选择
/// </summary>
public string template { get; set; }
/// <summary>
/// 寄方国家
/// </summary>
public string j_country { get; set; }
/// <summary>
/// 寄件人所在县/区
/// </summary>
public string j_county { get; set; }
/// <summary>
/// 寄件方代码
/// </summary>
public string j_shippercode { get; set; }
/// <summary>
/// 寄方邮编
/// </summary>
public string j_post_code { get; set; }
/// <summary>
/// 到方国家
/// </summary>
public string d_country { get; set; }
/// <summary>
/// 到件人所在县/区
/// </summary>
public string d_county { get; set; }
/// <summary>
/// 到件方代码
/// </summary>
public string d_deliverycode { get; set; }
/// <summary>
/// 到方邮编
/// </summary>
public string d_post_code { get; set; }
/// <summary>
/// 订单货物总重量
/// </summary>
public decimal? cargo_total_weight { get; set; }
/// <summary>
/// 要求上门取件开始时间格式YYYY-MM-DD HH24:MM:SS示例2012-7-30 09:30:00默认为系统收到订单的系统时间
/// </summary>
public DateTime? sendstarttime { get; set; }
/// <summary>
/// 运单号
/// </summary>
public string mailno { get; set; }
/// <summary>
/// 签回单单号
/// </summary>
public string return_tracking { get; set; }
/// <summary>
/// 备注
/// </summary>
public string remark { get; set; }
/// <summary>
/// 是否需要签回单号1需要
/// </summary>
public string need_return_tracking_no { get; set; }
/// <summary>
/// 是否下call 1-下call,其他否SYSTEM表示如果不提供将从系统配置获取
/// </summary>
public string is_docall { get; set; }
/// <summary>
/// 是否申请运单号 1-申请运单号其他否SYSTEM表示如果不提供将从系统配置获取
/// </summary>
public int? is_gen_bill_no { get; set; }
/// <summary>
/// 是否生成电子运单图片 1-生成其他否SYSTEM表示如果不提供将从系统配置获取
/// </summary>
public int? is_gen_eletric_pic { get; set; }
/// <summary>
/// 图片格式如果需要顺丰系统推送图片则要传这个值。1A42A5
/// </summary>
public int? waybill_size { get; set; }
/// <summary>
/// 长
/// </summary>
public decimal? cargo_length { get; set; }
/// <summary>
/// 宽
/// </summary>
public decimal? cargo_width { get; set; }
/// <summary>
/// 高
/// </summary>
public decimal? cargo_height { get; set; }
/// <summary>
/// 物品信息
/// </summary>
public List<sf_Goods> ListGoods { get; set; }
/// <summary>
/// 增值服务
/// </summary>
public List<sf_Service> ListService { get; set; }
public sf_Order()
{
ListGoods = new List<sf_Goods>();
ListService = new List<sf_Service>();
}
#region 转成XML
public string ToXml()
{
StringBuilder sb = new StringBuilder();
sb.Append("<Order");
sb.Append(" orderid=\""+this.orderid+"\"");
if (string.IsNullOrEmpty(this.express_type) == false) sb.Append(" express_type=\"" + this.express_type + "\"");
if (string.IsNullOrEmpty(this.j_company) == false) sb.Append(" j_company=\"" + this.j_company + "\"");
if (string.IsNullOrEmpty(this.j_contact) == false) sb.Append(" j_contact=\"" + this.j_contact + "\"");
if (string.IsNullOrEmpty(this.j_tel) == false) sb.Append(" j_tel=\"" + this.j_tel + "\"");
if (string.IsNullOrEmpty(this.j_mobile) == false)
sb.Append(" j_mobile=\"" + this.j_mobile.ToString() + "\"");
else
sb.Append(" j_mobile=\"\"");
sb.Append(" operate_flag=\"1\"");
if (string.IsNullOrEmpty(this.j_address) == false) sb.Append(" j_address=\"" + this.j_address + "\"");
sb.Append(" d_company=\"" + this.d_company + "\"");
sb.Append(" d_contact=\"" + this.d_contact + "\"");
sb.Append(" d_tel=\"" + this.d_tel + "\"");
if (string.IsNullOrEmpty(this.d_mobile) == false)
sb.Append(" d_mobile=\"" + this.d_mobile.ToString() + "\"");
else
sb.Append(" d_mobile=\"\"");
sb.Append(" d_address=\"" + this.d_address + "\"");
if (this.parcel_quantity != null) sb.Append(" parcel_quantity=\"" + this.parcel_quantity + "\"");
if (this.pay_method != null) sb.Append(" pay_method=\"" + this.pay_method + "\"");
if (string.IsNullOrEmpty(this.j_province) == false) sb.Append(" j_province=\"" + this.j_province + "\"");
if (string.IsNullOrEmpty(this.j_city) == false)
sb.Append(" j_city=\"" + this.j_city.ToString() + "\"");
else
sb.Append(" j_city=\"\"");
if (this.declared_value != null) sb.Append(" declared_value=\"" + this.declared_value.Value.ToString("0.###") + "\"");
if (string.IsNullOrEmpty(this.declared_value_currency) == false) sb.Append(" declared_value_currency=\"" + this.declared_value_currency + "\"");
if (string.IsNullOrEmpty(this.custid) == false) sb.Append(" custid=\"" + this.custid + "\"");
if (string.IsNullOrEmpty(this.j_country) == false) sb.Append(" j_country=\"" + this.j_country + "\"");
if (string.IsNullOrEmpty(this.j_county) == false) sb.Append(" j_county=\"" + this.j_county + "\"");
if (string.IsNullOrEmpty(this.j_post_code) == false) sb.Append(" j_post_code=\"" + this.j_post_code + "\"");
if (string.IsNullOrEmpty(this.d_country) == false) sb.Append(" d_country=\"" + this.d_country + "\"");
if (string.IsNullOrEmpty(this.d_province) == false) sb.Append(" d_province=\"" + this.d_province + "\"");
if (string.IsNullOrEmpty(this.d_city) == false)
sb.Append(" d_city=\"" + this.d_city.ToString() + "\"");
else sb.Append(" d_city=\"\"");
if (string.IsNullOrEmpty(this.d_county) == false)
sb.Append(" d_county=\"" + this.d_county.ToString() + "\"");
else
sb.Append(" d_county=\"\"");
if (string.IsNullOrEmpty(this.d_deliverycode) == false) sb.Append(" d_deliverycode=\"" + this.d_deliverycode + "\"");
if (string.IsNullOrEmpty(this.d_post_code) == false) sb.Append(" d_post_code=\"" + this.d_post_code + "\"");
if (this.cargo_total_weight != null) sb.Append(" cargo_total_weight=\"" + this.cargo_total_weight.Value.ToString("0.###") + "\"");
//if (string.IsNullOrEmpty(this.mailno) == false) sb.Append(" mailno=\"" + this.mailno + "\"");
//if (string.IsNullOrEmpty(this.return_tracking) == false) sb.Append(" return_tracking=\"" + this.return_tracking + "\"");
//if (string.IsNullOrEmpty(this.remark) == false) sb.Append(" remark=\"" + this.remark + "\"");
//if (string.IsNullOrEmpty(this.need_return_tracking_no) == false) sb.Append(" need_return_tracking_no=\"" + this.need_return_tracking_no + "\"");
//if (this.is_docall != null) sb.Append(" is_docall=\"" + this.is_docall + "\"");
//if (this.is_gen_bill_no != null) sb.Append(" is_gen_bill_no=\"" + this.is_gen_bill_no + "\"");
//if (this.is_gen_eletric_pic != null) sb.Append(" is_gen_eletric_pic=\"" + this.is_gen_eletric_pic + "\"");
//if (this.waybill_size != null) sb.Append(" waybill_size=\"" + this.waybill_size + "\"");
//if (this.cargo_length != null) sb.Append(" cargo_length=\"" + this.cargo_length.Value.ToString("0.###") + "\"");
//if (this.cargo_width != null) sb.Append(" cargo_width=\"" + this.cargo_width.Value.ToString("0.###") + "\"");
//if (this.cargo_height != null) sb.Append(" cargo_height=\"" + this.cargo_height.Value.ToString("0.###") + "\"");
sb.Append(">");
foreach (var item in this.ListGoods)
{
sb.Append("<Cargo");
sb.Append(" name=\"" + item.name + "\"");
if (item.count != null) sb.Append(" count=\"" + item.count + "\"");
sb.Append(" unit=\"piece\"");
if (item.weight != null) sb.Append(" weight=\"" + item.weight.Value.ToString("0.###") + "\"");
if (item.amount != null) sb.Append(" amount=\"" + item.amount.Value.ToString("0.##########") + "\"");
if (string.IsNullOrEmpty(item.currency) == false) sb.Append(" currency=\"" + item.currency + "\"");
sb.Append(" source_area=\"china\"");
sb.Append(">");
sb.Append("</Cargo>");
}
//foreach (var item in this.ListService)
//{
// sb.Append("<AddedService");
// sb.Append(" name=\"" + item.name + "\"");
// if (string.IsNullOrEmpty(item.value) == false) sb.Append(" value=\"" + item.value + "\"");
// if (string.IsNullOrEmpty(item.value1) == false) sb.Append(" value1=\"" + item.value1 + "\"");
// if (string.IsNullOrEmpty(item.value2) == false) sb.Append(" value2=\"" + item.value2 + "\"");
// if (string.IsNullOrEmpty(item.value3) == false) sb.Append(" value3=\"" + item.value3 + "\"");
// if (string.IsNullOrEmpty(item.value4) == false) sb.Append(" value4=\"" + item.value4 + "\"");
// sb.Append(">");
// sb.Append("</AddedService>");
//}
sb.Append("</Order>");
return sb.ToString();
}
#endregion
#region 欧美转成XML
public string ToOUXml()
{
StringBuilder sb = new StringBuilder();
sb.Append("<Order");
sb.Append(" orderid=\""+this.orderid+"\"");
if (string.IsNullOrEmpty(this.express_type) == false) sb.Append(" express_type=\"" + this.express_type + "\"");
if (string.IsNullOrEmpty(this.j_company) == false) sb.Append(" j_company=\"" + this.j_company + "\"");
if (string.IsNullOrEmpty(this.j_contact) == false) sb.Append(" j_contact=\"" + this.j_contact + "\"");
if (string.IsNullOrEmpty(this.j_tel) == false) sb.Append(" j_tel=\"" + this.j_tel + "\"");
if (string.IsNullOrEmpty(this.j_mobile) == false)
sb.Append(" j_mobile=\"" + this.j_mobile.ToString() + "\"");
else
sb.Append(" j_mobile=\"\"");
sb.Append(" operate_flag=\"1\"");
if (string.IsNullOrEmpty(this.j_address) == false) sb.Append(" j_address=\"" + this.j_address + "\"");
sb.Append(" d_company=\"" + this.d_company + "\"");
sb.Append(" d_contact=\"" + this.d_contact + "\"");
sb.Append(" d_tel=\"" + this.d_tel + "\"");
if (string.IsNullOrEmpty(this.d_mobile) == false)
sb.Append(" d_mobile=\"" + this.d_mobile.ToString() + "\"");
else
sb.Append(" d_mobile=\"\"");
sb.Append(" d_address=\"" + this.d_address + "\"");
if (this.parcel_quantity != null) sb.Append(" parcel_quantity=\"" + this.parcel_quantity + "\"");
if (string.IsNullOrEmpty(this.j_province) == false) sb.Append(" j_province=\"" + this.j_province + "\"");
if (string.IsNullOrEmpty(this.j_city) == false)
sb.Append(" j_city=\"" + this.j_city.ToString() + "\"");
else
sb.Append(" j_city=\"\"");
if (string.IsNullOrEmpty(this.j_country) == false) sb.Append(" j_country=\"" + this.j_country + "\"");
if (string.IsNullOrEmpty(this.j_county) == false) sb.Append(" j_county=\"" + this.j_county + "\"");
if (string.IsNullOrEmpty(this.j_post_code) == false) sb.Append(" j_post_code=\"" + this.j_post_code + "\"");
if (string.IsNullOrEmpty(this.d_country) == false) sb.Append(" d_country=\"" + this.d_country + "\"");
if (string.IsNullOrEmpty(this.d_province) == false) sb.Append(" d_province=\"" + this.d_province + "\"");
if (string.IsNullOrEmpty(this.d_city) == false)
sb.Append(" d_city=\"" + this.d_city.ToString() + "\"");
else sb.Append(" d_city=\"\"");
if (string.IsNullOrEmpty(this.d_county) == false)
sb.Append(" d_county=\"" + this.d_county.ToString() + "\"");
else
sb.Append(" d_county=\"\"");
if (string.IsNullOrEmpty(this.d_post_code) == false) sb.Append(" d_post_code=\"" + this.d_post_code + "\"");
if (this.cargo_total_weight != null) sb.Append(" cargo_total_weight=\"" + this.cargo_total_weight.Value.ToString("0.###") + "\"");
sb.Append(">");
foreach (var item in this.ListGoods)
{
sb.Append("<Cargo");
sb.Append(" name=\"" + item.name + "\"");
if (item.count != null) sb.Append(" count=\"" + item.count + "\"");
if (string.IsNullOrEmpty(item.unit) == false) sb.Append(" unit=\"PCE\"");
if (item.weight != null) sb.Append(" weight=\"" + item.weight.Value.ToString("0.###") + "\"");
if (item.amount != null) sb.Append(" amount=\"" + item.amount.Value.ToString("0.##########") + "\"");
if (string.IsNullOrEmpty(item.currency) == false) sb.Append(" ename=\"" + item.ename + "\"");
sb.Append(">");
sb.Append("</Cargo>");
}
sb.Append("</Order>");
return sb.ToString();
}
#endregion
}
#endregion
#region 订单
public class sf_Order2
{
/// <summary>
/// 客户订单号
/// </summary>
public string orderid { get; set; }
/// <summary>
/// 快件产品类别1 标准快递2 顺丰特惠9 顺E宝平邮10 顺E宝挂号此处传产品代码
/// 目前支持如下
///E1顺丰国际小包平邮
///E2: 顺丰国际小包挂号
///E3: 顺丰国际电商专递
/// </summary>
public string express_type { get; set; }
/// <summary>
/// 寄件方公司名称
/// </summary>
public string j_company { get; set; }
/// <summary>
/// 寄件方联系人
/// </summary>
public string j_contact { get; set; }
/// <summary>
/// 寄件方电话
/// </summary>
public string j_tel { get; set; }
/// <summary>
/// 寄件方手机
/// </summary>
public string j_mobile { get; set; }
/// <summary>
/// 寄件方详细地址
/// </summary>
public string j_address { get; set; }
/// <summary>
/// 到件方公司名称,没有的话就传联系人名称
/// </summary>
public string d_company { get; set; }
/// <summary>
/// 到件方联系人
/// </summary>
public string d_contact { get; set; }
/// <summary>
/// 到件方联系电话
/// </summary>
public string d_tel { get; set; }
/// <summary>
/// 到件方手机
/// </summary>
public string d_mobile { get; set; }
/// <summary>
/// 到件方手机
/// </summary>
public string d_email { get; set; }
/// <summary>
/// 操作表示(0.新增1.新增并确认订单)
/// </summary>
public string operate_flag{ get; set; }
/// <summary>
/// 到件方详细地址
/// </summary>
public string d_address { get; set; }
/// <summary>
/// 包裹数
/// </summary>
public int? parcel_quantity { get; set; }
///// <summary>
///// 付款方式1:寄方付 2:收方付 3:第三方付
///// </summary>
//public int? pay_method { get; set; }
/// <summary>
/// 寄件方所在省份
/// </summary>
public string j_province { get; set; }
/// <summary>
/// 寄件方所属城市名称
/// </summary>
public string j_city { get; set; }
/// <summary>
/// 到件方所在省份
/// </summary>
public string d_province { get; set; }
/// <summary>
/// 到件方所属城市名称
/// </summary>
public string d_city { get; set; }
/// <summary>
/// 寄方国家
/// </summary>
public string j_country { get; set; }
/// <summary>
/// 寄方国家
/// </summary>
public string j_post_code { get; set; }
/// <summary>
/// 到方国家
/// </summary>
public string d_country { get; set; }
/// <summary>
/// 到方邮编
/// </summary>
public string d_post_code { get; set; }
/// <summary>
/// 订单货物总重量单位KG
/// </summary>
public decimal? cargo_total_weight { get; set; }
/// <summary>
/// 客户ERP的标识码
/// </summary>
public string returnsign { get; set; }
/// <summary>
/// 月结卡号
/// </summary>
public string pit_code { get; set; }
/// <summary>
/// 模板选择
/// </summary>
public string length { get; set; }
/// <summary>
/// 模板选择
/// </summary>
public string width { get; set; }
/// <summary>
/// 模板选择
/// </summary>
public string height { get; set; }
/// <summary>
/// 寄件方代码
/// </summary>
public string d_identify_code { get; set; }
/// <summary>
/// VAT税号
/// </summary>
public string vat_code { get; set; }
/// <summary>
/// 是否有电,默认为空有点则填写Y不带电填写N(俄罗斯专递必填、其它选填)
/// </summary>
public string is_battery { get; set; }
/// <summary>
/// 保价服务
/// </summary>
public string is_insurance { get; set; }
/// <summary>
/// 物品信息
/// </summary>
public List<sf_Goods2> ListGoods { get; set; }
/// <summary>
/// 增值服务
/// </summary>
// public List<sf_Service> ListService { get; set; }
public sf_Order2()
{
ListGoods = new List<sf_Goods2>();
// ListService = new List<sf_Service>();
}
#region 转成XML
public string ToXml()
{
StringBuilder sb = new StringBuilder();
sb.Append("<Order");
sb.Append(" orderid=\"" + this.orderid + "\"");
if (string.IsNullOrEmpty(this.express_type) == false) sb.Append(" express_type=\"" + this.express_type + "\"");
if (string.IsNullOrEmpty(this.j_company) == false) sb.Append(" j_company=\"" + this.j_company + "\"");
if (string.IsNullOrEmpty(this.j_contact) == false) sb.Append(" j_contact=\"" + this.j_contact + "\"");
if (string.IsNullOrEmpty(this.j_tel) == false) sb.Append(" j_tel=\"" + this.j_tel + "\"");
if (string.IsNullOrEmpty(this.j_mobile) == false)
sb.Append(" j_mobile=\"" + this.j_mobile.ToString() + "\"");
else
sb.Append(" j_mobile=\"\"");
if (string.IsNullOrEmpty(this.pit_code) == false)
sb.Append(" pit_code=\"" + this.pit_code.ToString() + "\"");
else
sb.Append(" pit_code=\"\"");
sb.Append(" operate_flag=\"1\"");
if (string.IsNullOrEmpty(this.j_address) == false) sb.Append(" j_address=\"" + this.j_address + "\"");
sb.Append(" d_company=\"" + this.d_company + "\"");
sb.Append(" d_contact=\"" + this.d_contact + "\"");
sb.Append(" d_tel=\"" + this.d_tel + "\"");
if (string.IsNullOrEmpty(this.d_mobile) == false)
sb.Append(" d_mobile=\"" + this.d_mobile.ToString() + "\"");
else
sb.Append(" d_mobile=\"\"");
sb.Append(" d_address=\"" + this.d_address + "\"");
if (this.parcel_quantity != null) sb.Append(" parcel_quantity=\"" + this.parcel_quantity + "\"");
// if (this.pay_method != null) sb.Append(" pay_method=\"" + this.pay_method + "\"");
if (string.IsNullOrEmpty(this.j_province) == false) sb.Append(" j_province=\"" + this.j_province + "\"");
if (string.IsNullOrEmpty(this.j_city) == false)
sb.Append(" j_city=\"" + this.j_city.ToString() + "\"");
else
sb.Append(" j_city=\"\"");
//if (this.declared_value != null) sb.Append(" declared_value=\"" + this.declared_value.Value.ToString("0.###") + "\"");
// if (string.IsNullOrEmpty(this.declared_value_currency) == false) sb.Append(" declared_value_currency=\"" + this.declared_value_currency + "\"");
// if (string.IsNullOrEmpty(this.custid) == false) sb.Append(" custid=\"" + this.custid + "\"");
if (string.IsNullOrEmpty(this.j_country) == false) sb.Append(" j_country=\"" + this.j_country + "\"");
// if (string.IsNullOrEmpty(this.j_county) == false) sb.Append(" j_county=\"" + this.j_county + "\"");
if (string.IsNullOrEmpty(this.j_post_code) == false) sb.Append(" j_post_code=\"" + this.j_post_code + "\"");
if (string.IsNullOrEmpty(this.d_country) == false) sb.Append(" d_country=\"" + this.d_country + "\"");
if (string.IsNullOrEmpty(this.d_province) == false) sb.Append(" d_province=\"" + this.d_province + "\"");
if (string.IsNullOrEmpty(this.d_city) == false)
sb.Append(" d_city=\"" + this.d_city.ToString() + "\"");
else sb.Append(" d_city=\"\"");
// if (string.IsNullOrEmpty(this.d_county) == false)
// sb.Append(" d_county=\"" + this.d_county.ToString() + "\"");
// else
// sb.Append(" d_county=\"\"");
// if (string.IsNullOrEmpty(this.d_deliverycode) == false) sb.Append(" d_deliverycode=\"" + this.d_deliverycode + "\"");
if (string.IsNullOrEmpty(this.d_post_code) == false) sb.Append(" d_post_code=\"" + this.d_post_code + "\"");
if (this.cargo_total_weight != null) sb.Append(" cargo_total_weight=\"" + this.cargo_total_weight.Value.ToString("0.###") + "\"");
//if (string.IsNullOrEmpty(this.mailno) == false) sb.Append(" mailno=\"" + this.mailno + "\"");
//if (string.IsNullOrEmpty(this.return_tracking) == false) sb.Append(" return_tracking=\"" + this.return_tracking + "\"");
//if (string.IsNullOrEmpty(this.remark) == false) sb.Append(" remark=\"" + this.remark + "\"");
//if (string.IsNullOrEmpty(this.need_return_tracking_no) == false) sb.Append(" need_return_tracking_no=\"" + this.need_return_tracking_no + "\"");
//if (this.is_docall != null) sb.Append(" is_docall=\"" + this.is_docall + "\"");
//if (this.is_gen_bill_no != null) sb.Append(" is_gen_bill_no=\"" + this.is_gen_bill_no + "\"");
//if (this.is_gen_eletric_pic != null) sb.Append(" is_gen_eletric_pic=\"" + this.is_gen_eletric_pic + "\"");
//if (this.waybill_size != null) sb.Append(" waybill_size=\"" + this.waybill_size + "\"");
//if (this.cargo_length != null) sb.Append(" cargo_length=\"" + this.cargo_length.Value.ToString("0.###") + "\"");
//if (this.cargo_width != null) sb.Append(" cargo_width=\"" + this.cargo_width.Value.ToString("0.###") + "\"");
//if (this.cargo_height != null) sb.Append(" cargo_height=\"" + this.cargo_height.Value.ToString("0.###") + "\"");
sb.Append(">");
foreach (var item in this.ListGoods)
{
sb.Append("<Cargo");
sb.Append(" name=\"" + item.name + "\"");
sb.Append(" ename=\"" + item.ename + "\"");
if (item.count != null) sb.Append(" count=\"" + item.count + "\"");
sb.Append(" unit=\"PCE\"");
if (item.weight != null) sb.Append(" weight=\"" + item.weight.Value.ToString("0.###") + "\"");
if (item.amount != null) sb.Append(" amount=\"" + item.amount.Value.ToString("0.##########") + "\"");
// if (string.IsNullOrEmpty(item.currency) == false) sb.Append(" currency=\"" + item.currency + "\"");
// sb.Append(" source_area=\"china\"");
sb.Append(">");
sb.Append("</Cargo>");
}
//foreach (var item in this.ListService)
//{
// sb.Append("<AddedService");
// sb.Append(" name=\"" + item.name + "\"");
// if (string.IsNullOrEmpty(item.value) == false) sb.Append(" value=\"" + item.value + "\"");
// if (string.IsNullOrEmpty(item.value1) == false) sb.Append(" value1=\"" + item.value1 + "\"");
// if (string.IsNullOrEmpty(item.value2) == false) sb.Append(" value2=\"" + item.value2 + "\"");
// if (string.IsNullOrEmpty(item.value3) == false) sb.Append(" value3=\"" + item.value3 + "\"");
// if (string.IsNullOrEmpty(item.value4) == false) sb.Append(" value4=\"" + item.value4 + "\"");
// sb.Append(">");
// sb.Append("</AddedService>");
//}
sb.Append("</Order>");
return sb.ToString();
}
#endregion
}
#endregion
#region 物品信息
public class sf_Goods
{
/// <summary>
/// 货物名称
/// </summary>
public string name { get; set; }
//货物英文名
public string ename { get; set; }
/// <summary>
/// 货物数量
/// </summary>
public int? count { get; set; }
/// <summary>
/// 货物单位
/// </summary>
public string unit { get; set; }
/// <summary>
/// 货物单位重量
/// </summary>
public decimal? weight { get; set; }
/// <summary>
/// 货物单价
/// </summary>
public decimal? amount { get; set; }
/// <summary>
/// 货物单价的币别
/// </summary>
public string currency { get; set; }
/// <summary>
/// 原产地国别
/// </summary>
public string source_area { get; set; }
}
public class sf_Goods2
{
/// <summary>
/// 货物中文品名,用于海关申报
/// </summary>
public string name { get; set; }
/// <summary>
/// 货物英文申报品名,用于海关申报
/// </summary>
public string ename { get; set; }
/// <summary>
/// 海关编码,用于海关申报(顺丰国际电商专递欧洲流向必填、其它选填)
/// </summary>
public string hscode { get; set; }
/// <summary>
/// 货物数量
/// </summary>
public Int32? count { get; set; }
/// <summary>
/// 货物单位默认为PCE
/// </summary>
public string unit { get; set; }
/// <summary>
/// 货物单位重量
/// </summary>
public decimal? weight { get; set; }
/// <summary>
/// 货物单价默认为美元
/// </summary>
public decimal? amount { get; set; }
/// <summary>
/// 配货备注
/// </summary>
public string diNote { get; set; }
/// <summary>
///配货名称
/// </summary>
public decimal? diPickName { get; set; }
}
#endregion
#region 服务名
public class sf_Service
{
/// <summary>
/// 增值服务名
/// </summary>
public string name { get; set; }
/// <summary>
/// 增值服务值1
/// </summary>
public string value { get; set; }
/// <summary>
/// 增值服务值2
/// </summary>
public string value1 { get; set; }
/// <summary>
/// 增值服务名3
/// </summary>
public string value2 { get; set; }
/// <summary>
/// 增值服务名4
/// </summary>
public string value3 { get; set; }
/// <summary>
/// 增值服务名5
/// </summary>
public string value4 { get; set; }
}
#endregion
#region 运单号分配
public class sf_OrderResult
{
/// <summary>
/// 订单号
/// </summary>
public string orderid { get; set; }
/// <summary>
/// 运单号,可多个单号,如子母件,以逗号分隔
/// </summary>
public string mailno { get; set; }
/// <summary>
/// 签单返还运单号
/// </summary>
public string return_tracking_no { get; set; }
/// <summary>
/// 代理运单号,可多个单号,如子母件,以逗号分隔
/// </summary>
public string agent_mailno { get; set; }
/// <summary>
/// 原寄地代码
/// </summary>
public string origincode { get; set; }
/// <summary>
/// 目的地代码
/// </summary>
public string destcode { get; set; }
/// <summary>
/// 筛单结果1-人工确认2-可收派 3-不可以收派
/// </summary>
public string filter_result { get; set; }
/// <summary>
/// 1-收方超范围2-派方超范围3-其他原因
/// </summary>
public string remark { get; set; }
public string skybill_code { get; set; }
}
#endregion
}