private void CouponComment() { int cid = GetInt("couponid"); int uid = GetInt("uid"); string msg = GetString("message"); var coupon = CouponHelper.GetItem(cid); Comment c = new Comment(); c.SellerId = coupon.SellerId; c.TypeId = coupon.Id; c.UserId = uid; c.Content = msg; c.Type = CommentType.Coupons; //冗余两个字段 c.Img = coupon.ImgUrl; c.Title = coupon.Title; try { CommentHelper.Create(c); coupon.Commentnum += 1; CouponHelper.Update(coupon); } catch { ReturnErrorMsg("fail"); throw; } var user = AccountHelper.GetUser(uid); ExtcreditLog log = new ExtcreditLog(); if (!ExtcreditLogHelper.JudgeExtcreditGet(ExtcreditSourceType.CommentCoupon, cid, uid)) { //积分获得 log.UserId = uid; log.SellerId = user.SellerId; log.SourceId = cid; var setting = SystemHelper.GetMerchantExtend(user.SellerId); log.Extcredit = setting != null ? setting.CommentIntegral : 0; log.Type = ExtcreditSourceType.CommentCoupon; log.CreateTime = DateTime.Now; ExtcreditLogHelper.AddExtcreditLog(log); user.Integral += log.Extcredit; AccountHelper.SaveAccount(user); } //ReturnCorrectMsg("评论成功"); JsonTransfer jt = new JsonTransfer(); jt.Add("data", new IntegralData(log.Extcredit)); jt.AddSuccessParam(); Response.Write(DesEncrypt(jt).ToLower()); Response.End(); }
private void ActiveComment(HttpContext context) { int aid = GetInt("newid"); int uid = GetInt("uid"); var user = AccountHelper.GetUser(uid); string msg = GetString("message"); var active = ActiveHelper.GetItem(aid); Comment c = new Comment(); c.SellerId = active.SellerId; c.TypeId = active.Id; c.UserId = uid; c.Content = msg; c.Type = CommentType.Avtive; //冗余两个字段 c.Img = active.CoverImgUrl; c.Title = active.Title; try { CommentHelper.Create(c); active.Commentnum += 1; ActiveHelper.Update(active); } catch { ReturnErrorMsg("fail"); throw; } ExtcreditLog log = new ExtcreditLog(); var merchantExtend = SystemHelper.GetMerchantExtend(user.SellerId); if (!ExtcreditLogHelper.JudgeExtcreditGet(ExtcreditSourceType.CommentActive, aid, uid)) { //积分获得 log.UserId = uid; log.SellerId = user.SellerId; log.SourceId = aid; log.Extcredit = merchantExtend != null ? merchantExtend.CommentIntegral : 0; log.Type = ExtcreditSourceType.CommentActive; log.CreateTime = DateTime.Now; ExtcreditLogHelper.AddExtcreditLog(log); user.Integral += log.Extcredit; AccountHelper.SaveAccount(user); } //ReturnCorrectMsg("评论成功"); JsonTransfer jt = new JsonTransfer(); jt.Add("data", new IntegralData(log.Extcredit)); jt.AddSuccessParam(); Response.Write(DesEncrypt(jt).ToLower()); Response.End(); }
/// <summary> /// 图片评论 /// </summary> /// <returns></returns> public void ImgComment() { int userId = GetInt("uid"); int imgId = GetInt("pid"); string msg = GetString("message"); var user = AccountHelper.GetUser(userId); SourceMaterial sm = SourceMaterialHelper.GetItem(imgId); Comment c = new Comment(); c.SellerId = sm.SellerId; c.TypeId = sm.Id; c.UserId = userId; c.Content = msg; c.Type = CommentType.Img; //冗余两个字段 c.Img = sm.Url; c.Title = sm.Title; try { CommentHelper.Create(c); sm.Commentnum += 1; SourceMaterialHelper.Update(sm); } catch { ReturnErrorMsg("fail"); throw; } ExtcreditLog log = new ExtcreditLog(); if (!ExtcreditLogHelper.JudgeExtcreditGet(ExtcreditSourceType.CommentImg, imgId, userId)) { //积分获得 log.UserId = userId; log.SellerId = user.SellerId; log.SourceId = imgId; var setting = SystemHelper.GetMerchantExtend(user.SellerId); log.Extcredit = setting != null ? setting.CommentIntegral : 0; log.Type = ExtcreditSourceType.CommentImg; log.CreateTime = DateTime.Now; ExtcreditLogHelper.AddExtcreditLog(log); user.Integral += log.Extcredit; AccountHelper.SaveAccount(user); } //ReturnCorrectMsg("评论成功"); JsonTransfer jt = new JsonTransfer(); jt.Add("data", new IntegralData(log.Extcredit)); jt.AddSuccessParam(); Response.Write(DesEncrypt(jt).ToLower()); Response.End(); }
protected void Page_Load(object sender, EventArgs e) { logger.Info("支付宝充值回调开始notify_url"); logger.Info("开始解析参数"); Dictionary <string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { //logger.Info("判断有带参数"); Notify aliNotify = new Notify(); var sign = Request.Form["sign"]; logger.InfoFormat("验证签名:{0}", sign); bool verifyResult = aliNotify.VerifyNotify(sPara, sign); if (verifyResult)//验证成功 { logger.Info("签名通过验证"); ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //解密(如果是RSA签名需要解密,如果是MD5签名则下面一行清注释掉) //sPara = aliNotify.Decrypt(sPara); //XML解析notify_data数据 try { //XmlDocument xmlDoc = new XmlDocument(); //string notify_data = sPara["notify_data"]; ////logger.InfoFormat("notify_data:{0}", notify_data); //xmlDoc.LoadXml(notify_data); //商户订单号 string out_trade_no = sPara["out_trade_no"]; //xmlDoc.SelectSingleNode("/notify/out_trade_no").InnerText; //支付宝交易号 string trade_no = sPara["trade_no"]; //xmlDoc.SelectSingleNode("/notify/trade_no").InnerText; //交易状态 string trade_status = sPara["trade_status"]; //xmlDoc.SelectSingleNode("/notify/ logger.InfoFormat("out_trade_no:{0},trade_no:{1},trade_status:{2}", out_trade_no, trade_no, trade_status); if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 if (Utility.IsNum(out_trade_no)) { var id = Convert.ToInt32(out_trade_no); var chargeLog = ChargeLogHelper.GetChargeLog(id); if (chargeLog != null && chargeLog.Status == 0) { //添加 var user = AccountHelper.GetUser(chargeLog.UserId); if (user == null) { logger.ErrorFormat("不存在用户Id={0}", chargeLog.UserId); } else { //交易金额 double total_fee = Convert.ToDouble(sPara["total_fee"]); var setting = SystemHelper.GetMerchantExtend(chargeLog.SellerId); ExtcreditLog log = new ExtcreditLog(); log.UserId = chargeLog.UserId; log.SellerId = chargeLog.SellerId; log.SourceId = DateTime.Now.GetUnixTime(); log.Extcredit = (int)(chargeLog.Money * 1.0 * (setting != null ? setting.ChargeIntegral : 0)); log.Type = ExtcreditSourceType.Charge; ExtcreditLogHelper.AddExtcreditLog(log); logger.InfoFormat("充值之前;Integral={0},充值之后:Integral:{1}", user.Integral, user.Integral + log.Extcredit); user.Integral = user.Integral + log.Extcredit; var money = user.Money + chargeLog.Money; logger.InfoFormat("充值之前;Money={0},充值之后:Money:{1}", user.Money, money); user.Money = money; user.TotalRecharge += chargeLog.Money; //保存用户信息 AccountHelper.SaveAccount(user); var merchant = MerchantHelper.GetMerchant(chargeLog.SellerId); if (merchant != null) { merchant.Money = user.Money; MerchantHelper.SaveMerchant(merchant); } //更新充值记录 //chargeLog.OrderId = trade_no; //更新第三方订单id chargeLog.Status = RechargeStatus.Success; ChargeLogHelper.UpdateStatus(chargeLog, trade_no); logger.InfoFormat("充值成功;UserId={1},Money={0},ChargeLogId:{2},total_fee:{3}", chargeLog.Money, chargeLog.UserId, id, total_fee); } } else if (chargeLog == null) { logger.ErrorFormat("不存在充值记录Id={0}", id); } else { logger.Error("该充值记录已处理过"); } } else { logger.Error("商户订单号不是int型"); } Response.Write("success"); //请不要修改或删除 } //else if (trade_status == "TRADE_SUCCESS") //{ // //判断该笔订单是否在商户网站中已经做过处理 // //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // //如果有做过处理,不执行商户的业务程序 // //注意: // //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 // Response.Write("success"); //请不要修改或删除 //} else { if (Utility.IsNum(out_trade_no)) { var id = Convert.ToInt32(out_trade_no); //更新充值记录 var chargeLog = ChargeLogHelper.GetChargeLog(id); if (chargeLog != null) { logger.ErrorFormat("充值失败;UserId={1},Money={0}", chargeLog.Money, chargeLog.UserId); } else { logger.ErrorFormat("充值失败,充值记录未找到Id:{0}", id); } //关闭时才更改状态 if (trade_status == "TRADE_Close" && chargeLog != null) { chargeLog.Status = RechargeStatus.Fail; ChargeLogHelper.UpdateStatus(chargeLog, trade_no); trade_status = "success";//返回success } } else { logger.ErrorFormat("充值失败,充值id不是int型;Id={0}", out_trade_no); } Response.Write(trade_status); } } catch (Exception exc) { logger.ErrorFormat("异常:{0})", exc.Message); Response.Write(exc.ToString()); } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { logger.Info("签名验证失败"); Response.Write("fail"); } } else { logger.Info("无通知参数"); Response.Write("无通知参数"); } }
protected void Page_Load(object sender, EventArgs e) { logger.Info("支付宝充值回调开始wap_notify_ordersurl"); logger.Info("开始解析参数"); Dictionary <string, string> sPara = GetRequestPost(); if (sPara.Count > 0)//判断是否有带返回参数 { //logger.Info("判断有带参数"); AlipayXmlNotify aliNotify = new AlipayXmlNotify(); var sign = Request.Form["sign"]; logger.InfoFormat("验证签名:{0}", sign); bool verifyResult = aliNotify.VerifyNotify(sPara, sign); if (verifyResult)//验证成功 { logger.Info("签名通过验证"); ///////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代码 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表 //解密(如果是RSA签名需要解密,如果是MD5签名则下面一行清注释掉) //sPara = aliNotify.Decrypt(sPara); //XML解析notify_data数据 try { XmlDocument xmlDoc = new XmlDocument(); string notify_data = sPara["notify_data"]; //logger.InfoFormat("notify_data:{0}", notify_data); xmlDoc.LoadXml(notify_data); //商户订单号 string out_trade_no = xmlDoc.SelectSingleNode("/notify/out_trade_no").InnerText; //支付宝交易号 string trade_no = xmlDoc.SelectSingleNode("/notify/trade_no").InnerText; //交易状态 string trade_status = xmlDoc.SelectSingleNode("/notify/trade_status").InnerText; logger.InfoFormat("out_trade_no:{0},trade_no:{1},trade_status:{2}", out_trade_no, trade_no, trade_status); if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS") { //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //该种交易状态只在两种情况下出现 //1、开通了普通即时到账,买家付款成功后。 //2、开通了高级即时到账,从该笔交易成功时间算起,过了签约时的可退款时限(如:三个月以内可退款、一年以内可退款等)后。 if (Utility.IsNum(out_trade_no)) { var id = Convert.ToInt32(out_trade_no); var orders = OrdersHelper.GetOrders(id); if (orders != null && orders.Status < OrderStatus.Pay) { //添加 var user = AccountHelper.GetUser(orders.UserId); if (user == null) { logger.ErrorFormat("不存在用户Id={0}", orders.UserId); } else { var payMent = new Payment(); if (orders.Pid > 0) { PaymentHelper.GetPayment(orders.Pid); } var chargeLog = new ChargeLog(); chargeLog.UserId = orders.UserId; chargeLog.Money = -orders.TotalPrice; chargeLog.Pid = orders.Pid; chargeLog.SellerId = orders.SellerId; chargeLog.OrderId = orders.Id.ToString(); chargeLog.PayName = payMent.Id == 0 ? "账户余额" : payMent.Name; chargeLog.Status = RechargeStatus.Success; chargeLog.GidList = orders.GidList; chargeLog.NumList = orders.NumList; chargeLog.Num = orders.NumList.Sum(o => o); //记录消费记录 ChargeLogHelper.AddChargeLog(chargeLog); var setting = SystemHelper.GetMerchantExtend(chargeLog.SellerId); //积分获得 var log = new ExtcreditLog(); log.UserId = orders.UserId; log.SellerId = user.SellerId; log.SourceId = orders.Id; log.Extcredit = (int)(orders.TotalPrice * 1.0 / (setting != null ? setting.ConsumeIntegral : 0)); log.Type = ExtcreditSourceType.Consume; log.CreateTime = DateTime.Now; ExtcreditLogHelper.AddExtcreditLog(log); user.Integral += log.Extcredit; user.Concume(orders.TotalPrice, 1); //保存用户信息 AccountHelper.SaveAccount(user); //更新订单中商品的销量 GoodsHelper.UpdateGoodsSales(orders.GidList, orders.NumList); orders.Status = OrderStatus.Pay; OrdersHelper.SaveOrders(orders); logger.InfoFormat("订单付款成功;UserId={1},Money={0},OrdersId:{2},Status:{3}", orders.TotalPrice, orders.UserId, orders.Id, (int)orders.Status); } } else if (orders == null) { logger.ErrorFormat("不存在订单记录Id={0}", id); } else { logger.Error("该订单已处理过"); } } else { logger.Error("商户订单号不是int型"); } Response.Write("success"); //请不要修改或删除 } //else if (trade_status == "TRADE_SUCCESS") //{ // //判断该笔订单是否在商户网站中已经做过处理 // //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 // //如果有做过处理,不执行商户的业务程序 // //注意: // //该种交易状态只在一种情况下出现——开通了高级即时到账,买家付款成功后。 // Response.Write("success"); //请不要修改或删除 //} else { if (Utility.IsNum(out_trade_no)) { var id = Convert.ToInt32(out_trade_no); var orders = OrdersHelper.GetOrders(id); if (orders != null) { logger.ErrorFormat("订单付款失败;UserId={1},Money={0}", orders.TotalPrice, orders.UserId); orders.Status = OrderStatus.Update; //关闭时才更改状态 if (trade_status == "TRADE_Close") { orders.Status = OrderStatus.Cancel; trade_status = "success";//返回success } OrdersHelper.SaveOrders(orders); } else { logger.ErrorFormat("订单付款失败,订单未找到Id:{0}", id); } } else { logger.ErrorFormat("订单付款失败,订单付款id不是int型;Id={0}", out_trade_no); } Response.Write(trade_status); } } catch (Exception exc) { logger.ErrorFormat("异常:{0})", exc.Message); Response.Write(exc.ToString()); } //——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— ///////////////////////////////////////////////////////////////////////////////////////////////////////////// } else//验证失败 { logger.Info("签名验证失败"); Response.Write("fail"); } } else { logger.Info("无通知参数"); Response.Write("无通知参数"); } }