예제 #1
0
 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, "同意退/废票");
     }
 }
예제 #2
0
        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);
                }
            }
        }
예제 #3
0
 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, "重新退/废票");
     }
 }
예제 #4
0
 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, "同意废票");
     }
 }
예제 #5
0
        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);
        }
예제 #6
0
 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));
     }
 }
예제 #7
0
 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, "指向出票方");
     }
 }
예제 #8
0
 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, "同意差额退款");
     }
 }
예제 #9
0
 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, "拒绝退/废票");
     }
 }
예제 #10
0
 /// <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, "拒绝差额退款");
     }
 }
예제 #11
0
 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, "同意退款");
     }
 }
예제 #12
0
 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, "拒绝退款");
     }
 }
예제 #13
0
        /// <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, "同意差额退款");
            }
        }
예제 #14
0
 /// <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, "修改服务费");
     }
 }
예제 #15
0
        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("");
        }
예제 #16
0
        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 + " 条");
        }
예제 #17
0
        /// <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");
        }