コード例 #1
0
        public IActionResult NoticeList()
        {
            RCLog.Info(this, "test");
            var vm = _context.Articles.Where(x => x.ArticleType == ArticleTypeEnum.Notice_4);

            return(View(vm));
        }
コード例 #2
0
        public IActionResult SpecialOffersList()
        {
            RCLog.Info(this, "test");
            var vm = _context.Articles.Where(x => x.ArticleType == ArticleTypeEnum.Slideshows_7);

            return(View(vm));
        }
コード例 #3
0
        public IActionResult CustomerService()
        {
            RCLog.Info(this, "test");
            var vm = _context.Articles.FirstOrDefault(x => x.ArticleType == ArticleTypeEnum.CustomerService_6);

            return(View(nameof(ShowArticle), vm));
        }
コード例 #4
0
        public ActionResult OAuthCallback(string code, string state, string returnUrl)
        {
            //RCLog.Info(this, "OAuthCallback");
            if (string.IsNullOrEmpty(code))
            {
                return(Content("您拒绝了授权!"));
            }

            if (!state.Contains("|"))
            {
                //这里的state其实是会暴露给客户端的,验证能力很弱,这里只是演示一下
                //实际上可以存任何想传递的数据,比如用户ID
                return(Content("验证失败!请从正规途径进入!1001"));
            }

            //通过,用code换取access_token
            var openIdResult = OAuthApi.GetAccessToken(WeiXinConfig.appId, WeiXinConfig.AppSecret, code);

            if (openIdResult.errcode != ReturnCode.请求成功)
            {
                return(Content("错误:" + openIdResult.errmsg));
            }
            RCLog.Info(this, "OAuthCallback=" + openIdResult.openid);
            HttpContext.Session.SetString("OpenId", openIdResult.openid);//进行登录
            OAuthUserInfo userInfo = OAuthApi.GetUserInfo(openIdResult.access_token, openIdResult.openid);

            HttpContext.Session.SetString("nickname", userInfo.nickname);
            HttpContext.Session.SetString("headimgurl", userInfo.headimgurl);


            //也可以使用FormsAuthentication等其他方法记录登录信息,如:
            //FormsAuthentication.SetAuthCookie(openIdResult.openid,false);
            //RCLog.Info(this, " 结束OAuthCallback");
            return(Redirect(returnUrl));
        }
コード例 #5
0
        public override IResponseMessageBase OnTextRequest(RequestMessageText requestMessage)

        {
            RCLog.Info(this, "进入信息处理");
            var responseMessage = base.CreateResponseMessage <ResponseMessageText>();

            //responseMessage.Content = "您的OpenID是:" + responseMessage.FromUserName+".\r\n您发送的文字是:"+requestMessage.Content;

            if (requestMessage.Content == "ID")
            {
                responseMessage.Content = "您的OpenID是:" + responseMessage.FromUserName;
            }

            if (requestMessage.Content == "天气")
            {
                responseMessage.Content = "抱歉,还未开通此功能!";
            }

            return(responseMessage);
        }
コード例 #6
0
        public IActionResult ModifPhoneNumber(ModifPhoneNumberVM model)
        {
            if (ModelState.IsValid)
            {
                var PhoneValidateCode = HttpContext.Session.GetString(model.PhoneNumber);
                var openId            = HttpContext.Session.GetString("OpenId");
                var member            = _context.Menbers.FirstOrDefault(x => x.WeChatOpenId == openId);

                if (model.PhoneValidateCode == PhoneValidateCode)
                {
                    member.PhoneNumber = model.PhoneNumber;
                    RCLog.Info(this, $"新手机号码为{ model.PhoneNumber}");
                    _context.Update(member);
                    _context.SaveChanges();
                    return(RedirectToAction("Me", "WeChat"));
                }
            }
            ViewBag.headerUrl = HttpContext.Session.GetString("headimgurl");

            return(View(model));
        }
コード例 #7
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;
            }
        }
コード例 #8
0
        public ActionResult JsApi(string topupItemId = "2", string bodytext = "微信充值")
        {
            try
            {
                //RCLog.Info(this, "进入JsApi");
                var topupItem = _context.TopupItems.FirstOrDefault(z => z.Id == topupItemId);
                if (topupItem == null)
                {
                    return(Content("商品信息不存在,或非法进入!1002"));
                }


                //var openId = User.Identity.Name;
                var openId = HttpContext.Session.GetString("OpenId");

                string sp_billno = DateTime.Now.Ticks.ToString();

                var timeStamp = TenPayV3Util.GetTimestamp();
                var nonceStr  = TenPayV3Util.GetNoncestr();

                var body        = bodytext;
                var price       = topupItem.Price;//单位:分
                var xmlDataInfo = new TenPayV3UnifiedorderRequestData(WeiXinConfig.appId, WeiXinConfig.MchId, body, sp_billno, price, HttpContext.UserHostAddress()?.ToString(), WeiXinConfig.TenPayV3Notify, TenPayV3Type.JSAPI, openId, WeiXinConfig.Key, nonceStr);

                var result = TenPayV3.Unifiedorder(xmlDataInfo); //调用统一订单接口
                RCLog.Info(this, "订单号:" + result.prepay_id);     //JsSdkUiPackage jsPackage = new JsSdkUiPackage(WeiXinConfig.appId, timeStamp, nonceStr,);
                var package = string.Format("prepay_id={0}", result.prepay_id);
                RCLog.Info(this, $"sp_billno={sp_billno}");
                RCLog.Info(this, $"price={price}");

                //临时记录订单信息,留给退款申请接口测试使用
                //HttpContext.Session.SetString("BillNo", sp_billno);
                //HttpContext.Session.SetString("BillFee", price.ToString());

                AccountInfo accountinfo = new AccountInfo();

                accountinfo.CreateTime = DateTime.Now;
                accountinfo.TradeNo    = sp_billno;
                accountinfo.TradeName  = package;
                _context.Add(accountinfo);
                _context.SaveChanges();


                return(Json(new
                {
                    appId = WeiXinConfig.appId,
                    timeStamp = timeStamp,
                    nonceStr = nonceStr,
                    package = package,
                    paySign = TenPayV3.GetJsPaySign(WeiXinConfig.appId, timeStamp, nonceStr, package, WeiXinConfig.Key)
                }));
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
                msg += "<br>" + ex.StackTrace;
                msg += "<br>==Source==<br>" + ex.Source;

                if (ex.InnerException != null)
                {
                    msg += "<br>===InnerException===<br>" + ex.InnerException.Message;
                }
                return(Content(msg));
            }
        }