/// <summary> /// 下订单 /// </summary> /// <param name="priceOrderWay"></param> /// <param name="zOrder"></param> /// <returns></returns> public ServiceResult CreateNormalOrder(int priceOrderWay, XZorder zOrder) { var result = new ServiceResult(); var ctripApiClient = GetApiClient(priceOrderWay); var response = ctripApiClient.SubmitOrderV(zOrder); if (response.code == "0") { result.SetData(response.result.orderId); return(result.SetSucess("下单到携程成功")); } else { return(result.SetError(response.errMsg)); } }
/// <summary> /// 下单 /// </summary> /// <param name="id"></param> /// <returns></returns> public ServiceResult CreateOrder(long id) { var result = new ServiceResult(); var cOrder = SqlSugarContext.TravelskyInstance.Queryable <dingdan_info>().Where(u => (u.PriceOrderWay == 66 || u.PriceOrderWay == 16 || u.PriceOrderWay == 86) && u.fax == id.ToString()).First(); if (cOrder != null && !string.IsNullOrEmpty(cOrder.ElongOrderID)) { return(result.SetError("已下单到携程,请勿重新下单")); } if (cOrder.pingtai == "ay" || cOrder.pingtai == "rnx") { orderRepository = new ShengLvOrderRepository(); } else { orderRepository = new ThirdOrderRepository(); } var order = orderRepository.GetOrderByTaoBaoOrderId(id); SqlSugarClient sugarClient = null; string faildOrderKey = string.Empty; if (order.shopType == 7 || order.shopType == 9) { sugarClient = SqlSugarContext.ResellbaseInstance; } else { sugarClient = SqlSugarContext.BigTreeInstance; } if ((!string.IsNullOrEmpty(cOrder.beizhu) && cOrder.beizhu.Contains("订单申请取消")) || order.Refuse == 2 || order.remark.Contains("淘宝申请退款") || order.remark.Contains("淘宝执行订单取消")) { return(result.SetError("分销已取消,取消下单")); } var zOrder = new XZorder { comeDate = order.checkInDate, contactName = order.contactName, contactPhone = "18022416577", guestNames = order.guestName.Split(',').ToList(), guestNum = order.guestName.Split(',').Count(), hotelCode = order.hotelID, lateArriveTime = order.lastArriveTime, leaveDate = order.checkOutDate, orderNo = order.sourceOrderID, //price = Convert.ToDecimal(order.totalPrice),//指导价 salePrice = Convert.ToDecimal(order.alipayPay), //卖价 totalPrice = Convert.ToDecimal(order.totalPrice), //底价 ratePlanCategory = "501", ratePlanCode = order.ratePlanID, roomNum = order.roomNum, specialRequest = order.comment, }; var createResult = new ServiceResult(); if (cOrder.PriceOrderWay == 86) { createResult = CreatePromotionOrder(zOrder); } else { createResult = CreateNormalOrder((int)cOrder.PriceOrderWay, zOrder); } if (cOrder != null) { cOrder.caozuo = string.Format("{0}system 操作下单到携程 [{1}]\n", cOrder.caozuo, DateTime.Now.ToString()); } if (createResult.IsSucess) { string ctripOrderId = createResult.Data.ToString(); cOrder.ElongOrderID = ctripOrderId; string message = string.Format("下单成功,订单号:({0})", ctripOrderId); cOrder.state = 3; if (string.IsNullOrEmpty(cOrder.beizhu)) { cOrder.beizhu = string.Format("【系统】:{0} [{1}]<br/>", message, DateTime.Now.ToString()); } else { cOrder.beizhu = string.Format("{2}【系统】:{0} [{1}]<br/>", message, DateTime.Now.ToString(), cOrder.beizhu); } var rows = SqlSugarContext.TravelskyInstance.Updateable(cOrder).ExecuteCommand(); if (rows > 0) { var payResult = PayOrder(id); //下单后支付 } order.remark = string.Format("{0}【携程】:{1} [{2}]<br/>", order.remark, message, DateTime.Now.ToString()); rows = sugarClient.Updateable(order).UpdateColumns(u => u.remark).ExecuteCommand(); return(result.SetSucess(message)); } else { cOrder.state = 1; cOrder.beizhu = string.Format("{0}【系统】:下单失败,{1} [{2}]<br/>", cOrder.beizhu, createResult.Message, DateTime.Now.ToString()); var rows = SqlSugarContext.TravelskyInstance.Updateable(cOrder).ExecuteCommand(); return(result.SetError(createResult.Message)); } }
/// <summary> /// 促销下单 /// </summary> /// <param name="order"></param> /// <returns></returns> public ServiceResult CreatePromotionOrder(XZorder order) { var result = new ServiceResult(); var request = new CtripApi.NewRequest.CreateOrderRequest { }; var apiConfig = ApiConfigManager.ZhiHeC; request.UniqueID = new List <UniqueIDItem> { //new UniqueIDItem{ ID="28", Type=apiConfig.AllianceID }, //new UniqueIDItem{ ID="503", Type=apiConfig.SID }, new UniqueIDItem { ID = apiConfig.UID, Type = "1" }, new UniqueIDItem { ID = order.orderNo, Type = "504" }, }; List <PersonNameItem> personNames = new List <PersonNameItem>(); foreach (var item in order.guestNames) { PersonNameItem name = new PersonNameItem() { Name = item }; personNames.Add(name); } request.Version = "1.0"; request.PrimaryLangID = "zh-cn"; request.HotelReservations = new CtripApi.NewRequest.HotelReservations { HotelReservation = new CtripApi.NewRequest.HotelReservation { ResGlobalInfo = new CtripApi.NewRequest.ResGlobalInfo { Total = new CtripApi.NewRequest.Total { InclusiveAmount = order.totalPrice, ExclusiveAmount = 0, CurrencyCode = "CNY" }, TPA_Extensions = new TPA_Extensions1 { TotalCost = new TotalCost { CurrencyCode = "CNY", InclusiveAmount = order.salePrice, ExclusiveAmount = 0, } }, GuestCounts = new CtripApi.NewRequest.GuestCounts { GuestCount = new CtripApi.NewRequest.GuestCount { Count = order.guestNames.Count } }, TimeSpan = new TimeSpanInfo { Start = order.comeDate.ToString("yyyy-MM-dd"), End = order.leaveDate.ToString("yyyy-MM-dd") }, DepositPayments = new List <string> { } } , RoomStays = new CtripApi.NewRequest.RoomStays { RoomStay = new CtripApi.NewRequest.RoomStay { RoomTypes = new CtripApi.NewRequest.RoomTypes { RoomType = new RoomType { NumberOfUnits = order.roomNum } }, RatePlans = new CtripApi.NewRequest.RatePlans { RatePlan = new RatePlan { RoomID = order.ratePlanCode, PrepaidIndicator = 1 } }, BasicPropertyInfo = new BasicPropertyInfo { HotelCode = order.hotelCode } } }, ResGuests = new CtripApi.NewRequest.ResGuests { ResGuest = new CtripApi.NewRequest.ResGuest { ArrivalTime = "23:30", //最早到店时间 TPA_Extensions = new TPA_Extensions { LateArrivalTime = "23:30" //最晚到店时间 }, Profiles = new CtripApi.NewRequest.Profiles { ProfileInfo = new CtripApi.NewRequest.ProfileInfo { Profile = new CtripApi.NewRequest.Profile { Customer = new CtripApi.NewRequest.Customer { ContactPerson = new CtripApi.NewRequest.ContactPerson { PersonName = new CtripApi.NewRequest.PersonName { Name = order.contactName }, Telephone = new Telephone { PhoneNumber = order.contactPhone, PhoneTechType = "5", } , ContactType = "non" }, PersonName = personNames } } } } } } } }; var response = CtripNewClient.Excute(request); if (response.Errors.Count == 0) { var resInfo = response.HotelReservations.HotelReservation.ResGlobalInfo.HotelReservationIDs.Where(u => u.ResID_Type == "501").FirstOrDefault(); result.SetData(resInfo.ResID_Value); return(result.SetSucess("下单成功")); } else { return(result.SetError(response.Errors[0].Value)); } }