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 { } }
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); } }
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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
//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 * */ }
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(); }
/// <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); }
public void Send(Alipay user) { base.transactionType = MessageQueueTransactionType.Single; base.Send(user); }