/// <summary> /// 退废票 /// </summary> /// <param name="refundArgs"></param> /// <returns></returns> public RefundTicketResult BounceOrAnnulTicket(RefundArgs refundArgs) { string submitStr = string.Empty; if (refundArgs.RefundType == 0) { submitStr = RefundTicket(refundArgs); } else { submitStr = AnnulTicket(refundArgs); } WebHttp http = new WebHttp(); var result = http.SendRequest(submitStr, MethodType.GET, Encoding.UTF8, 60); var returnResult = new RefundTicketResult { Result = false, Descript = string.Empty }; if (result == null) { return(returnResult); } returnResult.Result = result.Data.Contains("提交成功"); returnResult.Descript = result.Data; return(returnResult); }
public RefundTicketResult BounceOrAnnulTicket(RefundArgs refundArgs) { StringBuilder paramXml = new StringBuilder(); int refundType = 0; if (refundArgs.RefundType == 0) { refundType = refundArgs.IsVoluntary.Value ? 0 : 2; } else if (refundArgs.RefundType == 1) { refundType = 1; } paramXml.AppendFormat("<Order_Refund_RQ AgentCode=\"{0}\" AgentUserName=\"{1}\" AgentPwd=\"{2}\">", baiTuoInfo._baiTuoAg, baiTuoInfo._baiTuoAccout, baiTuoInfo._baiTuoPassword); paramXml.AppendFormat("<RefundOrderInfo ForderformID=\"{0}\" InternationalTicket=\"{1}\" RefundType=\"{2}\" UserFare=\"{3}\" UserFetchInFare=\"{4}\" IsHaveTakeOff=\"{5}\" HaveTakeOffUrl=\"{6}\" RefundSrc=\"{7}\" RefundPortorderId =\"{8}\">", refundArgs.OutOrderId, 0, refundType, 200, 0, string.Empty, refundArgs.AttachmentUrl, 1, string.Empty); paramXml.Append("<RefundFlightSegments>"); //乘机人 StringBuilder personXml = new StringBuilder(); refundArgs.Passengers.ForEach(p => { personXml.AppendFormat("<PersonInfo PersonName=\"{0}\" PNR=\"{1}\" />", p.PassengerName, refundArgs.PnrCode); }); //退航段 refundArgs.Sky.ForEach(p => { paramXml.AppendFormat("<RefundFlightSegment DepartureAirport=\"{0}\" ArrivalAirport=\"{1}\">", p.FromCityCode, p.ToCityCode); paramXml.Append(personXml); paramXml.Append("</RefundFlightSegment>"); }); paramXml.Append("</RefundFlightSegments>"); /*非自愿退票原因*/ if (refundType == 2) { paramXml.AppendFormat("<Remark>{0}</Remark>", refundArgs.Reason + refundArgs.Remark); } paramXml.Append("</RefundOrderInfo>"); paramXml.Append("</Order_Refund_RQ>"); string resultXml = new _baiTuo.BaitourServiceSoapClient().RefundOrder(paramXml.ToString()); RefundTicketResult refundResult = new RefundTicketResult(); refundResult.Result = !resultXml.Contains("Error"); refundResult.Descript = resultXml; return(refundResult); //Order_Refund_RS resultOrder = null; //using (StringReader reader = new StringReader(resultXml)) //{ // XmlSerializer xmlSerializer = new XmlSerializer(typeof(Order_Refund_RS)); // resultOrder = (Order_Refund_RS)xmlSerializer.Deserialize(reader); //} }
public RefundTicketResult BounceOrAnnulTicket(RefundArgs refundArgs) { int refundType = refundArgs.RefundType == 0 ? 1 : 0; StringBuilder paramXml = new StringBuilder(); paramXml.AppendFormat("<refundtype>{0}</refundtype>", refundType); paramXml.Append(refundType == 1 ? RefundTicket(refundArgs) : AnnulTicket(refundArgs)); string resultStr = new _517Policy.BenefitInterfaceSoapClient().InterfaceFacade(GenerParamXml("refund_invalidate_ticket", paramXml.ToString())); RefundTicketResult result = new RefundTicketResult(); result.Result = resultStr.Contains("error") ? true : bool.Parse(XDocument.Parse(resultStr, LoadOptions.None).Element("VoidResult").Attribute("VoidSuccess").Value); result.Descript = resultStr; return(result); }
/// <summary> /// 今日退废票申请 /// </summary> /// <param name="refundArgs"></param> /// <returns></returns> public RefundTicketResult BounceOrAnnulTicket(RefundArgs refundArgs) { PlatSystem platSystem = SystemConsoSwitch.PlatSystems.Where(p => p.PlatfromCode == this.Code).FirstOrDefault(); _TodayAccountInfo accountInfo = GetInfo(platSystem, refundArgs.areaCity); //设置请求参数 TodayTuiFeiOrderRequest request = new TodayTuiFeiOrderRequest(); request._Type = refundArgs.RefundType == 0 ? "B" : "A"; request._OrderNo = refundArgs.OutOrderId; List <int> _RepealList = new List <int>(); List <string> _PNameList = new List <string>(); List <string> _TicketNoList = new List <string>(); refundArgs.Passengers.ForEach(p => { //默认 p.Repeal = refundArgs.RefundType == 0 ? 2 : 1; _RepealList.Add(p.Repeal); _PNameList.Add(p.PassengerName); _TicketNoList.Add(p.TicketNo); }); request._Repeal = string.Join("|", _RepealList.ToArray()); request._PersonName = string.Join("|", _PNameList.ToArray()); request._TicketNo = string.Join("|", _TicketNoList.ToArray()); //是否取消座位 request._IsCancelSeat = "是"; // refundArgs.IsCancelSeat ? "是" : "否"; string[] strArray = refundArgs.Guid.Split('|'); request._Cause = strArray.Length > 1 ? strArray[1] : "B"; //理由 待定 request._Remarks = refundArgs.Remark; request._Rnum = refundArgs.Passengers.Count(); request._Ramount = refundArgs.Passengers.Sum(p => p.Amount); //调用 PTMange ptMange = new PTMange(); string result = ptMange.Today_TuiFeiOrder(refundArgs.OrderId, accountInfo._todayAccout2, request); RefundTicketResult refundTicketResult = new RefundTicketResult(); refundTicketResult.Descript = result; if (result.ToUpper().Contains("<RESULT>T</RESULT>")) { refundTicketResult.Result = true; } return(refundTicketResult); }
public void Handle(RefundTicketEvent domainEvent) { var saleOrder = this.saleOrderRepository.FindAll(p => p.Id == domainEvent.SaleOrderId).FirstOrDefault(); if (saleOrder == null) { Logger.WriteLog(LogType.INFO, string.Format("没有找到售后订单:{0}", domainEvent.SaleOrderId)); return; } string platCode = saleOrder.Order.Policy.PlatformCode; var platform = BPiaoBao.DomesticTicket.Platform.Plugin.PlatformFactory.GetPlatformByCode(platCode); if (platform == null) { Logger.WriteLog(LogType.INFO, string.Format("没有找到平台Code:{0},售后订单:{1}", platCode, domainEvent.SaleOrderId)); return; } var reason = refundReasonRepository.FindAllNoTracking(p => p.ID == saleOrder.ReasonID).FirstOrDefault(); RefundArgs refundArgs = new RefundArgs { Guid = reason.Guid.ToString(), OrderId = saleOrder.OrderID, areaCity = saleOrder.Order.Policy.AreaCity, OutOrderId = saleOrder.Order.OutOrderId, Passengers = saleOrder.Passenger.Select(p => new RefundPassenger { PassengerName = p.Passenger.PassengerName, PassengerType = p.Passenger.PassengerType, TicketNo = p.Passenger.TicketNumber, CardNo = p.Passenger.CardNo, Amount = p.Passenger.CPMoney }).ToList(), PnrCode = saleOrder.Order.PnrCode, Reason = saleOrder.Reason, RefundMoneyType = reason.RefundType, Remark = saleOrder.Remark, Sky = saleOrder.Order.SkyWays.Select(p => new RefundSky { FromCityCode = p.FromCityCode, ToCityCode = p.ToCityCode }).ToList() }; if (saleOrder is BounceOrder) { refundArgs.AttachmentUrl = (saleOrder as BounceOrder).AttachmentUrl; refundArgs.IsVoluntary = (saleOrder as BounceOrder).IsVoluntary; refundArgs.RefundType = 0; } else if (saleOrder is AnnulOrder) { refundArgs.AttachmentUrl = (saleOrder as AnnulOrder).AttachmentUrl; refundArgs.RefundType = 1; } RefundTicketResult result = platform.BounceOrAnnulTicket(refundArgs); if (result.Result) { saleOrder.ProcessStatus = EnumTfgProcessStatus.Processing; } this.unitOfWorkRepository.PersistUpdateOf(saleOrder); this.unitOfWork.Commit(); }