コード例 #1
0
        /// <summary>
        /// 订单状态通知报文解析处理
        /// <para>
        /// 详细说明请查看丰桥API说明<seealso cref="https://qiao.sf-express.com/pages/developDoc/index.html?level2=330428"/>
        /// </para>
        /// </summary>
        /// <param name="xmlString">报文字符</param>
        /// <param name="actionProcess">报文解析后执行的处理</param>
        /// <returns>返回响应报文</returns>
        public static string PushOrderStateProcess(string xmlString, Func <ExpressOrderState, bool> actionProcess)
        {
            if (xmlString.IsNullOrWhiteSpace())
            {
                throw new ArgumentNullException(nameof(xmlString));
            }
            ExpressOrderState expressOrderState = ExpressOrderStateParser.Parse(xmlString);

            if (expressOrderState == null)
            {
                return("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><Response><success>false</success><msg>解析报文出错!</msg></Response>");
            }

            var reult = actionProcess.Invoke(expressOrderState);

            if (reult)
            {
                return("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><Response><success>true</success></Response>");
            }
            else
            {
                return("<?xml version=\"1.0\" encoding=\"UTF-8\" ?><Response><success>false</success><msg>订单状态接收异常</msg></Response>");
            }
        }
コード例 #2
0
        public static ExpressOrderState Parse(string xmlString)
        {
            var xmlDocument = xmlString?.ToXmlDocument();

            if (xmlDocument == null)
            {
                return(null);
            }

            var requestNodeList = xmlDocument.GetElementsByTagName("Request");

            if (requestNodeList?.Count > 0)
            {
                var nodes = requestNodeList[0].ChildNodes;

                if (nodes != null && nodes.Count > 0)
                {
                    var dict = new Dictionary <string, string>();
                    foreach (XmlNode item in nodes)
                    {
                        if (!string.IsNullOrWhiteSpace(item.InnerText))
                        {
                            dict.Add(item.Name, item.InnerText);
                        }
                    }
                    if (dict.ContainsKey("carrierCode") && dict.ContainsKey("waybillNo") && dict.ContainsKey("orderStateCode") && dict.ContainsKey("orderStateDesc"))
                    {
                        var expressOrderState = new ExpressOrderState()
                        {
                            MailNo         = dict["waybillNo"],
                            OrderStateCode = dict["orderStateCode"],
                            OrderStateDesc = dict["orderStateDesc"],
                            CarrierCode    = dict["carrierCode"]
                        };

                        if (dict.ContainsKey("orderNo"))
                        {
                            expressOrderState.OrderId = dict["orderNo"];
                        }
                        if (dict.ContainsKey("empPhone"))
                        {
                            expressOrderState.EmpPhone = dict["empPhone"];
                        }
                        if (dict.ContainsKey("empCode"))
                        {
                            expressOrderState.EmpCode = dict["empCode"];
                        }
                        if (dict.ContainsKey("netCode"))
                        {
                            expressOrderState.NetCode = dict["netCode"];
                        }
                        if (dict.ContainsKey("lastTime"))
                        {
                            expressOrderState.LastTime = DateTime.ParseExact(dict["lastTime"], "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
                        }
                        if (dict.ContainsKey("bookTime"))
                        {
                            expressOrderState.BookTime = DateTime.ParseExact(dict["bookTime"], "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
                        }

                        return(expressOrderState);
                    }
                }
            }

            return(null);
        }