Example #1
0
        /// <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);
        }
Example #2
0
        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);

            //}
        }
Example #3
0
        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);
        }
Example #4
0
        /// <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);
        }
Example #5
0
        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();
        }