/// <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);
        }
Exemple #2
0
        /// <summary>
        /// 废票接口
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        public string AnnulTicket(RefundArgs refundArgs)
        {
            StringBuilder paramXml = new StringBuilder();

            paramXml.Append("<voidorder>");
            paramXml.AppendFormat("<orderid>{0}</orderid>", refundArgs.OutOrderId);
            paramXml.AppendFormat("<poundagedealtype>{0}</poundagedealtype>", 1);

            paramXml.Append("<passengers>");
            paramXml.AppendFormat("<passengertype>0</passengertype>");

            refundArgs.Passengers.ForEach(p =>
            {
                paramXml.Append("<passenger>");
                paramXml.AppendFormat("<name>{0}</name>", p.PassengerName);
                paramXml.AppendFormat("<ticketno>{0}</ticketno>", p.TicketNo);
                paramXml.AppendFormat("<credentialid>{0}</credentialid>", p.CardNo);
                paramXml.AppendFormat("<poundage>{0}</poundage>", -1);
                paramXml.AppendFormat("<type>{0}</type>", (int)p.PassengerType);
                paramXml.Append("</passenger>");
            });

            paramXml.Append("</passengers>");

            paramXml.Append("<applyreason>");
            paramXml.AppendFormat("<reasonid>{0}</reasonid>", refundArgs.Guid.Split('|')[0]);
            paramXml.AppendFormat("<reasondetails>{0}</reasondetails>", refundArgs.Reason);
            paramXml.AppendFormat("<reasonremark>{0}</reasonremark>", refundArgs.Remark);
            paramXml.Append("</applyreason>");

            paramXml.Append("</voidorder>");
            return(paramXml.ToString());
        }
Exemple #3
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);

            //}
        }
Exemple #4
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);
        }
        /// <summary>
        /// 废票
        /// </summary>
        private string AnnulTicket(RefundArgs refundArgs)
        {
            Dictionary <string, string> request = new Dictionary <string, string>();

            request.Add("cmd", "SubmitOrderStatus");
            request.Add("orderid", refundArgs.OutOrderId);
            request.Add("ticketno", string.Join(";", string.Join(";", refundArgs.Passengers.Select(p => p.TicketNo).ToArray())));
            request.Add("status", "30");
            request.Add("comment", refundArgs.Reason + refundArgs.Remark);
            request.Add("Uid", piaoMentAccountInfo._pmAccout);
            request.Add("Pwd", piaoMentAccountInfo._pmAg);
            request.Add("xepnr", "1");
            request.Add("ArqueFile", refundArgs.AttachmentUrl);
            return(CreateLinkString(request));
        }
Exemple #6
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);
        }
Exemple #7
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();
        }
Exemple #8
0
        private string GetExtendNode(RefundArgs refundArgs)
        {
            StringBuilder extendXml = new StringBuilder();

            extendXml.Append("<extends>");
            switch (refundArgs.Guid.Split('|')[0].ToString())
            {
            case "fcd8bd2f-44d4-4c66-968a-18be4afcdd50":
                refundArgs.Passengers.ForEach(p =>
                {
                    extendXml.Append("<extend>");
                    extendXml.Append("<id>83b6849f-a2e8-493e-bdb8-7bc3c9d8198a</id>");
                    extendXml.Append("<type>0</type>");
                    extendXml.AppendFormat("<remark>升舱后票号</remark>");
                    extendXml.AppendFormat("<passengertype>{0}</passengertype>", (int)p.PassengerType);
                    extendXml.AppendFormat("<checkvalue>{0}</checkvalue>", p.TicketNo);
                    extendXml.Append("</extend>");
                });

                break;

            case "8f964dd0-efbf-4659-8cbf-8709d91dc2fc":
                refundArgs.Passengers.ForEach(p =>
                {
                    extendXml.Append("<extend>");
                    extendXml.Append("<id>3b20c577-8d7d-489c-bc55-04c4675a9e2e</id>");
                    extendXml.Append("<type>1</type>");
                    extendXml.AppendFormat("<remark>快递单号</remark>");
                    extendXml.AppendFormat("<passengertype>{0}</passengertype>", (int)p.PassengerType);
                    extendXml.AppendFormat("<checkvalue></checkvalue>");
                    extendXml.Append("</extend>");
                });
                break;

            case "fdeb423a-1669-4e90-8c86-0c39808c51a7":
                refundArgs.Passengers.ForEach(p =>
                {
                    extendXml.Append("<extend>");
                    extendXml.Append("<id>b7d98434-7b05-4c66-8c5f-25ae00355f25</id>");
                    extendXml.Append("<type>0</type>");
                    extendXml.AppendFormat("<remark>换开后票号</remark>");
                    extendXml.AppendFormat("<passengertype>{0}</passengertype>", (int)p.PassengerType);
                    extendXml.AppendFormat("<checkvalue>{0}</checkvalue>", p.TicketNo);
                    extendXml.Append("</extend>");

                    extendXml.Append("<extend>");
                    extendXml.Append("<id>50118d8c-f0ea-4bd8-8321-68134b6614a2</id>");
                    extendXml.Append("<type>1</type>");
                    extendXml.AppendFormat("<remark>川航金卡卡号</remark>");
                    extendXml.Append("<passengertype></passengertype>");
                    extendXml.AppendFormat("<checkvalue>{0}</checkvalue>");
                    extendXml.Append("</extend>");
                });
                break;

            case "a0d51b8d-802a-4239-9d7a-419ac483d7a9":
                refundArgs.Passengers.ForEach(p =>
                {
                    extendXml.Append("<extend>");
                    extendXml.Append("<id>33131723-c470-4d65-98d0-2c8d01484064</id>");
                    extendXml.Append("<type>0</type>");
                    extendXml.AppendFormat("<remark>换开后票号</remark>");
                    extendXml.AppendFormat("<passengertype>{0}</passengertype>", (int)p.PassengerType);
                    extendXml.AppendFormat("<checkvalue>{0}</checkvalue>", p.TicketNo);
                    extendXml.Append("</extend>");
                });
                break;

            case "ac58e70d-f87e-4c6c-a906-c8fec5e34ce3":
                refundArgs.Passengers.ForEach(p =>
                {
                    extendXml.Append("<extend>");
                    extendXml.Append("<id>2fff504f-f30f-4944-aea5-20afd5b4a4a9</id>");
                    extendXml.Append("<type>0</type>");
                    extendXml.AppendFormat("<remark>前端票号</remark>");
                    extendXml.AppendFormat("<passengertype>{0}</passengertype>", (int)p.PassengerType);
                    extendXml.AppendFormat("<checkvalue>{0}</checkvalue>", p.TicketNo);
                    extendXml.Append("</extend>");
                });
                break;

            case "7f81addc-9c4e-4602-8147-426934ae178a":
                refundArgs.Passengers.ForEach(p =>
                {
                    extendXml.Append("<extend>");
                    extendXml.Append("<id>03363334-a628-4df0-a6c2-8f1167265997</id>");
                    extendXml.Append("<type>1</type>");
                    extendXml.AppendFormat("<remark>理由</remark>");
                    extendXml.AppendFormat("<passengertype>{0}</passengertype>", (int)p.PassengerType);
                    extendXml.AppendFormat("<checkvalue>{0}</checkvalue>", refundArgs.Remark);
                    extendXml.Append("</extend>");
                });
                break;

            case "4e434c16-3986-4b5e-88ce-75a0c3d82493":
                refundArgs.Passengers.ForEach(p =>
                {
                    extendXml.Append("<extend>");
                    extendXml.Append("<id>6e8f7d6e-c246-4cdc-903d-b993f109a6eb</id>");
                    extendXml.Append("<type>0</type>");
                    extendXml.AppendFormat("<remark>升舱后票号</remark>");
                    extendXml.AppendFormat("<passengertype>{0}</passengertype>", (int)p.PassengerType);
                    extendXml.AppendFormat("<checkvalue>{0}</checkvalue>", p.TicketNo);
                    extendXml.Append("</extend>");
                });
                break;

            case "54838210-a6d9-44ad-a544-7255e8ef3cdf":
                refundArgs.Passengers.ForEach(p =>
                {
                    extendXml.Append("<extend>");
                    extendXml.Append("<id>4e0b4e35-d4b8-4991-a427-d3479230475c</id>");
                    extendXml.Append("<type>0</type>");
                    extendXml.AppendFormat("<remark>重构票号</remark>");
                    extendXml.AppendFormat("<passengertype>{0}</passengertype>", (int)p.PassengerType);
                    extendXml.AppendFormat("<checkvalue>{0}</checkvalue>", p.TicketNo);
                    extendXml.Append("</extend>");
                });
                break;

            case "f3b7ee91-f683-4349-a0ab-6b7e2ac6d223":
                refundArgs.Passengers.ForEach(p =>
                {
                    extendXml.Append("<extend>");
                    extendXml.Append("<id>886d7116-963a-4aff-89c6-127a8c8a44ff</id>");
                    extendXml.Append("<type>0</type>");
                    extendXml.AppendFormat("<remark>名字正确的票号</remark>");
                    extendXml.AppendFormat("<passengertype>{0}</passengertype>", (int)p.PassengerType);
                    extendXml.AppendFormat("<checkvalue>{0}</checkvalue>", p.TicketNo);
                    extendXml.Append("</extend>");
                });
                break;

            case "15cfb5d6-3c8e-49b9-b276-37de3ab940d9":
                refundArgs.Passengers.ForEach(p =>
                {
                    extendXml.Append("<extend>");
                    extendXml.Append("<id>15cfb5d6-3c8e-49b9-b276-37de3ab940d9</id>");
                    extendXml.Append("<type>1</type>");
                    extendXml.AppendFormat("<remark>快递单号</remark>");
                    extendXml.AppendFormat("<passengertype>{0}</passengertype>", (int)p.PassengerType);
                    extendXml.AppendFormat("<checkvalue></checkvalue>");
                    extendXml.Append("</extend>");
                });
                break;

            case "3b98b570-24f5-4037-ae54-732a788110c2":
                refundArgs.Passengers.ForEach(p =>
                {
                    extendXml.Append("<extend>");
                    extendXml.Append("<id>4afc1427-c952-4412-99ed-1cf6bf347667</id>");
                    extendXml.Append("<type>1</type>");
                    extendXml.AppendFormat("<remark>情况说明</remark>");
                    extendXml.AppendFormat("<passengertype>{0}</passengertype>", (int)p.PassengerType);
                    extendXml.AppendFormat("<checkvalue>{0}</checkvalue>", refundArgs.Remark);
                    extendXml.Append("</extend>");
                });
                break;

            case "4527f672-9b08-4404-8b88-91242d6b0dea":
                refundArgs.Passengers.ForEach(p =>
                {
                    extendXml.Append("<extend>");
                    extendXml.Append("<id>434d9a24-a946-47d0-a64d-c41df5c4114f</id>");
                    extendXml.Append("<type>1</type>");
                    extendXml.AppendFormat("<remark>情况说明</remark>");
                    extendXml.AppendFormat("<passengertype>{0}</passengertype>", (int)p.PassengerType);
                    extendXml.AppendFormat("<checkvalue>{0}</checkvalue>", refundArgs.Remark);
                    extendXml.Append("</extend>");
                });
                break;

            case "43e45e71-110a-460d-9168-c72f1dfff77c":
                refundArgs.Passengers.ForEach(p =>
                {
                    extendXml.Append("<extend>");
                    extendXml.Append("<id>ebfcb946-2778-47d0-867d-88b5e234bd9e</id>");
                    extendXml.Append("<type>1</type>");
                    extendXml.AppendFormat("<remark>海航金(银)卡号</remark>");
                    extendXml.AppendFormat("<passengertype>{0}</passengertype>", (int)p.PassengerType);
                    extendXml.AppendFormat("<checkvalue></checkvalue>");
                    extendXml.Append("</extend>");
                });
                break;

            default:
                break;
            }
            extendXml.Append("</extends>");
            return(extendXml.ToString());
        }
Exemple #9
0
 RefundTicketResult IPlatform.BounceOrAnnulTicket(RefundArgs refundArgs)
 {
     throw new NotImplementedException();
 }
Exemple #10
0
 public string BounceOrAnnulTicket(RefundArgs refundArgs)
 {
     throw new NotImplementedException();
 }
        public Task <RefundResult> Refund(RefundArgs args)
        {
            var arguments = args as PaypalRefundArgs;

            return(null);
        }