前言:是今年还是去年顺丰才把接口的事务转给丰桥公司了吧,这更新换代的导致我们以前的接口下的单老是被快递员说无效。顺便说一下,丰桥只提供与费用无关的接口,常用的下单,取消单,物流查询等。存在一些坑,在这里记录下来吧,或许以后自己或别人用的着。
一、顾客编码,校验码, 月结卡号
在丰桥官网 注册后,拿到你的 顾客编码,校验码, 月结卡号
二、接口使用
丰桥的几个顺丰接口支持WEBSERVICE及HTTP/POST协议,我这里使用的HTTP/POST方法:
1.先把 每个接口必用的2个方法写出来,一个是HTTP/POST的 RequestData请求方法和参数MD5加密Md5Inc方法
//统一的接口请求链接
private string reqURL = "http://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService";
private XmlDocument RequestData(string reqURL, string postData)
{
try
{
WebRequest request = (HttpWebRequest)WebRequest.Create(reqURL);
request.Method = "POST";
request.Timeout = 2000;//超时时间2s
request.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
request.ContentLength = Encoding.UTF8.GetByteCount(postData);
byte[] postByte = Encoding.UTF8.GetBytes(postData);
Stream reqStream = request.GetRequestStream();
reqStream.Write(postByte, 0, postByte.Length);
reqStream.Close();
//读取
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
XmlDocument doc = new XmlDocument();
doc.LoadXml(retString);
return doc;
}
catch (Exception ex)
{
WriteLog(ex, "[顺丰接口请求异常]:" + postData);
throw ex;
}
}
private string Md5Inc(string buffer, string checkword)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] MD5 = md5.ComputeHash(Encoding.UTF8.GetBytes(buffer.ToString() + checkword));//MD5(注意UTF8编码)
string result = Convert.ToBase64String(MD5);//Base64
return result;
}
2.下单接口
private XmlDocument AddOrder(dynamic param, out bool isSuccess, out string requestXml, string mailno = "")
{
string clientCode = "顾客编码";
string checkword = "校验码";
string orderId = "MY_" + DateTime.Now.ToString("yyyyMMddhhmmssff");
StringBuilder buffer = new StringBuilder();
buffer.Append("<Request service='OrderService' lang='zh-CN' >");
buffer.Append("<Head>");
buffer.Append(clientCode);
buffer.Append("</Head>");
buffer.Append("<Body>");
buffer.Append("<Order ");