/// <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); }
/// <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()); }
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> 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)); }
/// <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(); }
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()); }
RefundTicketResult IPlatform.BounceOrAnnulTicket(RefundArgs refundArgs) { throw new NotImplementedException(); }
public string BounceOrAnnulTicket(RefundArgs refundArgs) { throw new NotImplementedException(); }
public Task <RefundResult> Refund(RefundArgs args) { var arguments = args as PaypalRefundArgs; return(null); }