Exemplo n.º 1
0
        public static bool SellerCharge(string sellerId, decimal balance, string operatorId)
        {
            if (sellerId.IsEmpty())
            {
                throw new ArgumentNullException("sellerId");
            }
            if (operatorId.IsEmpty())
            {
                throw new ArgumentNullException("operatorId");
            }
            if (balance <= 0)
            {
                throw new ArgumentNullException("balance");
            }

            IParkSeller factory = ParkSellerFactory.GetFactory();
            ParkSeller  model   = factory.QueryBySellerId(sellerId);

            if (model == null)
            {
                throw new MyException("商家不存在");
            }

            using (DbOperator dbOperator = ConnectionManager.CreateConnection())
            {
                try
                {
                    dbOperator.BeginTransaction();
                    ParkOrder order = ParkOrderServices.MarkSellerChargeOrder(model, balance, operatorId, OrderSource.ManageOffice, OrderPayWay.Cash, dbOperator);
                    if (order == null)
                    {
                        throw new MyException("创建充值订单失败");
                    }

                    bool result = factory.SellerRecharge(sellerId, balance, dbOperator);
                    if (!result)
                    {
                        throw new MyException("取消暂停计划失败");
                    }
                    dbOperator.CommitTransaction();

                    ParkSeller newSeller = factory.QueryBySellerId(sellerId);
                    if (newSeller != null)
                    {
                        OperateLogServices.AddOperateLog(OperateType.Update, string.Format("sellerId:{0},充值:{1},余额为:{2}", sellerId, balance, newSeller.Balance));
                    }
                    return(result);
                }
                catch (Exception ex)
                {
                    dbOperator.RollbackTransaction();
                    throw ex;
                }
            }
        }
Exemplo n.º 2
0
        private static bool SyncSellerRecharge(OnlineOrder order, OrderPayWay payWay)
        {
            using (DbOperator dbOperator = ConnectionManager.CreateConnection())
            {
                IParkSeller factory = ParkSellerFactory.GetFactory();
                ParkSeller  model   = factory.QueryBySellerId(order.InOutID);
                if (model == null)
                {
                    throw new MyException("商家不存在");
                }

                dbOperator.BeginTransaction();
                try
                {
                    ParkOrder pkOrder = ParkOrderServices.MarkSellerChargeOrder(model, order.Amount, model.SellerID, OrderSource.WeiXin, payWay, dbOperator);
                    if (order == null)
                    {
                        throw new MyException("创建充值订单失败");
                    }

                    bool result = factory.SellerRecharge(model.SellerID, order.Amount, dbOperator);
                    if (!result)
                    {
                        throw new MyException("商家充值失败");
                    }
                    dbOperator.CommitTransaction();
                    return(result);
                }
                catch (Exception ex) {
                    dbOperator.RollbackTransaction();
                    ExceptionsServices.AddExceptions(ex, "商家微信充值通知失败,订单编号:" + order.OrderID);
                    return(false);
                }
            }
        }
Exemplo n.º 3
0
        public static ParkSeller QueryBySellerId(string sellerId)
        {
            if (sellerId.IsEmpty())
            {
                throw new ArgumentNullException("sellerId");
            }

            IParkSeller factory = ParkSellerFactory.GetFactory();

            return(factory.QueryBySellerId(sellerId));
        }
Exemplo n.º 4
0
        /// <summary>
        /// 发送同步支付模板信息
        /// </summary>
        /// <param name="order"></param>
        /// <returns></returns>
        private static bool SendSyncResultMessage(OnlineOrder order)
        {
            try
            {
                if (order.PaymentChannel != PaymentChannel.WeiXinPay)
                {
                    return(true);
                }

                switch (order.OrderType)
                {
                case OnlineOrderType.MonthCardRecharge:
                {
                    return(TemplateMessageServices.SendMonthCardRechargeSuccess(order.CompanyID, order.PlateNo, order.PKName, order.Amount, order.ExitTime, order.PayAccount));
                }

                case OnlineOrderType.ParkFee:
                {
                    return(TemplateMessageServices.SendParkCarPaymentSuccess(order.CompanyID, order.PlateNo, order.PKName, order.Amount, order.EntranceTime, order.OrderTime, order.RealPayTime, order.ExitTime, order.PayAccount));
                }

                case OnlineOrderType.PkBitBooking:
                {
                    return(true);
                }

                case OnlineOrderType.SellerRecharge:
                {
                    IParkSeller factory = ParkSellerFactory.GetFactory();
                    ParkSeller  model   = factory.QueryBySellerId(order.InOutID);
                    if (model == null)
                    {
                        throw new MyException("商家不存在");
                    }

                    return(TemplateMessageServices.SendSellerRechargeSuccess(order.CompanyID, order.Amount, model.Balance, order.RealPayTime, order.PayAccount));
                }

                default: throw new MyException("同步支付结果时找不到订单类型");
                }
            }
            catch (Exception ex)
            {
                ExceptionsServices.AddExceptionToDbAndTxt("OnlineOrderServices", "发送模板信息失败:订单编号:" + order.OrderID + "", ex, LogFrom.WeiXin);
                return(false);
            }
        }