예제 #1
0
        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());
        }
예제 #2
0
        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));
        }
예제 #3
0
        /// <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;
            }
        }