/// <summary> /// 支付完成 /// </summary> /// <returns></returns> public ActionResult rechargesucc(string openId, string orderNo) { OrderBC bc = new OrderBC(); var result = bc.GetOrderByOrderNo(orderNo); //支付成功,1.更新订单状态;2.更新课程热度;3.增加用户积分;4.删除购物车 UpdateOrderStatus(orderNo, 2);//1 var goods = bc.GetOrderGoodsListByOrderId(result.OrderId); if (goods != null && goods.Count > 0) { foreach (var item in goods) { new ClassBC().UpdateClassHot(item.ClassId); //2 new ShopCarBC().EnableShopCar(openId, item.ClassId, 2); //4 } } var point = bc.GetPointsByOpenid(openId);//3 if (point == null) { PointsEntity points = new PointsEntity() { OpenId = openId, Points = result.PayPrice, }; bc.AddPoint(points, openId); PointsLogEntity log = new PointsLogEntity() { OrderId = result.OrderId, LogType = "1", Points = result.PayPrice, OpenId = openId, }; bc.AddPointLog(log, openId); } else { bc.UpdatePonits(openId, result.PayPrice); PointsLogEntity log = new PointsLogEntity() { OrderId = result.OrderId, LogType = "1", Points = result.PayPrice, OpenId = openId, }; bc.AddPointLog(log, openId); } //根据订单来源,变更不同推广状态 switch (result.OrderSource) { case "1": //单独购买 break; case "2": //砍价 foreach (var item in goods) { var barginEntity = bc.GetBargainByOpenIdAndClassId(item.ClassId, openId); bc.UpdateBargainStatus(barginEntity.BargainId, 2); } break; case "3": //团购 UpdateOrderStatus(orderNo, 3); //1 foreach (var item in goods) { var gbEntity = bc.GetGroupBuyByClassId(item.ClassId); if (gbEntity != null) //该商品已有团购,更新团购人数 { bc.UpdateGroupBuyCount(gbEntity.GroupBuyId); } else //该商品没有团购,新增团购数据 { GroupBuyEntity buy = new GroupBuyEntity() { ClassId = item.ClassId, NowCount = 1, }; bc.AddGroupBuy(buy, openId); } gbEntity = bc.GetGroupBuyByClassId(item.ClassId); //记录团购成员表 GroupBuyMemberEntity member = new GroupBuyMemberEntity() { GroupBuyId = gbEntity.GroupBuyId, GroupPrice = item.Price, openId = openId }; bc.AddGroupBuyMember(member, openId); var nowCountEntity = bc.GetGroupBuyByClassId(item.ClassId); var nowCount = nowCountEntity.NowCount; var needCount = bc.GetGroupBuyConfigByClassId(item.ClassId).NeedCount; if (nowCount == needCount) //团购人数已满,变更团购状态为已完成(2) { bc.UpdateGroupBuyStatus(nowCountEntity.GroupBuyId, 2); //更新成员表中所有成员的订单状态 var members = bc.GetGroupBuyMember(nowCountEntity.GroupBuyId); foreach (var i in members) { var order = bc.GetOrderByOpenIdandClassId(i.openId, item.ClassId); UpdateOrderStatus(order.OrderNo, 2); //1 } } } break; case "4": //助力 break; } ViewBag.OrderNo = orderNo; ViewBag.OpenId = openId; ViewBag.Price = result.PayPrice; return(View()); }
public ActionResult Refund(string code, string orderNo) { string openid = ""; if (new AppSetting().IsDebug != null && new AppSetting().IsDebug.ToLower() == "true") { openid = "123"; } else { if (Request.Cookies[SystemConfig.WXOpenIDCookieKey] != null) { openid = Request.Cookies[SystemConfig.WXOpenIDCookieKey].Value; } if (string.IsNullOrWhiteSpace(openid) && code == null) { Response.Redirect(CommonHelper.GetRedirect("WxClass%2fClassList")); } try { if (string.IsNullOrWhiteSpace(openid)) { openid = GetOpenId(code).openid; // 合法用户,允许访问 Response.Cookies[SystemConfig.WXOpenIDCookieKey].Value = openid; Response.Cookies[SystemConfig.WXOpenIDCookieKey].Path = "/"; Response.Cookies[SystemConfig.WXOpenIDCookieKey].Expires = DateTime.Now.AddDays(1); } } catch (Exception ex) { } } AppSetting setting = new AppSetting(); WxPayClient client = new WxPayClient(); WxPayData data = new WxPayData(); OrderBC bc = new OrderBC(); var order = bc.GetOrderByOrderNo(orderNo); string outTradeNumber = string.Format("{0}{1}", orderNo.ToString(), DateTime.Now.ToString("fff")); RefundOrderRequest req = new RefundOrderRequest(); data.SetValue("out_trade_no", order.WXPayOutTradeNumber); data.SetValue("total_fee", 1); //订单总金额 data.SetValue("refund_fee", 1); //退款金额 data.SetValue("out_refund_no", WxPayApi.GenerateOutTradeNo()); //随机生成商户退款单号 //data.SetValue("total_fee", Convert.ToInt32(order.PayPrice * 100));//订单总金额 //data.SetValue("refund_fee", Convert.ToInt32(order.PayPrice * 100));//退款金额 var resp = client.Refund(data); //WxPayData jsApiParam = new WxPayData(); //jsApiParam.SetValue("appId", resp.AppId); //jsApiParam.SetValue("timeStamp", WxPayApi.GenerateTimeStamp()); //jsApiParam.SetValue("nonceStr", WxPayApi.GenerateNonceStr()); //jsApiParam.SetValue("package", "prepay_id=" + resp.PrepayId); //jsApiParam.SetValue("signType", "MD5"); //jsApiParam.SetValue("paySign", jsApiParam.MakeSign()); return(View()); }
/// <summary> /// 支付 /// </summary> /// <param name="id"></param> /// <param name="openId"></param> /// <param name="mark"></param> /// <param name="type"></param> /// <returns></returns> public ActionResult CheckOut(string code, string orderNo) { string openid = ""; if (new AppSetting().IsDebug != null && new AppSetting().IsDebug.ToLower() == "true") { openid = "123"; } else { if (Request.Cookies[SystemConfig.WXOpenIDCookieKey] != null) { openid = Request.Cookies[SystemConfig.WXOpenIDCookieKey].Value; } if (string.IsNullOrWhiteSpace(openid) && code == null) { Response.Redirect(CommonHelper.GetRedirect("WxClass%2fClassList")); } try { if (string.IsNullOrWhiteSpace(openid)) { openid = GetOpenId(code).openid; // 合法用户,允许访问 Response.Cookies[SystemConfig.WXOpenIDCookieKey].Value = openid; Response.Cookies[SystemConfig.WXOpenIDCookieKey].Path = "/"; Response.Cookies[SystemConfig.WXOpenIDCookieKey].Expires = DateTime.Now.AddDays(1); } } catch (Exception ex) { } } try { AppSetting setting = new AppSetting(); WxPayClient client = new WxPayClient(); OrderBC bc = new OrderBC(); var order = bc.GetOrderByOrderNo(orderNo); string outTradeNumber = string.Format("{0}{1}", orderNo.ToString(), DateTime.Now.ToString("fff")); UnifiedOrderRequest req = new UnifiedOrderRequest(); req.Body = "万韬财税课程购买"; //商品描述----------------------- req.Attach = openid.ToString(); //附加信息,会原样返回,充值人员微信Openid req.GoodTag = "Pay"; req.TradeType = "JSAPI"; req.OpenId = openid; req.OutTradeNo = outTradeNumber; //---商户订单号---------------- req.TotalFee = 1; //测试总金额 //req.TotalFee = Convert.ToInt32(order.PayPrice * 100);//总金额 req.NotifyUrl = setting.NotifyUrl; //异步通知地址------------------------- var resp = client.UnifiedOrder(req); WxPayData jsApiParam = new WxPayData(); jsApiParam.SetValue("appId", resp.AppId); jsApiParam.SetValue("timeStamp", WxPayApi.GenerateTimeStamp()); jsApiParam.SetValue("nonceStr", WxPayApi.GenerateNonceStr()); jsApiParam.SetValue("package", "prepay_id=" + resp.PrepayId); jsApiParam.SetValue("signType", "MD5"); jsApiParam.SetValue("paySign", jsApiParam.MakeSign()); bc.UpdatePayInfo(outTradeNumber, jsApiParam.ToJson(), orderNo); //--给Viewbag赋值,供前台页面jsapi调用 ViewBag.AppId = (string)jsApiParam.GetValue("appId"); ViewBag.Package = (string)jsApiParam.GetValue("package"); ViewBag.NonceStr = (string)jsApiParam.GetValue("nonceStr"); ViewBag.Paysign = (string)jsApiParam.GetValue("paySign"); ViewBag.TimeStamp = (string)jsApiParam.GetValue("timeStamp"); ViewBag.OpenId = openid; ViewBag.OrderNo = orderNo; ViewBag.OpenId = openid; ViewBag.OrderNo = orderNo; } catch (Exception ex) { } return(View()); }