Ejemplo n.º 1
0
        protected void btnAcceptRefund_Click(object sender, EventArgs e)
        {
            bool       flag        = true;
            string     userName    = HiContext.Current.Manager.UserName;
            string     adminRemark = Globals.StripAllTags(this.txtAdminRemark.Text);
            int        refundId    = this.Page.Request.QueryString["RefundId"].ToInt(0);
            RefundInfo refundInfo  = TradeHelper.GetRefundInfo(refundId);

            if (refundInfo == null)
            {
                this.ShowMsg("错误的退款申请信息", false);
            }
            else
            {
                OrderInfo orderInfo = OrderHelper.GetOrderInfo(refundInfo.OrderId);
                if (orderInfo == null)
                {
                    this.ShowMsg("错误的订单信息", false);
                }
                else
                {
                    decimal num = this.txtRefundMoney.Text.ToDecimal(0);
                    if (num < decimal.Zero)
                    {
                        this.ShowMsg("退款金额必须大于等于0", false);
                    }
                    else
                    {
                        if (!refundInfo.IsServiceProduct)
                        {
                            GroupBuyInfo groupbuy = null;
                            if (orderInfo.GroupBuyId > 0)
                            {
                                groupbuy = ProductBrowser.GetGroupBuy(orderInfo.GroupBuyId);
                            }
                            if (num > orderInfo.GetCanRefundAmount("", groupbuy, 0))
                            {
                                this.ShowMsg("退款金额不能大于订单/商品最大金额", false);
                                return;
                            }
                        }
                        else if (num > refundInfo.RefundAmount)
                        {
                            this.ShowMsg("退款金额不能大于可退款总额", false);
                            return;
                        }
                        if (refundInfo.HandleStatus != 0)
                        {
                            this.ShowMsg("退款状态不正确", false);
                        }
                        else if (refundInfo.IsServiceProduct || (!refundInfo.IsServiceProduct && OrderHelper.CanFinishRefund(orderInfo, refundInfo, num, false)))
                        {
                            RefundTypes refundType = refundInfo.RefundType;
                            string      userRemark = refundInfo.UserRemark;
                            MemberInfo  user       = Users.GetUser(orderInfo.UserId);
                            string      text       = "";
                            if (RefundHelper.IsBackReturn(orderInfo.Gateway) && refundInfo.RefundType == RefundTypes.BackReturn)
                            {
                                text = RefundHelper.SendRefundRequest(orderInfo, num, refundInfo.RefundOrderId, true);
                                if (text == "")
                                {
                                    if (OrderHelper.CheckRefund(orderInfo, refundInfo, num, userName, adminRemark, true, false))
                                    {
                                        VShopHelper.AppPushRecordForOrder(orderInfo.OrderId, "", EnumPushOrderAction.OrderRefund);
                                        Messenger.OrderRefund(user, orderInfo, "");
                                        this.ShowMsg("成功的完成退款并且已成功原路退回退款金额!", true, HttpContext.Current.Request.Url.ToString());
                                    }
                                }
                                else
                                {
                                    TradeHelper.SaveRefundErr(refundInfo.RefundId, text, true);
                                    this.ShowMsg("退款原路返回错误,错误信息" + text + ",请重新尝试!", false);
                                }
                            }
                            else if (OrderHelper.CheckRefund(orderInfo, refundInfo, num, userName, adminRemark, true, false))
                            {
                                Messenger.OrderRefund(user, orderInfo, "");
                                VShopHelper.AppPushRecordForOrder(orderInfo.OrderId, "", EnumPushOrderAction.OrderRefund);
                                if (refundInfo.RefundType == RefundTypes.InBalance)
                                {
                                    this.ShowMsg("成功确定了退款,退款金额已退回用户预付款帐号!", true, HttpContext.Current.Request.Url.ToString());
                                }
                                else
                                {
                                    this.ShowMsg("成功的完成了退款,请即时给用户退款", true, HttpContext.Current.Request.Url.ToString());
                                }
                            }
                        }
                    }
                }
            }
        }