public IActionResult PromoCode() { try { var openId = HttpContext.Session.GetString("OpenId"); Menber menber = _context.Menbers.FirstOrDefault(x => x.WeChatOpenId == openId); var result = Senparc.Weixin.MP.AdvancedAPIs.QrCodeApi.Create(WeiXinConfig.appId, 2592000, 1222, Senparc.Weixin.MP.QrCode_ActionName.QR_STR_SCENE, menber.Id); ViewBag.urlstr = result.url; } catch (Exception ex) { RCLog.Error(this, ex.ToString()); } return(View()); }
public async Task <IActionResult> Me() { MeVM vm = new MeVM(); Menber menber = null; ViewBag.headerUrl = HttpContext.Session.GetString("headimgurl"); try { var weChatOpenId = HttpContext.Session.GetString("OpenId"); menber = await _context.Menbers.FirstOrDefaultAsync(x => x.WeChatOpenId == weChatOpenId); if (menber == null) { menber = new Menber(); menber.Username = HttpContext.Session.GetString("nickname"); menber.WeChatOpenId = weChatOpenId; _context.Add(menber); _context.SaveChanges(); ViewBag.headerUrl = HttpContext.Session.GetString("headimgurl"); return(RedirectToAction("ModifPhoneNumber", "wechat")); } else { menber.Username = HttpContext.Session.GetString("nickname"); _context.Update(menber); _context.SaveChanges(); } vm.Balance = (decimal)(menber.AccountSum * 0.01);//转化为元 vm.IntegralSum = menber.IntegralSum; vm.Username = menber.Username; vm.PhoneNo = string.IsNullOrEmpty(menber.PhoneNumber) ? "无" : menber.PhoneNumber; vm.OrderSum = await _context.Orders.Where(x => x.OwnerId == menber.Id).CountAsync(); } catch (Exception ex) { RCLog.Error(this, ex.ToString()); } return(View(vm)); }
/// <summary> /// JS-SDK支付回调地址(在统一下单接口中设置notify_url) /// </summary> /// <returns></returns> public ActionResult PayNotifyUrl() { try { RCLog.Info(this, "支付返回"); ResponseHandler resHandler = new ResponseHandler(HttpContext); string return_code = resHandler.GetParameter("return_code"); string return_msg = resHandler.GetParameter("return_msg"); string res = null; resHandler.SetKey(WeiXinConfig.Key); //验证请求是否从微信发过来(安全) if (resHandler.IsTenpaySign() && return_code.ToUpper() == "SUCCESS") { res = "success"; //正确的订单处理 //直到这里,才能认为交易真正成功了,可以进行数据库操作,但是别忘了返回规定格式的消息! string total_fee = resHandler.GetParameter("total_fee"); string out_trade_no = resHandler.GetParameter("out_trade_no"); string openid = resHandler.GetParameter("openid"); string package = resHandler.GetParameter("attach"); Menber owner = _context.Menbers.FirstOrDefault(x => x.WeChatOpenId == openid); AccountInfo accountinfo = _context.AccountInfos.FirstOrDefault(x => x.TradeNo == out_trade_no); accountinfo.BeforeMoney = owner.AccountSum; accountinfo.AfterMoney = owner.AccountSum + int.Parse(total_fee); accountinfo.OwnerId = owner.Id; accountinfo.Money = int.Parse(total_fee); accountinfo.CreateTime = DateTime.Now; accountinfo.TradeNo = out_trade_no; accountinfo.TradeName = package; owner.AccountSum = accountinfo.AfterMoney; //_context.Add(accountinfo); _context.SaveChanges(); } else { res = "wrong";//错误的订单处理 } /* 这里可以进行订单处理的逻辑 */ //发送支付成功的模板消息 string xml = string.Format(@"<xml> <return_code><![CDATA[{0}]]></return_code> <return_msg><![CDATA[{1}]]></return_msg> </xml>", return_code, return_msg); RCLog.Info(this, xml); return(Content(xml, "text/xml")); } catch (Exception ex) { RCLog.Error(this, $"发生错误{ex.ToString()}"); throw; } }