/// <summary> /// 生成订单 /// </summary> public string ProduceOrder(Guid policyId, PolicyType policyType, Guid publisher, string officeNo, string source, int choise, bool needAUTH, bool HasSubsidized, bool IsUsePatPrice, bool forbidChnagePNR) { var orderView = Session["OrderView"] as OrderView; var flights = Session["ReservedFlights"] as IEnumerable <FlightView>; MatchedPolicy matchedPolicy = MatchedPolicyCache.FirstOrDefault(p => p.Id == policyId); if (matchedPolicy == null) { throw new CustomException("政策选择超时"); } if (flights.First().BunkType != null && orderView.Source == OrderSource.PlatformOrder && (flights.First().BunkType == BunkType.Free || matchedPolicy.OriginalPolicy is SpecialPolicyInfo && ((SpecialPolicyInfo)matchedPolicy.OriginalPolicy).Type == SpecialProductType.LowToHigh)) { SpecialPolicy policy = PolicyManageService.GetSpecialPolicy(policyId); //低打高返和集团票性质一样 不需要去订坐 2013-4-3 wangsl //if (policy != null && (policy.SynBlackScreen||policy.Type==SpecialProductType.LowToHigh)) if (policy != null && policy.SynBlackScreen) { PNRPair pnr = PNRHelper.ReserveSeat(flights, orderView.Passengers); orderView.PNR = pnr; } } Order order = OrderProcessService.ProduceOrder(orderView, matchedPolicy, CurrentUser, BasePage.OwnerOEMId, forbidChnagePNR, (AuthenticationChoise)choise); FlightQuery.ClearFlightQuerySessions(); if (order.Source == OrderSource.PlatformOrder && !PNRPair.IsNullOrEmpty(order.ReservationPNR) && !String.IsNullOrWhiteSpace(order.Product.OfficeNo)) { if (needAUTH) { authorize(order.ReservationPNR, officeNo, source, BasePage.OwnerOEMId); } } return(order.Id.ToString()); }
static bool OrderPaySuccess(decimal orderId, string payAccount, string payTradeNo, string channelTradeNo, DateTime payTime, PayInterface payInterface, PayAccountType payAccountType, string operatorAccount) { var result = false; var request = string.Format("订单:{0} 支付账号:{1} 流水号:{2} 支付时间:{3} 支付接口:{4} 支付账号类型:{5} 操作员账号:{6} 通道流水号:{7} ", orderId, payAccount, payTradeNo, payTime, payInterface.GetDescription(), payAccountType.GetDescription(), operatorAccount, channelTradeNo); var response = string.Empty; try { OrderProcessService.PaySuccess(orderId, payAccount, payTradeNo, channelTradeNo, payTime, payInterface, payAccountType, operatorAccount); result = true; response = "处理成功"; } catch (Exception ex) { LogService.SaveExceptionLog(ex, "订单支付通知 " + request); response = "处理失败 " + ex.Message; } var tradementLog = new Log.Domain.TradementLog { OrderId = orderId, Request = request, Response = response, Time = DateTime.Now, Remark = "支付成功通知", }; LogService.SaveTradementLog(tradementLog); return(result); }
/// <summary> /// 申请退/废票 /// </summary> /// <param name="orderId">订单号</param> /// <param name="pnrCode">编码(小编码|大编码)</param> /// <param name="passengers">乘机人(乘机人id,以','隔开)</param> /// <param name="voyages">航段(航段id,以','隔开)</param> /// <param name="refundType">退票类型(当日作废:-1,升舱全退:0,自愿按客规退票:1,非自愿退票:2,特殊原因退票:3)</param> /// <param name="reason">退/废票原因</param> /// <param name="DelegageCancelPNR">是否委托平台取消编码</param> public string ApplyRefund(decimal orderId, string pnrCode, string passengers, string voyages, int refundType, string reason, bool DelegageCancelPNR, string filePath) { try { RefundOrScrapApplyformView applyformView = null; if (refundType == -1) { applyformView = new ScrapApplyformView(); } else { applyformView = new RefundApplyformView(); var view = applyformView as RefundApplyformView; view.RefundType = (RefundType)refundType; if (!string.IsNullOrEmpty(filePath) && (view.RefundType == RefundType.SpecialReason || view.RefundType == RefundType.Involuntary)) { var bytes = FileService.GetFileBytes(filePath); Thumbnail thumbnail = new Thumbnail(); view.ApplyAttachmentView = new List <ApplyAttachmentView>(); view.ApplyAttachmentView.Add(new ApplyAttachmentView { FilePath = filePath, Thumbnail = thumbnail.MakeThumb(100, bytes) }); //view.Thumbnail = thumbnail.MakeThumb(100, ""); } applyformView = view; } applyformView.PNR = getPNRPair(pnrCode); applyformView.Passengers = getPassengers(passengers); applyformView.Reason = reason; applyformView.DelegageCancelPNR = DelegageCancelPNR; foreach (var item in getRefundVoyages(voyages)) { applyformView.AddVoyage(item); } if (Session["NeedPlatformCancelPNR"] != null && Session["NeedPlatformCancelPNR"].ToString() == orderId.ToString()) { applyformView.NeedPlatfromCancelPNR = true; } var applyform = OrderProcessService.Apply(orderId, applyformView, CurrentUser, BasePage.OwnerOEMId) as RefundOrScrapApplyform; releaseLock(orderId); //if (applyform.Status == RefundApplyformStatus.AppliedForProvider && (applyform.Order.Source == OrderSource.ContentImport || applyform.Order.Source == OrderSource.CodeImport || applyform.Order.Source == OrderSource.InterfaceOrder)) //{ // var pnr = CommandService.GetReservedPnr(applyformView.PNR, Guid.Empty); // if (!pnr.Success || pnr.Success && !pnr.Result.HasCanceled) // { // return "OK1"; // } //} return(OK); } catch (Exception ex) { return(ex.Message); } }
protected void btnGetPayInfo_Click(object sender, EventArgs e) { var order = OrderProcessService.QueryExternalPlatformPaymentStatus(decimal.Parse(this.lblInternalOrderId.Text)); if (order != null) { bindOrder(order); } }
protected override string ExecuteCore() { var flights = Context.GetParameterValue("flights"); var passengers = Context.GetParameterValue("passengers"); var contact = Context.GetParameterValue("contact"); var policyType = Context.GetParameterValue("policyType"); Vaild(flights, passengers, contact, policyType, InterfaceSetting); DataTransferObject.Order.OrderView orderView = new DataTransferObject.Order.OrderView(); bindOrderView(flights, passengers, contact, orderView); var pnrh = new PNRHelper(); try { if ((PolicyType)byte.Parse(policyType) != PolicyType.Special) { PNRPair pnr = pnrh.ReserveSeat(loadFlightView(flights, passengers), orderView.Passengers, Employee, Company); orderView.PNR = pnr; } if (pnrh.RequirePat(loadFlightView(flights, passengers), (PolicyType)byte.Parse(policyType))) { orderView.PATPrice = pnrh.Pat(orderView.PNR, loadFlightView(flights, passengers), PassengerType.Adult); } MatchedPolicy policy = QueryPolicies((PolicyType)byte.Parse(policyType), flights, passengers, orderView); if (policy != null) { if (policy.PolicyType == PolicyType.Special) { var p = PolicyManageService.GetSpecialPolicy(policy.Id); if (p != null && p.SynBlackScreen) { PNRPair pnr = pnrh.ReserveSeat(loadFlightView(flights, passengers), orderView.Passengers, Employee, Company); orderView.PNR = pnr; } } orderView.IsTeam = false; orderView.Source = OrderSource.InterfaceReservaOrder; Order order = OrderProcessService.ProduceOrder(orderView, policy, Employee, Guid.Empty, false); if (order.Source == OrderSource.InterfaceReservaOrder && !PNRPair.IsNullOrEmpty(order.ReservationPNR) && !String.IsNullOrWhiteSpace(order.Product.OfficeNo)) { if (policy.NeedAUTH && !string.IsNullOrEmpty(policy.OfficeNumber)) { authorize(order.ReservationPNR, policy.OfficeNumber); } } return("<id>" + order.Id + "</id><payable>" + (policy.ConfirmResource ? 0 : 1) + "</payable>" + ReturnStringUtility.GetOrder(order)); } } catch (Exception ex) { InterfaceInvokeException.ThrowCustomMsgException(ex.Message); } InterfaceInvokeException.ThrowCustomMsgException("生成订单失败,没有对应直达航班!"); return(""); }
public void ProduceOrderTest() { var flight = new MockX <FlightView>(); flight.SetupAllProperties(); MockOption.SetReturnsDefault(flight.Object); MockOption.SetReturnsDefault <IEnumerable <FlightView> >(new List <FlightView>() { flight.Object, flight.Object, flight.Object }); var passenger = new MockX <PassengerView>(); passenger.SetupAllProperties(); MockOption.SetReturnsDefault(passenger.Object); MockOption.SetReturnsDefault <IEnumerable <PassengerView> >(new List <PassengerView>() { passenger.Object, passenger.Object, passenger.Object }); var contract = new MockX <Contact>(); contract.SetupAllProperties(); MockOption.SetReturnsDefault(contract.Object); var role = new MockX <PermissionRoleInfo>(); role.SetupAllProperties(); MockOption.SetReturnsDefault(role); MockOption.SetReturnsDefault <IEnumerable <PermissionRoleInfo> >(new List <PermissionRoleInfo>() { role.Object, role.Object }); var ovP = new MockX <OrderView>(); ovP.SetupAllProperties(); var emp = new MockX <EmployeeDetailInfo>(); emp.SetupAllProperties(); OrderView orderView = ovP.Object; Guid publisher = new Guid("74ae6725-654e-444f-abcc-29b1568db845"); Guid policy = new Guid(); // TODO: 初始化为适当的值 EmployeeDetailInfo employee = emp.Object; Order expected = null; // TODO: 初始化为适当的值 Order actual; actual = OrderProcessService.ProduceOrder(orderView, publisher, policy, employee); Assert.AreNotEqual(expected, actual); }
/// <summary> /// 检查PNR信息; /// </summary> private void CheckPNR() { // 读取配置文件中的查询时间范围; decimal range = decimal.Parse(ConfigurationManager.AppSettings["Range"]); // 这里查询到所有状态为1的, IEnumerable <PNRHistory> histories = HistoryService.QueryBooking(DateTime.Now.AddHours(-(double)range)); runtimeLog.Debug("Start Process."); foreach (var item in histories) { runtimeLog.InfoFormat("编码:{0}, 状态:{1}", item.PNRCode, item.Status == 1 ? "未取消" : "已取消"); // 判断编码是否需要取消; if (item.Status == 1) { bool needCancel = OrderProcessService.RequireCancelPNR(item.PNRCode, item.GenerateTime.AddMinutes(-5)); if (needCancel) { var isSucceeded = CommandService.CancelPNR(new PNRPair(item.PNRCode, null)); if (isSucceeded) { item.Status = 0; HistoryService.Update(item); runtimeLog.InfoFormat("编码{0}已被成功取消。", item.PNRCode); } else { runtimeLog.InfoFormat("编码{0}未被成功取消。", item.PNRCode); exceptionLog.ErrorFormat("编码{0}未被成功取消。", item.PNRCode); } } else { runtimeLog.InfoFormat("编码{0}不需要被取消。", item.PNRCode); } } else { runtimeLog.InfoFormat("编码{0}已处于取消状态。", item.PNRCode); } runtimeLog.Info(""); Thread.Sleep(500); } runtimeLog.Debug("End Process."); }
protected void CancleThisOrder(object sender, EventArgs e) { try { if (orderId == 0) { return; } OrderProcessService.CancelOrder(orderId, CurrentUser.UserName); RegisterJavaScript(this, "alert('取消成功!');location.href='/PurchaseDefault.aspx'"); } catch (Exception ex) { ShowExceptionMessage(ex, "取消订单"); } }
protected void DealOrder(object source, RepeaterCommandEventArgs e) { try { var orderId = Guid.Parse(e.CommandArgument.ToString()); OrderProcessService.HandlingCredentialsForUpdateFailed(orderId, CurrentUser.UserName, BasePage.OwnerOEMId); ShowMessage("处理完成!"); var pagination = new Pagination { PageSize = pager.PageSize, PageIndex = pager.CurrentPageIndex, GetRowCount = true }; QueryApplyForm(pagination); } catch (Exception ex) { ShowExceptionMessage(ex, "查询"); } btnQuery_Click(this, null); }
void checkPublisherIsWorking() { var company = this.Supplier == null ? this.Provider.CompanyId : this.Supplier.CompanyId; var workingHours = CompanyService.GetWorkinghours(company); Izual.Time startTime, endTime; bool isWeekend = DateTime.Today.IsWeekend(); if (!IsB3BOrder) { var externalPolicy = OrderProcessService.LoadExternalPolicy(Id); if (externalPolicy == null) { startTime = new Izual.Time(8, 0, 0); endTime = new Izual.Time(18, 0, 0); } else if (!isWeekend) { startTime = externalPolicy.WorkTimeStart; endTime = externalPolicy.WorkTimeEnd; } else { startTime = externalPolicy.RestWorkTimeStart; endTime = externalPolicy.RestWorkTimeEnd; } } else { if (isWeekend) { startTime = workingHours.RestdayWorkStart; endTime = workingHours.RestdayWorkEnd; } else { startTime = workingHours.WorkdayWorkStart; endTime = workingHours.WorkdayWorkEnd; } } if (Izual.Time.Now < startTime || Izual.Time.Now > endTime) { throw new CustomException("供应商已下班"); } }
protected void btnSubmit_Click(object sender, EventArgs e) { try { decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { RefundOrScrapApplyform applyform = ApplyformQueryService.QueryRefundOrScrapApplyform(applyformId); var remark = this.txtErrorRemork.Text; OrderProcessService.Apply(applyform.OrderId, new BalanceRefundApplyView(applyform.Flights.Select(f => f.OriginalFlight.Id), applyformId, remark), CurrentUser, OwnerOEMId); ReleaseLock(applyform.OrderId); RegisterScript(this, "alert('差错退款申请成功!');location.href='" + ReturnUrl + "'", true); } } catch (Exception ex) { ShowExceptionMessage(ex, "差错退款"); } }
/// <summary> /// 生成申请单 /// </summary> public string ProduceApplyform(Guid policyId, PolicyType policyType, string officeNo, decimal orderId, string source, int choise, bool needAUTH, bool IsUsePatPrice) { var applyformView = Session["ApplyformView"] as UpgradeApplyformView; MatchedPolicy matchedPolicy = MatchedPolicyCache.FirstOrDefault(p => p.Id == policyId); if (matchedPolicy == null) { throw new CustomException("政策选择超时"); } decimal newOrderId = OrderProcessService.Apply(orderId, applyformView, matchedPolicy, CurrentUser, BasePage.OwnerOEMId); FlightQuery.ClearFlightQuerySessions(); if (needAUTH) { authorize(applyformView.NewPNR, officeNo, source, BasePage.OwnerOEMId); } BasePage.ReleaseLock(orderId); return(newOrderId.ToString()); }
public void ProcessRequest(HttpContext context) { try { ExternalPlatformNotifyView notifyInfo = NotifyService._517NaNotify(context); lock (notifyLocker) { if (notifyInfo is PaySuccessNotifyView) { var paymentResult = notifyInfo as PaySuccessNotifyView; OrderProcessService.ExternalPaySucess(paymentResult); } else if (notifyInfo is ETDZFailedNotifyView) { var etdzResult = notifyInfo as ETDZFailedNotifyView; OrderProcessService.ExternalOrderDenyETDZ(etdzResult.Reason, etdzResult.Id); } else if (notifyInfo is ETDZSuccessNotifyView) { var etdzResult = notifyInfo as ETDZSuccessNotifyView; if (etdzResult.Valid && etdzResult.Ticket.TicketNos.Any()) { OrderProcessService.ExternalPlatformETDZ(etdzResult.Ticket.NewPNR, etdzResult.Id, etdzResult.Ticket.TicketNos, etdzResult.Ticket.SettleCode, BasePage.OwnerOEMId); } } else if (notifyInfo is CancelOrderNotifyView) { } } context.Response.Write(notifyInfo.Response); } catch (CustomException) { context.Response.Write("FAIL"); } catch (Exception ex) { context.Response.Write("FAIL"); LogService.SaveExceptionLog(ex); } }
public void ProcessRequest(HttpContext context) { try { PayNotifyProcessor processor = new PayNotifyProcessor(context.Request); if (processor.Execute()) { var result = false; var paramArray = processor.ExtraParams.Split('|'); var request = string.Format("订单:{0} 支付账号:{1} 流水号:{2} 支付时间:{3} 支付接口:{4} 支付账号类型:{5} 操作员账号:{6} 通道流水号:{7} ", processor.BusinessId, processor.PayAccount, processor.PoolPayTradeNo, processor.PayTime, processor.PayChannel.GetDescription(), processor.PayAccountType.GetDescription(), paramArray[2], processor.ChannelTradeNo); var response = string.Empty; try { OrderProcessService.PaySuccess(processor.BusinessId, processor.PayAccount, processor.PoolPayTradeNo, processor.ChannelTradeNo, processor.PayTime, processor.PayChannel, processor.PayAccountType, paramArray[2]); result = true; response = "处理成功"; } catch (Exception ex) { LogService.SaveExceptionLog(ex, "订单支付通知 " + request); response = "处理失败 " + ex.Message; } var tradementLog = new TradementLog { OrderId = processor.BusinessId, Request = request, Response = response, Time = DateTime.Now, Remark = "支付成功通知", }; LogService.SaveTradementLog(tradementLog); context.Response.Write(string.Format(NotifyProcessor.ResponseFormat, "T", string.Empty)); } } catch (Exception ex) { context.Response.Write(string.Format(NotifyProcessor.ResponseFormat, "F", ex.Message)); } }
/// <summary> /// 确认价格信息修改 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void SurePrice(object sender, EventArgs e) { try { decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { RefundOrScrapApplyform applyform = ApplyformQueryService.QueryRefundOrScrapApplyform(applyformId); var priceView = new List <PriceView>(); foreach (RepeaterItem item in ListVoyage.Items) { if (item.ItemType == ListItemType.Header || item.ItemType == ListItemType.Footer) { continue; } var releasePriceCtl = item.FindControl("ReleasePrice") as TextBox; var airportFeeCtl = item.FindControl("AirPortFee") as TextBox; var Departure = item.FindControl("VoyageStart") as HiddenField; var Arrival = item.FindControl("VoyageEnd") as HiddenField; var ReleasePrice = float.Parse(releasePriceCtl.Text.Trim()); var AirPortFee = float.Parse(airportFeeCtl.Text.Trim()); priceView.Add(new PriceView { AirportPair = new AirportPair(Departure.Value, Arrival.Value), AirportFee = (decimal)AirPortFee, Fare = (decimal)ReleasePrice }); } OrderProcessService.RevisePrice(applyform.OrderId, priceView, CurrentUser.UserName); ReleaseLock(applyform.OrderId); RegisterScript(this, "alert('价格修改成功!');location.href='/OrderModule/Operate/ChangeProcessList.aspx'", true); } } catch (Exception ex) { ShowExceptionMessage(ex, "修改价格"); } }
/// <summary> /// 申请改期 /// </summary> /// <param name="orderId">订单号</param> /// <param name="pnrCode">编码(小编码|大编码)</param> /// <param name="passengers">乘机人(乘机人id,以','隔开)</param> /// <param name="voyages">航段(航段id|新航班号|新航班日期,以','隔开)</param> /// <param name="remark">改期备注</param> public string ApplyPostpone(decimal orderId, string pnrCode, string passengers, string voyages, string remark, string carrair) { try { var applyformView = new PostponeApplyformView() { PNR = getPNRPair(pnrCode), Passengers = getPassengers(passengers), Reason = remark }; var flightChangeLimit = SystemDictionaryService.Query(SystemDictionaryType.FlightChangeLimit); var limit = LimitItem.Parse(flightChangeLimit); foreach (var item in getPostponeVoyages(voyages)) { bool isTodayFlight = DateTime.Today == item.NewFlightDate.Date; foreach (LimitItem l in limit) { if (carrair.ToUpper() != l.Carrair.ToUpper()) { continue; } if (item.NewFlightDate >= l.LimitFrom && item.NewFlightDate <= l.LimitTo && (!isTodayFlight || !l.ToTodayEnable)) { var aline = FoundationService.Airlines.FirstOrDefault(p => p.Code.Value == l.Carrair); throw new CustomException("由于[" + aline.ShortName + "]原因,该客票已被航空公司限制改期,无法改期,请让乘机人自行致电航空公司或到航空公司直营柜台办理改期"); } } applyformView.AddItem(item); } var applyform = OrderProcessService.Apply(orderId, applyformView, CurrentUser, BasePage.OwnerOEMId) as PostponeApplyform; releaseLock(orderId); return(OK); } catch (Exception ex) { return(ex.Message); } }
protected void CheckInRefundingTimeOfProvider() { var workingHours = Service.Organization.CompanyService.GetWorkinghours(this.Order.Provider.CompanyId); Izual.Time startTime, endTime; if (this.Order.IsB3BOrder) { if (DateTime.Today.IsWeekend()) { startTime = workingHours.RestdayRefundStart; endTime = workingHours.RestdayRefundEnd; } else { startTime = workingHours.WorkdayRefundStart; endTime = workingHours.WorkdayRefundEnd; } } else { var externalPolicy = OrderProcessService.LoadExternalPolicy(Order.Id); if (DateTime.Today.IsWeekend()) { startTime = externalPolicy.RestRefundTimeStart; endTime = externalPolicy.RestRefundTimeEnd; } else { startTime = externalPolicy.WorkRefundTimeStart; endTime = externalPolicy.WorkRefundTimeEnd; } } if (Izual.Time.Now < startTime || Izual.Time.Now > endTime) { throw new CustomException("供应商已下班"); } }
public static ExternalOrder QueryExternalOrderTicket(decimal orderId, Guid oemId) { var extOrder = QueryExternalOrder(orderId); var queryResult = ExternalPlatform.OrderService.QueryTicketNo(extOrder.Platform, orderId, extOrder.ExternalOrderId); var pnrInfo = extOrder.PNRInfos.FirstOrDefault(); if (pnrInfo == null) { throw new CustomException("编码不存在!"); } if (queryResult.Success && queryResult.Result.TicketNos.Any()) { var ticketNoView = new TicketNoView() { ETDZPNR = queryResult.Result.NewPNR, Mode = ETDZMode.Manual, Items = queryResult.Result.TicketNos, NewSettleCode = queryResult.Result.SettleCode }; var setting = ExternalPlatform.Processor.PlatformBase.GetPlatform(extOrder.Platform); OrderProcessService.ETDZ(ticketNoView, setting.Setting.ProviderAccount, extOrder.Platform.GetDescription(), extOrder, oemId); } return(extOrder); }
private void payOrder(decimal orderId) { string source = Request.QueryString["source"]; Order order = OrderQueryService.QueryOrder(orderId); if (order == null) { showErrorMessage("订单 [" + orderId + "] 不存在"); } else { if (order.Source != OrderSource.PlatformOrder) { orderIsImport.Value = "1"; } flights = order.PNRInfos.FirstOrDefault().Flights.ToList(); PNRInfo pnr = order.PNRInfos.First(); ShowTicketPrice.Value = pnr.Flights.First().Bunk is FreeBunk || pnr.Passengers.First().Price.Fare != 0 ? "1" : "0"; // 状态是待申请的,则仅显示订单信息和提示信息 if (order.Status == OrderStatus.Applied) { bindOrder(order, source); divOperations.Visible = false; } else { // 内部机构订单不需要支付 if (order.IsInterior) { Response.Redirect("OrderDetail.aspx?id=" + orderId + "&returnUrl=OrderList.aspx"); } // 其他情况,均要检查是否能支付和状态 string errorMessage; if (OrderProcessService.Payable(orderId, out errorMessage)) { string lockErrorMsg; if (Lock(orderId, LockRole.Purchaser, "订单支付", out lockErrorMsg)) { bindOrder(order, source); bindPayTypes(); } else { showErrorMessage("锁定订单失败。原因:" + lockErrorMsg); } if (!string.IsNullOrEmpty(errorMessage)) { showErrorMessage(errorMessage); } } else { showErrorMessage(errorMessage); } } } }
protected override string ExecuteCore() { var orderId = Context.GetParameterValue("id"); var payType = Context.GetParameterValue("payType"); var orderType = Context.GetParameterValue("businessType"); if (string.IsNullOrWhiteSpace(orderId)) { InterfaceInvokeException.ThrowParameterMissException("id"); } if (string.IsNullOrWhiteSpace(payType) || (payType != "0" && payType != "1")) { InterfaceInvokeException.ThrowParameterMissException("payType"); } if (string.IsNullOrWhiteSpace(orderType) || (orderType != "0" && orderType != "1")) { InterfaceInvokeException.ThrowParameterMissException("businessType"); } decimal oid; string msg = ""; if (decimal.TryParse(orderId, out oid)) { decimal amount = 0M; if (orderType == "0") { OrderProcessService.Payable(oid, out msg); if (!string.IsNullOrEmpty(msg)) { InterfaceInvokeException.ThrowCustomMsgException(msg); } var orderInfo = OrderQueryService.QueryOrder(oid); if (orderInfo.Purchaser.CompanyId != Company.CompanyId) { InterfaceInvokeException.ThrowCustomMsgException("暂无此订单"); } amount = orderInfo.Purchaser.Amount; } else if (orderType == "1") { ApplyformProcessService.Payable(oid, out msg); if (!string.IsNullOrEmpty(msg)) { InterfaceInvokeException.ThrowCustomMsgException(msg); } var orderInfo = ApplyformQueryService.QueryPostponeApplyform(oid); if (orderInfo.Purchaser.CompanyId != Company.CompanyId) { InterfaceInvokeException.ThrowCustomMsgException("暂无此订单"); } amount = orderInfo.PayBill.Applier.Amount; } if (AutoPayService.QueryAuto(oid) != null) { InterfaceInvokeException.ThrowCustomMsgException("存在重复的代扣记录"); } var auto = AccountService.GetWithholding((WithholdingAccountType)byte.Parse(payType), Employee.Owner); if (auto == null || auto.Status == WithholdingProtocolStatus.Submitted) { InterfaceInvokeException.ThrowCustomMsgException("该账户还没有进行代扣设置,请先登录平台进行设置!"); } if (payType == "0" && amount > auto.Amount) { InterfaceInvokeException.ThrowCustomMsgException("订单[ " + orderId + " ] 需要支付的金额超过的代扣金额上限!"); } AutoPayService.InsertAutoPay(new ChinaPay.B3B.Service.Order.Domain.AutoPay.AutoPay() { PayAccountNo = auto.AccountNo, PayType = (WithholdingAccountType)byte.Parse(payType), OrderId = oid, OrderType = (OrderType)byte.Parse(orderType), ProcessState = false, Success = false, Time = DateTime.Now }); } else { InterfaceInvokeException.ThrowParameterMissException("orderId"); } return(""); }
public object CheckRefundCondition(decimal orderId, string passenger, string voyages, int refundType, string pnr, bool DelegageCancelPNR) { var passgners = getPassengers(passenger); var _voyages = getRefundVoyages(voyages); var pnrPair = getPNRPair(pnr); var order = OrderQueryService.QueryOrder(orderId); RefundOrScrapApplyformView applyformView = null; if (refundType == -1) { applyformView = new ScrapApplyformView(); } else { applyformView = new RefundApplyformView(); var view = applyformView as RefundApplyformView; view.RefundType = (RefundType)refundType; applyformView = view; } applyformView.PNR = pnrPair; applyformView.Passengers = passgners; applyformView.Reason = "退票验证"; applyformView.DelegageCancelPNR = DelegageCancelPNR; foreach (var item in getRefundVoyages(voyages)) { applyformView.AddVoyage(item); } OrderProcessService.ApplyValidate(orderId, applyformView, CurrentUser, BasePage.OwnerOEMId); if (order == null) { throw new CustomException("订单不存在!"); } if (!SystemParamService.ValidateRefundCondition) { return(new { PNRCancled = true, TicketUnUse = true, IsNotPrinted = true, IsSameName = true, Successed = true, NeedPlatfromDeal = false, CheckCondition = false }); } var result = OrderProcessService.CheckRefundCondition(order, passgners, _voyages, pnrPair, DelegageCancelPNR, BasePage.OwnerOEMId); if (result.Item5) { return(new { PNRCancled = result.Item1, TicketUnUse = result.Item2, IsNotPrinted = result.Item3, IsSameName = result.Item4, Successed = result.Item1 && result.Item2 && result.Item3 && result.Item4, NeedPlatfromDeal = false, CheckCondition = true }); } Session["NeedPlatformCancelPNR"] = orderId; return(new { PNRCancled = result.Item1, TicketUnUse = false, IsNotPrinted = false, IsSameName = false, Successed = true, NeedPlatfromDeal = true, CheckCondition = true }); }
private void process() { showMessage("开始下一批处理"); var noPorcess = AutoPayService.QueryNoPorcess(); //var str = Environment.CurrentDirectory; string msg = ""; foreach (var item in noPorcess) { if (!_run) { break; } AccountTradeDTO tradeView = null; //处理订单 if (item.OrderType == OrderType.Order) { OrderProcessService.Payable(item.OrderId, out msg); if (string.IsNullOrEmpty(msg)) { Order order = OrderQueryService.QueryOrder(item.OrderId); tradeView = getPayTradeView(order, getPayAccountNo(item.PayType, order.Purchaser.Amount, order.Purchaser.CompanyId), ""); } } //处理申请单 else if (item.OrderType == OrderType.Postpone) { ApplyformProcessService.Payable(item.OrderId, out msg); if (string.IsNullOrEmpty(msg)) { PostponeApplyform applyform = ApplyformQueryService.QueryPostponeApplyform(item.OrderId); if (applyform.PayBill.Tradement == null) { msg = "申请单:" + item.OrderId + " 不能进行代扣,无支付信息!"; } tradeView = getPayTradeView(applyform, getPayAccountNo(item.PayType, Math.Abs(applyform.PayBill.Applier.Amount), applyform.PurchaserId), ""); } } if (item.PayType == WithholdingAccountType.Alipay) { tradeView.BuyerEmail = item.PayAccountNo; } try { if (string.IsNullOrEmpty(msg)) { global::PoolPay.DomainModel.Trade.PayTrade pay = AutoPayService.AutoPay(tradeView, item.PayType); if (item.PayType == WithholdingAccountType.Poolpay) { //如果是国付通代扣就直接修改订单状态 if (pay != null && pay.Status == global::PoolPay.DataTransferObject.PayStatus.PaySuccess) { NotifyService.PaySuccess(item.OrderId, pay.CustomParameter, pay.Id.ToString(), pay.FillChargeId.ToString(), pay.PayDate.Value, "", (pay.BuyerAccount.Character as global::PoolPay.DomainModel.Accounts.CreditAccount) == null ? "0" : "1", pay.BuyerAccount.AccountNo); } } showMessage("处理成功"); } else { showMessage("处理失败" + Environment.NewLine + "原因:" + msg); } } catch (Exception ex) { showMessage("处理失败" + Environment.NewLine + "原因:" + ex.Message); } AutoPayService.UpdateProcess(item.OrderId); System.Threading.Thread.Sleep(50); } showMessage("当前批次处理结束,共处理 " + noPorcess.Count + " 条"); }