Ejemplo n.º 1
0
 public void alipay(object obj)
 {
     try
     {
         Alipay   alipay = null;
         Recharge charge = null;
         // OrderLog log = null;
         while (true)
         {
             alipay = alipayQueue.ReceiveAlipay();
             // objs = regQueue.GetAllUserMessage();
             if (alipay != null)
             {
                 Console.WriteLine("支付宝付款消息Alipay" + alipay.out_trade_no);
                 charge = alipayQueue.ReceiveRecharge();
                 if (charge != null)
                 {
                     Console.WriteLine("支付宝付款消息Recharge" + charge.OrderID);
                     // log = alipayQueue.ReceiveOrderLog();
                     //  if (log != null)
                     // {
                     //Console.WriteLine("支付宝付款消息log" + log.Remark);
                     pays.Addpay(charge);
                     pays.Addalipay(alipay);
                     // pays.Addlog(log);
                     // }
                 }
             }
             Thread.Sleep(100);
         }
     }
     catch
     {
     }
 }
Ejemplo n.º 2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            int    id      = Request.QueryString["orderid"].ToInt();
            string name    = Request.QueryString["name"].Trim2();
            string number  = Request.QueryString["number"].Trim2();
            string backUrl = Request.QueryString["backUrl"].Trim2();//成功后跳转的 ss

            //是否重新支付
            if (name == "" && number != "")
            {
                string where =
                    " id=(select Productid from  OrderList where orderid=(select Id from [Order] where OrderNo='" +
                    number + "'))";
                var    plist       = pbll.GetAll("productname", where, "", "");
                string productName = plist.Entity[0].ProductName;
                var    url         = string.Format("number={1}&backUrl={0}", Server.UrlEncode(backUrl), number);
                var    pay         = new Alipay();
                Model = pay.GetBuildRequest(productName, productName, TtotalFee, url, number);
                //Model = pay.GetBuildRequest(productName, productName, (decimal)0.01, url, number);
            }
            else
            {
                var package = bll.GetByPrimaryKey(id);
                var url     = string.Format("number={1}&backUrl={0}", Server.UrlEncode(backUrl), package.Entity.OrderNo);
                var pay     = new Alipay();
                TtotalFee = (decimal)package.Entity.TotalPrice;
                Model     = pay.GetBuildRequest(name, name, TtotalFee, url, package.Entity.OrderNo);
                //Model = pay.GetBuildRequest(name, name, (decimal)0.01, url, package.Entity.OrderNo);
            }
        }
Ejemplo n.º 3
0
        private Alipay FormatDataAlipay(DataTable dt)
        {
            Alipay info = new Alipay();

            info.GUID    = dt.Rows[0]["GUID"].ToString().Trim();
            info.Num     = dt.Rows[0]["Num"].ToString().Trim();
            info.Per     = dt.Rows[0]["per"].ToString().Trim();
            info.Count   = dt.Rows[0]["count"].ToString().Trim();
            info.EndDate = dt.Rows[0]["enddate"].ToString().Trim();

            return(info);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 判断该订单的优惠券是否赠送过-因为数据库优惠券赠送表没加订单号,所以暂时用每天赠送一个代替
        /// </summary>
        /// <param name="shop"></param>
        /// <returns></returns>
        public bool CheckUserCanGetAlipay(Trade trade, Alipay alipay)
        {
            string sql = "SELECT guid FROM TCS_AlipayDetail WITH (NOLOCK) WHERE buynick= '" + trade.BuyNick + "' AND guid = '" + alipay.GUID + "'";

            Console.Write(sql + "\r\n");
            DataTable dt = utils.ExecuteDataTable(sql);

            //获取优惠券最大赠送数量
            if (dt.Rows.Count >= int.Parse(alipay.Per))
            {
                return(false);
            }
            return(true);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 判断该订单的优惠券是否赠送过-因为数据库优惠券赠送表没加订单号,所以暂时用每天赠送一个代替
        /// </summary>
        /// <param name="shop"></param>
        /// <returns></returns>
        public bool CheckAlipayExpired(Trade trade, Alipay alipay)
        {
            string sql = "SELECT guid FROM TCS_Alipay WITH (NOLOCK) WHERE guid = '" + alipay.GUID + "' AND DATEDIFF(d, GETDATE(), enddate) > 0";

            Console.Write(sql + "\r\n");
            DataTable dt = utils.ExecuteDataTable(sql);

            if (dt.Rows.Count > 0)
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 每订单最多赠送一个
        /// </summary>
        /// <param name="shop"></param>
        /// <returns></returns>
        public bool CheckOrderAlipayCanSend(Trade trade, Alipay alipay)
        {
            string sql = "SELECT guid FROM [TCS_AlipayDetail] WITH (NOLOCK) WHERE buynick= '" + trade.BuyNick + "' AND guid = '" + alipay.GUID + "' AND orderid = '" + trade.Tid + "'";

            Console.Write(sql + "\r\n");
            DataTable dt = utils.ExecuteDataTable(sql);

            if (dt.Rows.Count > 0)
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 判断支付宝红包是否已经赠送完毕
        /// </summary>
        /// <param name="shop"></param>
        /// <returns></returns>
        public bool CheckAlipayCanSend(Trade trade, Alipay alipay)
        {
            string sql = "SELECT guid FROM TCS_Alipay WITH (NOLOCK) WHERE guid = '" + alipay.GUID + "' AND used >= count";

            Console.Write(sql + "\r\n");
            DataTable dt = utils.ExecuteDataTable(sql);

            if (dt.Rows.Count != 0)
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 8
0
        //static void Main(string[] args)
        //{
        //    #region
        //    //BankAccount account = new BankAccount();//创建银行账号
        //    //Command commandIn = new MoneyInCommand(account,500);//创建一个存款500的命令
        //    //Invoker invoker = new Invoker();// 创建一个调度者

        //    //invoker.SetCommand(commandIn);//调度一个 存款 命令
        //    //invoker.ExecuteCommand();//执行刚调度的命令

        //    //Command commandIn2 = new MoneyInCommand(account,500);//创建一个 再次 存入 500元 的命令
        //    //invoker.SetCommand(commandIn2);//调度这个 又存入500元的 命令
        //    //invoker.ExecuteCommand();//执行刚调度的命令

        //    //Command commandOut = new MoneyOutCommand(account, 300);//创建一个 取款 300元 的命令
        //    //invoker.SetCommand(commandOut);//调度一个 取款命令
        //    //invoker.ExecuteCommand();//执行刚调度的命令

        //    //Command commandTransferIn = new TransferInCommand(account,8000);//创建一个 转入 8000元 的命令
        //    //invoker.SetCommand(commandTransferIn);//调度这个 转入命令
        //    //invoker.ExecuteCommand();//执行刚调度的命令

        //    //Command commandTransferOut = new TransferOutCommand(account,1500);//穿件一个 转出 1500元 的命令
        //    //invoker.SetCommand(commandTransferOut);//调度这个 转出命令
        //    //invoker.ExecuteCommand();//执行刚调度的命令

        //    ////AlipayAccount alipayAccount = new AlipayAccount();
        //    ////Command alipayIn = new AlipayAccountMoneyInCommand(alipayAccount, 8888);
        //    ////AlipayUser alipayUser = new AlipayUser();

        //    ////alipayUser.SetCommand(alipayIn);
        //    ////alipayUser.ExecuteCommand();

        //    //AlipayAccount alipayAccount = new AlipayAccount();
        //    //Command alipayIn = new AlipayAccountMoneyInCommand(alipayAccount, 8888);
        //    //Invoker alipayUser = new Invoker();

        //    //alipayUser.SetCommand(alipayIn);
        //    //alipayUser.ExecuteCommand();

        //    //Command alipayAccountTransferInCommand = new AlipayAccountTransferInCommand(alipayAccount ,5000);
        //    //alipayUser.SetCommand(alipayAccountTransferInCommand);
        //    //alipayUser.ExecuteCommand();
        //    #endregion

        //    FinancialInstitution financialInstitution = new Alipay();//金融机构类型:支付宝
        //    ConcreteMoneyInCommand command
        //        = new ConcreteMoneyInCommand(financialInstitution, 1000);
        //    Invoker invoker = new Invoker();
        //    invoker.SetCommand(command);//装载命令
        //    invoker.ExecuteCommand();//执行命令


        //    financialInstitution = new ICBC();//金融机构类型:支付宝
        //    command
        //        = new ConcreteMoneyInCommand(financialInstitution, 5000);
        //    //Invoker invoker = new Invoker();
        //    invoker.SetCommand(command);//装载命令
        //    invoker.ExecuteCommand();//执行命令

        //    Console.Read();

        //}

        #endregion

        static void Main(string[] args)
        {
            FinancialInstitution financialInstitution; //抽象一个金融机构类型
            Invoker invoker = new Invoker();           //抽象一个App
            Command moneyInCommand;                    //抽象一个存钱指令
            Command transferInCommand;                 //抽象一个转入指令


            financialInstitution = new Alipay();                                           //new一个金融机构类型:支付宝
            moneyInCommand       = new ConcreteMoneyInCommand(financialInstitution, 1000); //new一个存钱指令
            invoker.SetCommand(moneyInCommand);                                            //装载存钱命令
            invoker.ExecuteCommand();                                                      //执行存钱命令

            transferInCommand = new ConcreteTransferInCommand(financialInstitution, 888);  //new一个转入指令
            invoker.SetCommand(transferInCommand);                                         //装载转入指令
            invoker.ExecuteCommand();                                                      //执行转入指令


            financialInstitution = new ICBC();//new一个金融机构类型:工商银行
            moneyInCommand       = new ConcreteMoneyInCommand(financialInstitution, 5000);

            invoker.SetCommand(moneyInCommand); //装载命令
            invoker.ExecuteCommand();           //执行命令

            Console.Read();

            /*
             * 白天呢 继续在
             * ConcreteCommand(具体命令)中扩展出
             * ConcreteMoneyOutCommand.cs
             * ConcreteTransferOutCommand.cs
             * 并在客户端中 调试 实现
             * 上传到SVN中,终于算是真正的消化吸收命令模式了
             * 以后有时间,把以前学习的抽象命令Command为何不行的分析出来,融会贯通
             * 姜彦20180302 00:53
             *
             *  中国建设银行——CCB
             *  中国农业银行——ABC
             *  中国工商银行——ICBC
             *  中国银行——BOC
             *  中国民生银行——CMBC
             *  招商银行 ——CMB
             *  兴业银行 ——CIB
             *  交通银行——BCM
             *  中国光大银行——CEB
             *  广东发展银行——GDB
             *
             */
        }
Ejemplo n.º 9
0
        static void Main(string[] args)
        {
            #region
            //BankAccount account = new BankAccount();//创建银行账号
            //Command commandIn = new MoneyInCommand(account,500);//创建一个存款500的命令
            //Invoker invoker = new Invoker();// 创建一个调度者

            //invoker.SetCommand(commandIn);//调度一个 存款 命令
            //invoker.ExecuteCommand();//执行刚调度的命令

            //Command commandIn2 = new MoneyInCommand(account,500);//创建一个 再次 存入 500元 的命令
            //invoker.SetCommand(commandIn2);//调度这个 又存入500元的 命令
            //invoker.ExecuteCommand();//执行刚调度的命令

            //Command commandOut = new MoneyOutCommand(account, 300);//创建一个 取款 300元 的命令
            //invoker.SetCommand(commandOut);//调度一个 取款命令
            //invoker.ExecuteCommand();//执行刚调度的命令

            //Command commandTransferIn = new TransferInCommand(account,8000);//创建一个 转入 8000元 的命令
            //invoker.SetCommand(commandTransferIn);//调度这个 转入命令
            //invoker.ExecuteCommand();//执行刚调度的命令

            //Command commandTransferOut = new TransferOutCommand(account,1500);//穿件一个 转出 1500元 的命令
            //invoker.SetCommand(commandTransferOut);//调度这个 转出命令
            //invoker.ExecuteCommand();//执行刚调度的命令

            ////AlipayAccount alipayAccount = new AlipayAccount();
            ////Command alipayIn = new AlipayAccountMoneyInCommand(alipayAccount, 8888);
            ////AlipayUser alipayUser = new AlipayUser();

            ////alipayUser.SetCommand(alipayIn);
            ////alipayUser.ExecuteCommand();

            //AlipayAccount alipayAccount = new AlipayAccount();
            //Command alipayIn = new AlipayAccountMoneyInCommand(alipayAccount, 8888);
            //Invoker alipayUser = new Invoker();

            //alipayUser.SetCommand(alipayIn);
            //alipayUser.ExecuteCommand();

            //Command alipayAccountTransferInCommand = new AlipayAccountTransferInCommand(alipayAccount ,5000);
            //alipayUser.SetCommand(alipayAccountTransferInCommand);
            //alipayUser.ExecuteCommand();
            #endregion

            FinancialInstitution financialInstitution = new Alipay();//金融机构类型:支付宝
            ConcreteFinancialInstitutionCommand command
                = new ConcreteFinancialInstitutionCommand(financialInstitution, 1000);
            Invoker invoker = new Invoker();
            invoker.SetCommand(command); //装载命令
            invoker.ExecuteCommand();    //执行命令


            financialInstitution = new ICBC();//金融机构类型:支付宝
            command
                = new ConcreteFinancialInstitutionCommand(financialInstitution, 5000);
            //Invoker invoker = new Invoker();
            invoker.SetCommand(command); //装载命令
            invoker.ExecuteCommand();    //执行命令

            Console.Read();
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 判断是否符合赠送条件
        /// </summary>
        /// <param name="shop"></param>
        /// <param name="trade"></param>
        /// <returns></returns>
        private bool CheckAlipaySend(ShopInfo shop, TradeRate tradeRate, Trade trade)
        {
            TradeRateData data   = new TradeRateData();
            string        result = string.Empty;

            //是否开启赠送优惠券
            if (shop.IsAlipay == "0")
            {
                result = "卖家没有开启支付宝红包赠送!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //判断该用户是否开启了发货短信
            if (int.Parse(shop.MsgCount) <= 0)
            {
                result = "卖家没有短信,无法通过短信告之客户支付宝红包卡号密码!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //不是好评不赠送
            if (tradeRate.Result != "good")
            {
                result = "买家没有给好评,不赠送支付宝红包!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //礼品黑名单不赠送
            CouponData couponData = new CouponData();

            if (couponData.IsBlack(trade))
            {
                result = "买家【" + trade.BuyNick + "】在礼品黑名单中,不赠送支付宝红包!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //没有购买指定商品不送
            if (shop.IsItem == "1" && shop.ItemList.Length != 0)
            {
                //查看订单是否包含指定商品
                if (shop.ItemList.IndexOf(trade.NumIid) == -1)
                {
                    result = "买家订单商品为【" + trade.NumIid + "】,不包含指定商品【" + shop.ItemList + "】,不赠送支付宝红包!";
                    data.UpdateTradeRateResultAlipay(tradeRate, result);
                    return(false);
                }
            }

            //没有在规定时间内好评不赠送 (self)
            if (trade.ShippingType == "self" && (DateTime.Parse(tradeRate.Created) - DateTime.Parse(trade.SendTime)).TotalSeconds > int.Parse(shop.MinDateSelf) * 86400)
            {
                result = "没有在规定时间内好评,该物流配送状态不可查,按照发货时间开始计算,发货时间是【" + trade.SendTime + "】,评价时间是【" + tradeRate.Created + "】,周期超过了卖家设定的最短时间【" + shop.MinDateSelf + "】天,不赠送支付宝红包!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //没有在规定时间内好评不赠送 (system)
            if (trade.ShippingType == "system" && (DateTime.Parse(tradeRate.Created) - DateTime.Parse(trade.DeliveryEnd)).TotalSeconds > int.Parse(shop.MinDateSystem) * 86400)
            {
                result = "没有在规定时间内好评,该物流配送状态可查,按照物流签收时间开始计算,物流签收时间是【" + trade.DeliveryEnd + "】,评价时间是【" + tradeRate.Created + "】,周期超过了卖家设定的最短时间【" + shop.MinDateSystem + "】天,不赠送支付宝红包!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //使用系统默认的好评和过期自动好评不赠送
            if (shop.IsCancelAuto == "1" &&
                ((tradeRate.Content == "好评!" && shop.Cancel1 == "1") ||
                 ((tradeRate.Content == "评价方未及时做出评价,系统默认好评!" || tradeRate.Content == "评价方未及时做出评价,系统默认好评!") && shop.Cancel2 == "1")
                ))
            {
                result = "卖家设置了默认好评不赠送支付宝红包,此买家给的是系统默认评价,不赠送支付宝红包!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }


            CouponData dbCoupon = new CouponData();
            Alipay     alipay   = dbCoupon.GetAlipayInfoById(shop);


            //每订单最多赠送一个
            if (!dbCoupon.CheckOrderAlipayCanSend(trade, alipay))
            {
                result = "每订单最多赠送一个支付宝红包!";
                data.UpdateTradeRateResult(tradeRate, result);
                return(false);
            }

            //超过了每人的最大领取数量不赠送
            if (!dbCoupon.CheckUserCanGetAlipay(trade, alipay))
            {
                result = "卖家设置了红包【" + alipay.GUID + "】的最大领取数量是【" + alipay.Per + "】,此买家已经领取了【" + alipay.Per + "】张,所以不再赠送支付宝红包!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //超出了优惠券最大赠送量不赠送
            if (!dbCoupon.CheckAlipayCanSend(trade, alipay))
            {
                result = "系统赠送的支付宝红包超出了卖家设置的最大赠送数量,所以不再赠送支付宝红包!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            //包含了指定的关键字赠送或者不赠送
            if (shop.IsKeyword == "1")
            {
                //先判定字数是否满足条件
                if (tradeRate.Content.Length < int.Parse(shop.WordCount))
                {
                    result = "卖家开启了评价内容自动审核,此评价的字数是【" + tradeRate.Content.Length.ToString() + "】个字,小于卖家设置的最少评论字数【" + shop.WordCount + "】个字,所以不赠送支付宝红包!";
                    data.UpdateTradeRateResultAlipay(tradeRate, result);
                    return(false);
                }

                //判定是否为差评关键字判断
                if (shop.KeywordIsBad == "1")
                {
                    if (shop.BadKeyword != "")
                    {
                        int      isInclude = 0;
                        string   badword   = string.Empty;
                        string[] keyArray  = shop.BadKeyword.Split('|');
                        for (int i = 0; i < keyArray.Length; i++)
                        {
                            if (keyArray[i].Trim() != "")
                            {
                                if (tradeRate.Content.IndexOf(keyArray[i].Trim()) != -1)
                                {
                                    badword   = keyArray[i].Trim();
                                    isInclude = 1;
                                    break;
                                }
                            }
                        }

                        //判定
                        if (isInclude == 1)
                        {
                            result = "卖家开启了评价内容自动审核,买家评价包含差评关键字【" + badword + "】,所以不赠送支付宝红包!";
                            data.UpdateTradeRateResultAlipay(tradeRate, result);
                            return(false);
                        }
                    }
                }
                else
                {
                    //再判定是否包含关键字
                    if (shop.Keyword != "")
                    {
                        int      isInclude = 0;
                        string[] keyArray  = shop.Keyword.Split('|');
                        for (int i = 0; i < keyArray.Length; i++)
                        {
                            if (keyArray[i].Trim() != "")
                            {
                                if (tradeRate.Content.IndexOf(keyArray[i].Trim()) != -1)
                                {
                                    isInclude = 1;
                                    break;
                                }
                            }
                        }

                        //判定
                        if (isInclude == 0)
                        {
                            result = "卖家开启了评价内容自动审核,买家评价没有包含关键字,所以不赠送支付宝红包!";
                            data.UpdateTradeRateResultAlipay(tradeRate, result);
                            return(false);
                        }
                    }
                }
            }

            //如果该支付宝红包已经过期
            if (dbCoupon.CheckAlipayExpired(trade, alipay))
            {
                result = "该支付宝红包已经过期,所以不再赠送!";
                data.UpdateTradeRateResultAlipay(tradeRate, result);
                return(false);
            }

            return(true);
        }
Ejemplo n.º 11
0
 public void Send(Alipay user)
 {
     base.transactionType = MessageQueueTransactionType.Single;
     base.Send(user);
 }