本人 新手一个。
http://open.yto.net.cn/interfaceDocument/menu250/submenu256
我在做 圆通快递 物流信息对接,订阅物流信息。圆通实时推送物流信息,回调地址处,Controller因该怎么实现?
需要考虑 推送数据的形式吗?例如是以form还是以body的形式
以下是我自己实现的代码,不知道对不对?
[HttpPost]
public String Yuantong_Push()
{
byte[] byts = new byte[Request.InputStream.Length];
Request.InputStream.Read(byts, 0, byts.Length);
string param = System.Text.Encoding.Default.GetString(byts);
try
{
Dictionary<string, string> dic = new Dictionary<string, string>();
string[] spl = param.Split('&');
foreach (string s in spl)
{
int splIdx = s.IndexOf('=');
string key = s.Substring(0, splIdx);
string value = s.Substring(splIdx + 1);
dic.Add(key.Trim(), value.Trim());
}
string contentJson = JsonConvert.SerializeObject(dic);
return proxy.insertYuantongPush(contentJson.UrlDecode());
}
catch (Exception ex)
{
return "<Response><logisticProviderID>YTO</logisticProviderID><txLogisticID>" + param + "</txLogisticID><success>false</success><reason>" + ex + "</reason></Response>";
}
}
[HttpPost]
public String Yuantong_Push([FromForm]string logistics_interface,[FromForm]string data_digest,[FromForm]string clientId,[FromForm]string type){
if (md5(urlencode(logistics_interface)) != data_digest){
//请求签名不对,请求被篡改了。
}
var orderXmlContent= logistics_interface; //文本内容,即文档中的【请求参数列表】xml结构数据。
}
感谢解答