protected void btnAgree_Click(object sender, EventArgs e) { try { decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { CheckPNR(); RefundOrScrapApplyform applyform = ApplyformQueryService.QueryRefundOrScrapApplyform(applyformId); IEnumerable <RefundFeeView> feeInfos = CollectFeeInfo(); if (!feeInfos.Any()) { throw new Exception("费率输入不正确!"); } string pnr = txtPNR.Text.Trim(); string bpnr = txtBPNR.Text.Trim(); var refundProcessView = new RefundProcessView { NewPNR = new PNRPair(pnr, bpnr), Items = feeInfos }; ApplyformProcessService.AgreeRefundOrScrapByProvider(applyformId, refundProcessView, CurrentUser.UserName, CurrentUser.Name); ReleaseLock(applyformId); RegisterScript(this, "alert('同意退废票成功');location.href='/OrderModule/Provide/ChangeProcessList.aspx'"); } } catch (Exception ex) { ShowExceptionMessage(ex, "同意退/废票"); } }
private void payPostponeFee(decimal applyformId) { PostponeApplyform postponeApplyform = ApplyformQueryService.QueryPostponeApplyform(applyformId); if (postponeApplyform == null) { showErrorMessage("改期申请单 [" + applyformId + "] 不存在"); } else { flights = postponeApplyform.Flights.Select(f => f.NewFlight).ToList(); string errorMessage; if (ApplyformProcessService.Payable(applyformId, out errorMessage)) { string lockErrorMsg; if (Lock(applyformId, LockRole.Purchaser, "支付改期费", out lockErrorMsg)) { bindApplyform(postponeApplyform); bindPayTypes(); } else { showErrorMessage("锁定改期申请单失败。原因:" + lockErrorMsg); } } else { showErrorMessage(errorMessage); } } }
protected void btnReDeal_Click(object sender, EventArgs e) { try { decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { var applyform = ApplyformQueryService.QueryRefundOrScrapApplyform(applyformId); //特殊原因特殊退票 提交修改服务费 if (applyform.IsSpecial && applyform is RefundApplyform && ((RefundApplyform)applyform).RefundType == RefundType.SpecialReason) { ApplyformProcessService.ReRefund(applyformId, applyform.Flights.Select(f => new PlatformProcessRefundView { AirportPair = new AirportPair(f.OriginalFlight.Departure.Code, f.OriginalFlight.Arrival.Code), ServiceCharge = decimal.Parse(ChangedServiceCharge.Value) } ), ChangeServiceChargeReason.Text, CurrentUser.UserName); } else { ApplyformProcessService.ReRefund(applyformId, CurrentUser.UserName); } ReleaseLock(applyformId); RegisterScript(this, "alert('重新退/废票成功!');location.href='" + ReturnUrl + "'", true); } } catch (Exception ex) { ShowExceptionMessage(ex, "重新退/废票"); } }
protected void btnAgree_Click(object sender, EventArgs e) { try { decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { CheckPNR(); RefundOrScrapApplyform applyform = ApplyformQueryService.QueryRefundOrScrapApplyform(applyformId); string pnr = txtPNR.Text.Trim(); string bpnr = txtBPNR.Text.Trim(); var refundProcessView = new RefundProcessView { NewPNR = new PNRPair(pnr, bpnr) }; ApplyformProcessService.AgreeRefundOrScrapByProvider(applyformId, refundProcessView, CurrentUser.UserName, CurrentUser.Name); ReleaseLock(applyformId); RegisterScript(this, "alert('同意退废票成功');location.href='" + ReturnUrl + "'"); } } catch (Exception ex) { ShowExceptionMessage(ex, "同意废票"); } }
static bool PostponeApplyformPaySuccess(decimal applyformId, string payAccount, string payTradeNo, string channelTradeNo, DateTime payTime, PayInterface payInterface, PayAccountType payAccountType, string account) { var result = false; decimal?orderId = null; var request = string.Format("申请单:{0} 支付账号:{1} 流水号:{2} 支付时间:{3} 支付接口:{4} 支付账号类型:{5} 操作员账号:{6} 通道流水号:{7} ", applyformId, payAccount, payTradeNo, payTime, payInterface.GetDescription(), payAccountType.GetDescription(), account, channelTradeNo); var response = string.Empty; try { orderId = ApplyformProcessService.PostponeFeePaySuccess(applyformId, payAccount, payTradeNo, channelTradeNo, payTime, payInterface, payAccountType, account); result = true; response = "处理成功"; } catch (Exception ex) { LogService.SaveExceptionLog(ex, "申请单支付通知 " + request); response = "处理失败 " + ex.Message; } if (orderId.HasValue) { var tradementLog = new Log.Domain.TradementLog { OrderId = orderId.Value, ApplyformId = applyformId, Request = request, Response = response, Time = DateTime.Now, Remark = "支付成功通知" }; LogService.SaveTradementLog(tradementLog); } return(result); }
public void ProcessRequest(HttpContext context) { try { PayNotifyProcessor processor = new PayNotifyProcessor(context.Request); if (processor.Execute()) { var result = false; var paramArray = processor.ExtraParams.Split('|'); decimal?orderId = null; 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(), processor.ExtraParams, processor.ChannelTradeNo); var response = string.Empty; try { orderId = ApplyformProcessService.PostponeFeePaySuccess(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; } if (orderId.HasValue) { var tradementLog = new TradementLog { OrderId = orderId.Value, ApplyformId = 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)); } }
protected void RedircetToProvider_Click(object sender, EventArgs e) { try { decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { ApplyformProcessService.ReservationCanceled(applyformId, CurrentUser.UserName); ReleaseLock(applyformId); RegisterScript(this, "alert('指向出票方成功!');location.href='" + ReturnUrl + "'", true); } } catch (Exception ex) { ShowExceptionMessage(ex, "指向出票方"); } }
protected void AgreeRefund(object sender, EventArgs e) { try { decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { ApplyformProcessService.ProviderBusinessAgreeBalanceRefund(applyformId, CurrentUser.UserName, CurrentUser.Name); ReleaseLock(applyformId); RegisterScript(this, "alert('同意差额退款成功!');location.href='" + ReturnUrl + "'", true); } } catch (Exception ex) { ShowExceptionMessage(ex, "同意差额退款"); } }
protected void btnDenyRefund_Click(object sender, EventArgs e) { try { decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { ApplyformProcessService.DenyRefundOrScrapByPlatform(applyformId, Reason.Text.Trim(), CurrentUser.UserName); ReleaseLock(applyformId); RegisterScript(this, "alert('拒绝退/废票成功!');location.href='" + ReturnUrl + "'", true); } } catch (Exception ex) { ShowExceptionMessage(ex, "拒绝退/废票"); } }
/// <summary> /// 平台拒绝差额退款 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnSubmit_click(object sender, EventArgs e) { try { decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { ApplyformProcessService.PlatformNotAgreeBalanceRefund(applyformId, CurrentUser.UserName, CurrentUser.Name, refuseReason.Value); ReleaseLock(applyformId); RegisterScript(this, "alert('拒绝差额退款成功!');location.href='" + ReturnUrl + "'", false); } } catch (Exception ex) { ShowExceptionMessage(ex, "拒绝差额退款"); } }
protected void btnAgreeRefund_Click(object sender, EventArgs e) { try { decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { ApplyformProcessService.ProviderTreasurerAgreeBalanceRefund(applyformId, CurrentUser.UserName, CurrentUser.Name); ReleaseLock(applyformId); RegisterScript("alert('同意退款成功');window.location.href='ReturnMoneyList.aspx';"); } else { showErrorMessage("参数错误"); } } catch (Exception ex) { ShowExceptionMessage(ex, "同意退款"); } }
protected void denyRefund_Submited(object sender, EventArgs e) { try { decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { ApplyformProcessService.DenyReturnMoneyByProviderTreasurer(applyformId, txtReason.Text.Trim(), CurrentUser.UserName); ReleaseLock(applyformId); RegisterScript("alert('拒绝退款成功');window.location.href='ReturnMoneyList.aspx';"); } else { showErrorMessage("参数错误"); } } catch (Exception ex) { ShowExceptionMessage(ex, "拒绝退款"); } }
/// <summary> /// 平台同意差额退款 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnProcess_click(object sender, EventArgs e) { try { decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { var feeInfo = GetBalanceRefundFee(); ApplyformProcessService.PlatformAgreeBalanceRefund(applyformId, feeInfo, CurrentUser.UserName, CurrentUser.Name); ReleaseLock(applyformId); RegisterScript(this, "alert('提交成功!');location.href='" + ReturnUrl + "'", true); } } catch (Exception ex) { ShowExceptionMessage(ex, "同意差额退款"); } }
/// <summary> /// 修改服务费并指向出票方退票 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void ToRefund(object sender, EventArgs e) { try { decimal applyformId; if (decimal.TryParse(Request.QueryString["id"], out applyformId)) { var applyform = ApplyformQueryService.QueryRefundOrScrapApplyform(applyformId); ApplyformProcessService.PlatformProcessRefundApplyform(applyformId, applyform.Flights.Select(f => new PlatformProcessRefundView { AirportPair = new AirportPair(f.OriginalFlight.Departure.Code, f.OriginalFlight.Arrival.Code), ServiceCharge = decimal.Parse(ChangedServiceCharge.Value) } ), getIncreasing(applyform.Passengers.First()), ChangeServiceChargeReason.Text, CurrentUser.UserName); ReleaseLock(applyformId); RegisterScript(this, "alert('修改服务费成功!');location.href='" + ReturnUrl + "'", true); } } catch (Exception ex) { ShowExceptionMessage(ex, "修改服务费"); } }
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(""); }
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 + " 条"); }
/// <summary> /// 查询申请单支付状态,补单 /// </summary> /// <param name="applyformId"></param> /// <returns></returns> public string QueryPaymentInfo(decimal applyformId) { bool paySuccess = false; var applyform = ApplyformQueryService.QueryApplyform(applyformId) as PostponeApplyform; if (applyform == null) { return("改期申请单不存在"); } if (applyform.Status != PostponeApplyformStatus.Agreed) { return("OK"); } try { #if (DEBUG) var tradeResult = AccountTradeService.PayTradeQuery(applyformId.ToString()); if (tradeResult == null) { return("查询支付信息失败"); } if (tradeResult.Status != PayStatus.PaySuccess) { return("没有查询到支付成功信息"); } var paramArray = tradeResult.CustomParameter.Split('|'); if (paramArray.Length >= 3) { var operatorAccount = paramArray[2]; ChinaPay.B3B.DataTransferObject.Common.PayInterface payInterface = ChinaPay.B3B.Service.Tradement.NotifyService.ParsePayInterface(tradeResult.payInterface); ChinaPay.B3B.DataTransferObject.Common.PayAccountType payAccountType = ChinaPay.B3B.Service.Tradement.NotifyService.ParsePayAccountType(tradeResult.payAccountType); ApplyformProcessService.PostponeFeePaySuccess( applyform.Id, tradeResult.AccountNo, tradeResult.TradeNo, tradeResult.FillChargeId.ToString(),//channelTradeNo tradeResult.PayTime.Value, payInterface, payAccountType, operatorAccount); paySuccess = true; } LogService.SaveTradementLog(new TradementLog() { OrderId = applyform.OrderId, ApplyformId = applyformId, Type = TradementBusinessType.SubPay, Request = string.Empty, Response = string.Empty, Remark = "改期支付补单", Time = DateTime.Now }); #else QueryPaymentProcess queryPayment = new QueryPaymentProcess(applyformId.ToString()); if (queryPayment.Execute() && queryPayment.PaySuccess) { var paramArray = queryPayment.ExtraParams.Split('|'); if (paramArray.Length >= 3) { var operatorAccount = paramArray[2]; ApplyformProcessService.PostponeFeePaySuccess( applyform.Id, queryPayment.PayAccount, queryPayment.PayTradeNo, queryPayment.ChannelTradeNo, queryPayment.PayTime, queryPayment.PayChannel, queryPayment.PayAccountType, operatorAccount); paySuccess = true; } LogService.SaveTradementLog(new TradementLog() { OrderId = applyform.OrderId, ApplyformId = applyformId, Type = TradementBusinessType.SubPay, Request = string.Empty, Response = queryPayment.ExtraParams, Remark = "改期支付补单", Time = DateTime.Now }); } else { return("查询支付信息失败"); } #endif } catch (Exception ex) { LogService.SaveExceptionLog(ex, "补单"); paySuccess = false; } return(paySuccess?"OK":"ERROR"); }