Exemplo n.º 1
0
        /// <summary>
        /// 物流信息转为商城通用格式
        /// </summary>
        /// <param name="ret"></param>
        /// <returns></returns>

        public ExpressData ConvertToExpressData(Config_Fuqing.ResultObj ret)
        {
            ExpressData Result = new ExpressData();

            ///物流信息获取成功
            if (ret != null && ret.status == 0)
            {
                List <ExpressDataItem> list = new List <ExpressDataItem>();
                Result.Success = true;
                Result.Message = "物流获取成功";
                Result.ApiName = "FuQing";
                Result.Status  = ret.result.deliverystatus;
                Result.date    = DateTime.Now;
                Result.number  = ret.result.number;
                Result.type    = ret.result.type;
                foreach (Config_Fuqing.result_Item Item in ret.result.list)
                {
                    list.Add(new ExpressDataItem()
                    {
                        Content = Item.status,
                        Time    = DateTime.Parse(Item.time),
                    });
                }
                var Temp = list.OrderByDescending(P => P.Time).ToList();
                Result.ExpressDataItems = Temp;
            }
            else
            {
                Result.Success = false;
                Result.Message = "物流获取失败";
            }
            return(Result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 物流信息转为商城通用格式
        /// </summary>
        /// <param name="ret"></param>
        /// <returns></returns>

        public ExpressData ConvertToExpressData(Config.ResultObj ret)
        {
            ExpressData Result = new ExpressData();

            ///物流信息获取成功
            if (ret != null && ret.showapi_res_code == 0 && ret.showapi_res_body.flag && ret.showapi_res_body.ret_code == 0)
            {
                List <ExpressDataItem> list = new List <ExpressDataItem>();
                Result.Success = true;
                Result.Message = "物流获取成功";
                Result.ApiName = "AliYiYuan";
                Result.date    = DateTime.Now;
                Result.number  = ret.showapi_res_body.mailNo;
                Result.type    = ret.showapi_res_body.expSpellName;
                if (ret.showapi_res_body.status == 2)
                {
                    Result.Status = 1;
                }
                else if (ret.showapi_res_body.status == 3)
                {
                    Result.Status = 2;
                }
                else if (ret.showapi_res_body.status == 4)
                {
                    Result.Status = 3;
                }
                else if (ret.showapi_res_body.status == 5)
                {
                    Result.Status = 4;
                }
                else
                {
                    Result.Status = 0;
                }
                foreach (Config.showapi_res_Item Item in ret.showapi_res_body.data)
                {
                    list.Add(new ExpressDataItem()
                    {
                        Content = Item.context,
                        Time    = DateTime.Parse(Item.time),
                    });
                }
                var Temp = list.OrderByDescending(P => P.Time).ToList();
                Result.ExpressDataItems = Temp;
            }
            else
            {
                Result.Success = false;
                Result.Message = "物流获取失败";
            }
            return(Result);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 快递100物流查看
        /// </summary>
        /// <param name="kuaidi100Code"></param>
        /// <param name="shipOrderNumber"></param>
        /// <returns></returns>
        private ExpressData GetExpressDataByKey(string kuaidi100Code, string shipOrderNumber)
        {
            var settting = ServiceProvider.Instance <ISiteSettingService> .Create.GetSiteSettings();

            var key         = settting.Kuaidi100Key;
            var expressData = new ExpressData();//创建对象

            expressData.Success = false;
            expressData.Message = "暂无物流信息";
            if (!string.IsNullOrEmpty(key))
            {
                var model = GetKuaidi100ExpressData(kuaidi100Code, shipOrderNumber);
                if (model != null)
                {
                    var content = model.DataContent;
                    var obj     = new
                    {
                        message    = string.Empty,
                        lastResult = new
                        {
                            data = new[] {
                                new{
                                    context = string.Empty,
                                    time    = string.Empty,
                                    ftime   = string.Empty
                                }
                            }
                        }
                    };

                    var m = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(content, obj);
                    expressData.Success = true;
                    expressData.Message = m.message;
                    var dataItems = new List <ExpressDataItem>();
                    foreach (var t in m.lastResult.data)
                    {
                        dataItems.Add(new ExpressDataItem()
                        {
                            Time    = DateTime.ParseExact(t.ftime, "yyyy-MM-dd HH:mm:ss", null),
                            Content = t.context.ToString()
                        });
                    }
                    expressData.ExpressDataItems = dataItems;
                }
            }
            return(expressData);
        }
Exemplo n.º 4
0
        public JsonResult SearchTop(string expressCompanyName, string shipOrderNumber)
        {
            ExpressData expressData = ServiceHelper.Create <IExpressService>().GetExpressData(expressCompanyName, shipOrderNumber);

            if (expressData.Success)
            {
                expressData.ExpressDataItems =
                    from item in expressData.ExpressDataItems
                    orderby item.Time descending
                    select item;
            }
            var variable = new { success = expressData.Success, msg = expressData.Message, data =
                                     from item in expressData.ExpressDataItems.Take <ExpressDataItem>(1)
                                     select new { time = item.Time.ToString("yyyy-MM-dd HH:mm:ss"), content = item.Content } };

            return(base.Json(variable));
        }
Exemplo n.º 5
0
        public ExpressData GetExpressData(string expressCompanyName, string shipOrderNumber)
        {
            var settting = ServiceProvider.Instance <ISiteSettingService> .Create.GetSiteSettings();

            var expressData = new ExpressData();//创建对象

            //使用快递100查询快递数据
            if (settting.KuaidiType.Equals(0))
            {
                string kuaidi100Code = GetExpress(expressCompanyName).Kuaidi100Code;
                expressData = GetExpressDataByKey(kuaidi100Code, shipOrderNumber);
            }
            else//快递鸟
            {
                string shipperCode = GetExpress(expressCompanyName).KuaidiNiaoCode;
                expressData = GetExpressDataByKuai(shipperCode, shipOrderNumber);
            }
            return(expressData);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 根据单号取物流信息
        /// </summary>
        /// <param name="expressNO"></param>
        /// <returns></returns>
        public static ExpressData Query_WuliuMess(string expressNO)
        {
            ExpressData express_mess = null;
            SqlDBHelper HelperOther  = new SqlDBHelper();
            string      sql          = "SELECT * FROM [dbo].[TB_ExpressInfo] where expressNO=@expressNO";

            SqlParameter[] para = new SqlParameter[] {
                new SqlParameter("@expressNO", SqlDbType.VarChar, 200),
            };
            para[0].Value = expressNO;
            DataTable dt = HelperOther.Query(sql, para).Tables[0];

            foreach (DataRow ro in dt.Rows)
            {
                //string ExpressContent = ro["JSONcontent"].ToString();
                List <ExpressDataItem> content = JsonHelper.DeserializeJsonToList <ExpressDataItem>(ro["JSONcontent"].ToString());
                express_mess = new ExpressData {
                    Success = ro["deliveryStatus"].ToString() == "0" ? false : true, number = ro["expressNO"].ToString(), type = ro["expressCom"].ToString(), Status = int.Parse(ro["deliveryStatus"].ToString()), date = Convert.ToDateTime(ro["UpdateTime"]), ExpressDataItems = content, Message = "物流获取成功", ApiName = ro["ApiName"].ToString()
                };
            }

            return(express_mess);
        }
Exemplo n.º 7
0
        public ExpressData GetExpressData(string expressCompanyName, string shipOrderNumber)
        {
            var settting    = SiteSettingApplication.SiteSettings;
            var expressData = new ExpressData();//创建对象
            var expressInfo = GetExpress(expressCompanyName);

            if (expressInfo != null)
            {
                if (expressInfo.KuaidiNiaoCode.Contains("SF") && !string.IsNullOrWhiteSpace(settting.SFKuaidiCustomerCode))
                {
                    return(GetExpressDataSF(shipOrderNumber));
                }
                //使用快递100查询快递数据
                if (settting.KuaidiType.Equals(0))
                {
                    expressData = GetExpressDataByKey(expressInfo.Kuaidi100Code, shipOrderNumber);
                }
                else//快递鸟
                {
                    expressData = GetExpressDataByKuai(expressInfo.KuaidiNiaoCode, shipOrderNumber);
                }
            }
            return(expressData);
        }
Exemplo n.º 8
0
        public ActionResult blue_OrderDetails2(string id)
        {
            string hotelId      = id;
            string orderId      = HotelCloud.Common.HCRequest.GetString("orderid");
            string key          = HotelCloud.Common.HCRequest.GetString("key");      //"酒店微信id@用户微信id"
            string weixinid     = HotelCloud.Common.HCRequest.GetString("weixinID"); //酒店微信id
            string userweixinid = "";

            if (!key.Equals("") && key.Contains("@"))
            {
                weixinid     = key.Split('@')[0];//酒店微信id
                userweixinid = key.Split('@')[1];
            }

            ViewData["list_ordersLog"]       = new DataTable();
            ViewData["PayStatus"]            = 0;
            ViewData["addressType"]          = "酒店";
            ViewData["shoppingCarDataTable"] = new DataTable();
            ViewData["amount"]             = 0;
            ViewData["refundfee"]          = 0;
            ViewData["ExpressCompany"]     = "";
            ViewData["ExpressNo"]          = "";
            ViewData["hotelId"]            = "";
            ViewData["ExpressFee"]         = 0;
            ViewData["remark"]             = "";
            ViewData["OrderStatus"]        = 0;
            ViewData["CreateTime"]         = new DateTime();
            ViewData["CanPurchase"]        = 0;
            ViewData["PurchasePoints"]     = 0;
            ViewData["PayMethod"]          = "";
            ViewData["isAllowDelayed"]     = false;
            ViewData["isShowAllowDelayed"] = true;
            ViewData["DelayedTake"]        = 0;
            ViewData["CouponId"]           = "";
            ViewData["CouponMoney"]        = 0;
            ViewData["express"]            = new ExpressData();
            ViewData["weixinid"]           = weixinid;
            ViewData["userweixinid"]       = userweixinid;
            ViewData["orderId"]            = orderId;
            ViewData["hotelId"]            = id;
            try
            {
                var    orderData = orderService.GetDataByOrderId(orderId).Rows[0];
                double refundfee = 0;
                try
                {
                    refundfee = double.Parse(orderData["Refundfee"].ToString()) + double.Parse(orderData["CardRefundfee"].ToString());
                }
                catch (Exception e) { }
                ViewData["refundfee"] = refundfee;

                //计算订单总金额
                double sum = 0;
                var    shoppingCarDataTable = SupermarketOrderDetailService.GetDataByOrderId(orderId);
                foreach (DataRow data in shoppingCarDataTable.Rows)
                {
                    sum += double.Parse(data["Price"].ToString()) * double.Parse(data["Total"].ToString());
                }

                //获取收货地址
                ViewData["hotelName"]  = DishOrderLogic.GetHotelName(orderData["HotelId"].ToString());
                ViewData["ExpressFee"] = 0;
                TimeSpan ts = new TimeSpan();    //用于计算是否可延迟收货
                if (!string.IsNullOrWhiteSpace(orderData["AddressType"].ToString()))
                {
                    if (orderData["AddressType"].ToString() == "1")
                    {
                        ViewData["addressType"] = "酒店";
                        ts = DateTime.Now - DateTime.Parse(orderData["CreateTime"].ToString()).AddDays(4);
                    }
                    else
                    {
                        ViewData["addressType"] = "快递";
                        ts   = DateTime.Now - DateTime.Parse(orderData["CreateTime"].ToString()).AddDays(12);
                        sum += double.Parse(orderData["ExpressFee"].ToString());
                    }
                    ViewData["addressName"] = orderData["Address"].ToString();
                }
                else
                {
                    ViewData["Address"]     = new OrderAddress();
                    ViewData["addressType"] = "酒店";
                    ViewData["addressName"] = ViewData["hotelName"];
                }
                ViewData["Linkman"]   = orderData["Linkman"].ToString();
                ViewData["LinkPhone"] = orderData["LinkPhone"].ToString();

                ViewData["isAllowDelayed"]     = false;
                ViewData["isShowAllowDelayed"] = true;
                ViewData["DelayedTake"]        = orderData["DelayedTake"];
                if (orderData["DelayedTake"].ToString() == "0")
                {
                    ViewData["isAllowDelayed"] = ts.Days >= 0 ? true : false;
                }
                else
                {
                    ViewData["isShowAllowDelayed"] = false;
                }


                //获取快递信息
                Express express = GetExpressData(orderData["ExpressNo"].ToString());
                try
                {
                    ViewData["express"] = express.data[0];
                }
                catch (Exception e)
                {
                    ViewData["express"] = new ExpressData();
                }

                try
                {
                    var hotelData = GetHotelBySupermarket(int.Parse(id)).Rows[0];
                    ViewData["hotelPhone"] = hotelData["tel"];
                }
                catch
                {
                    ViewData["hotelPhone"] = "";
                }

                //获取积分
                ViewData["orderScore"]  = 0;
                ViewData["equivalence"] = 1;
                ViewData["GradePlus"]   = 1;
                MemberInfo Info   = MemberHelper.GetMemberInfo(weixinid);
                string     cardno = MemberHelper.GetCardNo(userweixinid, weixinid);
                if (!string.IsNullOrEmpty(cardno))
                {
                    MemberCard             MyCard       = MemberHelper.GetMemberCard(cardno, weixinid);
                    MemberCardIntegralRule IntegralRule = MemberHelper.IntegralRule(Info, MyCard);
                    var score = sum;
                    if (IntegralRule.equivalence > 0)
                    {
                        score = score * IntegralRule.equivalence;
                        ViewData["equivalence"] = IntegralRule.equivalence;
                    }
                    if ((double)IntegralRule.GradePlus > 0)
                    {
                        score = score * (double)IntegralRule.GradePlus;
                        ViewData["GradePlus"] = IntegralRule.GradePlus;
                    }

                    ViewData["orderScore"] = Math.Floor(Math.Round(score, 2));;
                }
                var dbLog = orderService.GetOrderLogDataByOrderId(orderId);
                ViewData["list_ordersLog"] = dbLog;
                ViewData["PayStatus"]      = orderData["PayStatus"];

                ViewData["shoppingCarDataTable"] = shoppingCarDataTable;
                ViewData["amount"]         = orderData["Money"];
                ViewData["ExpressCompany"] = orderData["ExpressCompany"];
                ViewData["ExpressNo"]      = orderData["ExpressNo"];
                ViewData["hotelId"]        = orderData["HotelId"].ToString();
                ViewData["ExpressFee"]     = orderData["ExpressFee"];
                ViewData["remark"]         = orderData["Remark"].ToString();
                ViewData["OrderStatus"]    = orderData["OrderStatus"].ToString();
                ViewData["CreateTime"]     = orderData["CreateTime"];
                ViewData["CanPurchase"]    = orderData["CanPurchase"];
                ViewData["PurchasePoints"] = orderData["PurchasePoints"];
                ViewData["PayMethod"]      = orderData["PayMethod"];
                ViewData["CouponId"]       = orderData["CouponId"];
                ViewData["CouponMoney"]    = orderData["CouponMoney"];
                ViewData["weixinid"]       = weixinid;
                ViewData["userweixinid"]   = userweixinid;
                ViewData["orderId"]        = orderId;
            }
            catch (Exception e) { }
            return(View());
        }
Exemplo n.º 9
0
        public ExpressData GetExpressData(string expressCompanyName, string shipOrderNumber)
        {
            string         kuaidi100Code  = GetExpress(expressCompanyName).Kuaidi100Code;
            string         str            = string.Format("http://www.kuaidi100.com/query?type={0}&postid={1}", kuaidi100Code, shipOrderNumber);
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(str);

            httpWebRequest.Timeout = 8000;
            ExpressData expressDatum = new ExpressData();

            try
            {
                HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse();
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    expressDatum.Message = "网络错误";
                }
                else
                {
                    Stream        responseStream = response.GetResponseStream();
                    StreamReader  streamReader   = new StreamReader(responseStream, Encoding.GetEncoding("UTF-8"));
                    StringBuilder stringBuilder  = new StringBuilder(streamReader.ReadToEnd());
                    stringBuilder.Replace("&amp;", "").Replace("&nbsp;", "").Replace("&", "");
                    JObject jObjects = JObject.Parse(stringBuilder.ToString());
                    string  str1     = "200";
                    if (jObjects["status"] == null || !(jObjects["status"].ToString() == str1))
                    {
                        expressDatum.Message = jObjects["message"].ToString();
                    }
                    else
                    {
                        JArray item = jObjects["data"] as JArray;
                        if (item == null)
                        {
                            throw new ApplicationException("查询源数据格式错误,没有找到data节点");
                        }
                        List <ExpressDataItem> expressDataItems = new List <ExpressDataItem>();
                        foreach (JToken jTokens in item)
                        {
                            if (jTokens["time"] == null)
                            {
                                throw new ApplicationException("查询源数据格式错误,没有找到time节点");
                            }
                            if (jTokens["context"] == null)
                            {
                                throw new ApplicationException("查询源数据格式错误,没有找到context节点");
                            }
                            ExpressDataItem expressDataItem = new ExpressDataItem()
                            {
                                Time    = DateTime.ParseExact(jTokens["time"].ToString(), "yyyy-MM-dd HH:mm:ss", null),
                                Content = jTokens["context"].ToString()
                            };
                            expressDataItems.Add(expressDataItem);
                        }
                        expressDatum.Success          = true;
                        expressDatum.ExpressDataItems = expressDataItems;
                    }
                }
            }
            catch (Exception exception)
            {
                Log.Error(string.Format("快递查询错误:{{kuaidi100Code:{0},shipOrderNumber:{1}}}", kuaidi100Code, shipOrderNumber), exception);
                expressDatum.Message = "未知错误";
            }
            return(expressDatum);
        }
Exemplo n.º 10
0
        /// <summary>
        /// 快递鸟物流查看
        /// </summary>
        /// <param name="shipperCode">物流公司编码</param>
        /// <param name="logisticsCode">物流号</param>
        /// <returns></returns>
        private ExpressData GetExpressDataByKuai(string shipperCode, string logisticsCode)
        {
            var settting = ServiceProvider.Instance <ISiteSettingService> .Create.GetSiteSettings();

            //签名
            SortedDictionary <string, string> data = new SortedDictionary <string, string>();

            data.Add("app_key", settting.KuaidiApp_key);
            string timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

            data.Add("logisticsCode", logisticsCode);
            data.Add("shipperCode", shipperCode);
            data.Add("timestamp", timestamp);

            string si   = string.Format("app_key{0}logisticsCode{1}shipperCode{2}timestamp{3}{4}", settting.KuaidiApp_key, logisticsCode, shipperCode, timestamp, settting.KuaidiAppSecret);
            string sign = FormsAuthentication.HashPasswordForStoringInConfigFile(si, "MD5");


            var            expressData = new ExpressData();                                                                                                                                                                                     //创建对象
            string         url         = string.Format("http://wuliu.kuaidiantong.cn/api/logistics?app_key={0}&timestamp={1}&shipperCode={2}&logisticsCode={3}&sign={4}", settting.KuaidiApp_key, timestamp, shipperCode, logisticsCode, sign); //快递查询地址
            HttpWebRequest request     = (HttpWebRequest)HttpWebRequest.Create(url);

            request.Timeout     = 8000;
            request.Method      = "GET";
            request.ContentType = "application/json;charset=UTF-8";
            request.UserAgent   = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36";
            CookieContainer cookie = new CookieContainer();

            request.CookieContainer = cookie;
            try
            {
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    Stream stream = response.GetResponseStream();
                    System.IO.StreamReader streamReader = new StreamReader(stream, System.Text.Encoding.GetEncoding("UTF-8"));
                    StringBuilder          content      = new StringBuilder(streamReader.ReadToEnd()); // 读取流字符串内容
                    content.Replace("&amp;", "").Replace("&nbsp;", "").Replace("&", "");               //去除不需要的字符

                    var test = new
                    {
                        shipperCode   = "",
                        logisticsCode = "",
                        success       = true,
                        state         = "",
                        traces        = new[]
                        {
                            new{
                                acceptTime    = "",
                                acceptStation = "",
                                remark        = ""
                            }
                        }
                    };
                    var m = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(content.ToString(), test);

                    var dataItems = new List <ExpressDataItem>();
                    if (m.success == true)
                    {
                        expressData.Success = true;
                        expressData.Message = "成功";
                        foreach (var t in m.traces)
                        {
                            dataItems.Add(new ExpressDataItem()
                            {
                                Time    = DateTime.Parse(t.acceptTime),
                                Content = t.acceptStation
                            });
                        }
                    }
                    else
                    {
                        expressData.Success = false;
                        expressData.Message = "暂无物流信息";
                    }
                    expressData.ExpressDataItems = dataItems;
                    return(expressData);
                }
                else
                {
                    //  expressData.Message = "网络错误";
                    expressData.Message = "网络错误";
                }
            }
            catch (Exception ex)
            {
                Core.Log.Error(string.Format("快递查询错误:{{kuaidi100Code:{0},shipOrderNumber:{1}}}", shipperCode, logisticsCode), ex);
                //  expressData.Message = "未知错误";
                expressData.Message = "暂无物流信息";
            }
            return(expressData);
        }
Exemplo n.º 11
0
        /// <summary>
        /// 百度物流查看
        /// </summary>
        /// <param name="kuaidi100Code"></param>
        /// <param name="shipOrderNumber"></param>
        /// <returns></returns>
        private ExpressData GetExpressDataFree(string kuaidi100Code, string shipOrderNumber)
        {
            var            expressData = new ExpressData();                                                                                                                                    //创建对象
            string         url         = string.Format("https://sp0.baidu.com/9_Q4sjW91Qh3otqbppnN2DJv/pae/channel/data/asyncqury?appid=4001&com={0}&nu={1}", kuaidi100Code, shipOrderNumber); //快递查询地址
            HttpWebRequest request     = (HttpWebRequest)HttpWebRequest.Create(url);

            request.Timeout     = 8000;
            request.Host        = "sp0.baidu.com";
            request.Method      = "GET";
            request.ContentType = "application/json;charset=UTF-8";
            request.UserAgent   = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36";
            CookieContainer cookie = new CookieContainer();
            Cookie          ck     = new Cookie("BAIDUID", "65C7509B002B15BE3E4EEE6B5366AFEA:FG=1", "/", ".baidu.com");

            ck.Expires = DateTime.Now.AddYears(1);
            cookie.Add(ck);
            request.CookieContainer = cookie;
            try
            {
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    Stream stream = response.GetResponseStream();
                    System.IO.StreamReader streamReader = new StreamReader(stream, System.Text.Encoding.GetEncoding("UTF-8"));
                    StringBuilder          content      = new StringBuilder(streamReader.ReadToEnd()); // 读取流字符串内容
                    content.Replace("&amp;", "").Replace("&nbsp;", "").Replace("&", "");               //去除不需要的字符
                    // var jsonData = JObject.Parse(content.ToString());
                    var test = new
                    {
                        msg    = "",
                        status = "",
                        data   = new
                        {
                            info = new
                            {
                                status  = "",
                                state   = "",
                                context = new[] {
                                    new{ time = "", desc = "" }
                                }
                            }
                        }
                    };
                    var m = Newtonsoft.Json.JsonConvert.DeserializeAnonymousType(content.ToString(), test);
                    expressData.Success = true;
                    expressData.Message = m.msg;
                    var dataItems = new List <ExpressDataItem>();
                    foreach (var t in m.data.info.context)
                    {
                        dataItems.Add(new ExpressDataItem()
                        {
                            Time = GetTime(t.time),
                            // Time = DateTime.ParseExact(datetime, "yyyy-MM-dd HH:mm:ss", null),
                            Content = t.desc.ToString()
                        });
                    }
                    expressData.ExpressDataItems = dataItems;
                    return(expressData);
                }
                else
                {
                    expressData.Message = "网络错误";
                }
            }
            catch (Exception ex)
            {
                Core.Log.Error(string.Format("快递查询错误:{{kuaidi100Code:{0},shipOrderNumber:{1}}}", kuaidi100Code, shipOrderNumber), ex);
                expressData.Message = "未知错误";
            }
            return(expressData);
        }
Exemplo n.º 12
0
        public ExpressData GetExpressDataSF(string logisticsCode)
        {
            //https://qiao.sf-express.com/pages/developDoc/index.html?level2=296618&level3=902583&level4=893568
            var settting = SiteSettingApplication.SiteSettings;
            //查询请求XML报文
            string xml = string.Format(
                "<Request service='RouteService' lang='zh-CN'>" +
                "<Head>{0}</Head>" +
                "<Body>" +
                "<RouteRequest tracking_type = '1' method_type = '1' tracking_number = '{1}'/>" +
                "</Body>" +
                "</Request>", settting.SFKuaidiCustomerCode, logisticsCode);

            string Checkword  = settting.SFKuaidiCheckWord;                                 //开发者账号对应的校验码; // "j8DzkIFgmlomPt0aLuwU";
            string verifyCode = MD5ToBase64String(xml + Checkword);                         //生成接口校验码
            string requestUrl = "http://bsp-oisp.sf-express.com/bsp-oisp/sfexpressService"; //测试、生产环境同一个地址

            string      result    = DoPostSF(requestUrl, xml, verifyCode);                  //返回结果XML
            bool        isSuccess = false;
            ExpressData data      = new ExpressData();
            var         itemList  = new List <ExpressDataItem>();
            //解析返回结果
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(result);
            var headNode = xmlDoc.SelectSingleNode("/Response/Head");

            if (headNode != null)
            {
                if (headNode.InnerText.ToLower() == "ok")
                {
                    isSuccess = true;
                }
                else
                {//错误记录日志
                    var errNode = xmlDoc.SelectSingleNode("/Response/ERROR");
                    if (errNode != null)
                    {
                        data.Message = errNode.InnerText;
                    }
                }
            }
            if (isSuccess)
            {
                var      routeNodes = xmlDoc.SelectNodes("/Response/Body/RouteResponse/Route");
                DateTime dt         = new DateTime();
                string   address    = string.Empty;
                foreach (XmlNode route in routeNodes)
                {
                    ExpressDataItem item = new ExpressDataItem();
                    if (DateTime.TryParse(route.Attributes["accept_time"].Value, out dt))
                    {
                        item.Time = dt;
                    }
                    if (route.Attributes["accept_address"] != null)
                    {//accept_address 可能没有
                        address = route.Attributes["accept_address"].Value;
                    }
                    item.Content = address + " " + route.Attributes["remark"].Value;
                    itemList.Add(item);
                }
            }
            data.ExpressDataItems = itemList;
            data.Success          = isSuccess;
            return(data);

            /*
             * <Response service="RouteService">
             *  <Head>OK</Head>
             *  <Body>
             *  <RouteResponse mailno="444003077898">
             *  <Route accept_time="2015-01-04 10:11:26" accept_address="深圳" remark="已收件" opcode="50"/>
             *  <Route accept_time="2015-01-05 17:41:50" remark="此件签单返还的单号为 123638813180" opcode="922"/>
             *  <RouteResponse mailno="444003077899">
             *  <Route accept_time="2015-01-04 10:11:26" accept_address="深圳" remark="已收件" opcode="50"/>
             *  <Route accept_time="2015-01-05 17:41:50" remark="此件签单返还的单号为 123638813181" opcode="922"/>
             *  </RouteResponse>
             *  </Body>
             * </Response>
             * //失败
             * <Response service=”RouteService”>
             *  <Head>ERR</Head>
             *  <ERROR code="4001">系统发生数据错误或运行时异常</ERROR>
             * </Response>
             */
        }
Exemplo n.º 13
0
        /// <summary>
        /// 外部调用api接口信息
        /// </summary>
        /// <returns></returns>
        public ActionResult Query()
        {
            LogisticPara LogisticPara = null;
            ExpressData  ExpressData  = new ExpressData();

            ExpressData.Success = false;
            ExpressData.Message = "获取失败";
            //获取Post参数
            Stream       postData    = Request.InputStream;
            StreamReader sRead       = new StreamReader(postData);
            string       postContent = sRead.ReadToEnd();

            sRead.Close();

            if (IsDebug)
            {
                Normal.WritLog("接受到的参数_postContent:" + postContent);
            }
            if (string.IsNullOrWhiteSpace(postContent))
            {
                ExpressData.Success = false; ExpressData.Message = "缺少参数";
                return(View());
            }
            try
            {
                LogisticPara = JsonConvert.DeserializeObject <LogisticPara>(postContent);
            }
            catch (Exception ex)
            {
                ExpressData.Success = false; ExpressData.Message = "缺少参数";
                return(View());
            }
            if (LogisticPara == null)
            {
                ExpressData.Success = false;
                ExpressData.Message = "缺少参数";
                return(View());
            }
            //验证物流单号
            if (string.IsNullOrWhiteSpace(LogisticPara.logisticsCode))
            {
                ExpressData.Success = false; ExpressData.Message = "缺少物流单号参数"; return(View());
            }
            if (string.IsNullOrWhiteSpace(LogisticPara.shipperCode))
            {
                ExpressData.Success = false; ExpressData.Message = "缺少物流公司代码"; return(View());
            }
            ManagerCache theManagerCache = new ManagerCache(true);

            //如果缓存没有信息
            if (!theManagerCache.CacheService.IsSet(LogisticPara.logisticsCode))
            {
                ExpressData = DataQuery.Query_WuliuMess(LogisticPara.logisticsCode);//从数据库取出
                bool isNewItem = false;
                if (ExpressData == null? isNewItem = true : isNewItem = false || ExpressData.Status == 1 || ExpressData.Status == 2)
                {
                    #region ###涪擎物流接口
                    Logistics.Entity.AliFuQing.Config_Fuqing.GetPara Para_fuqing = new Logistics.Entity.AliFuQing.Config_Fuqing.GetPara();
                    Para_fuqing.type    = LogisticPara.shipperCode;
                    Para_fuqing.no      = LogisticPara.logisticsCode;
                    Para_fuqing.AppCode = LogisticPara.KuaidiApp_Code;
                    ExpressData         = new FuQingService().ConvertToExpressData(new FuQingService().Service(Para_fuqing));
                    #endregion
                    //如果查询失败转向下一接口
                    if (ExpressData.Success == false)
                    {
                        #region ###易源物流接口
                        Logistics.Entity.AliYiYuan.Config.GetPara Para = new Logistics.Entity.AliYiYuan.Config.GetPara();
                        Para.com     = LogisticPara.shipperCode;
                        Para.nu      = LogisticPara.logisticsCode;
                        Para.AppCode = LogisticPara.KuaidiApp_Code;
                        ExpressData  = new AliYiYuanService().ConvertToExpressData(new AliYiYuanService().Service(Para));
                        #endregion
                    }
                    string jsoncontent = JsonConvert.SerializeObject(ExpressData.ExpressDataItems);
                    //写库 根据isNewItem值判断是新增还是修改
                    DataCMD.AddorUp_WuliuMess(ExpressData.number, ExpressData.type, ExpressData.Status, ExpressData.date, jsoncontent, ExpressData.ApiName, isNewItem);
                }
                //HttpRuntime缓存
                //List<CacheCode> list = HttpRuntime.Cache.Get("CacheCode") as List<CacheCode>;
                //HttpRuntime.Cache.Insert();
                //MemoryCache缓存
                theManagerCache.CacheService.Set(LogisticPara.logisticsCode, ExpressData, 60 * 20, 2);
            }
            ViewBag.ExpressData = theManagerCache.CacheService.Get <object>(LogisticPara.logisticsCode);
            if (IsDebug)
            {
                Normal.WritLog("接受到的参数:" + JsonConvert.SerializeObject(ExpressData));
            }
            return(View());
        }