Example #1
0
        /// <summary>
        /// 获得微信参数
        /// </summary>
        /// <param name="URL"></param>
        /// <returns></returns>
        public JSSDKModel GetWechatParams(string URL)
        {
            /// 微信接口属性
            var appId    = System.Web.Configuration.WebConfigurationManager.AppSettings["appid"].ToString();
            var nonceStr = JsonHelper.CreatenNonce_str();
            //LogHelper.Info("------------Shared-----nonceStr:" + nonceStr);
            var timestamp = JsonHelper.CreatenTimestamp();
            //LogHelper.Info("------------Shared-----timestamp:" + timestamp);

            string realUrl = URL.Split(new char[] { '#' })[0];
            //LogHelper.Info("------------Shared-----realUrl:" + realUrl);

            AccessTokenModel accessTokenModel = GetAccessToken();

            JSSDKModel JsSdkModel = new JSSDKModel();

            if (accessTokenModel.type == (int)ShareUtils.JsonType.typeFailed)
            {
                //LogHelper.Info("------------Shared-----token-error-logic:" + accessTokenModel.type);
                JsSdkModel.type    = accessTokenModel.type;
                JsSdkModel.content = accessTokenModel.content;
                return(JsSdkModel);
            }

            JsapiTicketModel jsapiTicketModel = GetTickect(accessTokenModel.access_token);

            if (jsapiTicketModel.type == (int)ShareUtils.JsonType.typeFailed)
            {
                //LogHelper.Info("------------Shared-----ticket-error-logic:" + jsapiTicketModel.type);
                JsSdkModel.type    = jsapiTicketModel.type;
                JsSdkModel.content = jsapiTicketModel.content;
                return(JsSdkModel);
            }

            var string1   = "";
            var signature = JsonHelper.GetSignature(jsapiTicketModel.ticket, nonceStr, timestamp, realUrl, out string1);

            //LogHelper.Info("------------Shared-----signature:" + signature);
            //LogHelper.Info("------------Shared-----string1:" + string1);

            string[] jsApiList = { "onMenuShareTimeline", "onMenuShareAppMessage" };/// 分享朋友和朋友圈

            ///
            JsSdkModel.appId       = appId;
            JsSdkModel.nonceStr    = nonceStr;
            JsSdkModel.signature   = signature;
            JsSdkModel.timestamp   = timestamp;
            JsSdkModel.shareUrl    = URL;
            JsSdkModel.jsapiTicket = jsapiTicketModel.ticket;
            JsSdkModel.string1     = string1;
            JsSdkModel.jsApiList   = jsApiList;
            JsSdkModel.type        = (int)ShareUtils.JsonType.typeSucc;

            return(JsSdkModel);
        }
Example #2
0
        /// <summary>
        /// 获取jsapi_ticket
        /// jsapi_ticket是公众号用于调用微信JS接口的临时票据。
        /// 正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。
        /// 由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。
        /// </summary>
        /// <param name="access_token">BasicAPI获取的access_token,也可以通过TokenHelper获取</param>
        /// <returns></returns>
        public JsapiTicketModel GetTickect(string access_token)
        {
            /// 请求URL
            var url    = string.Format(ShareUtils.WechatTicketRequestUrl, access_token);
            var client = new HttpClient();

            /// 声明变量
            string ticket_str = "";
            int    type       = 0;
            string content    = "";

            /// 缓存
            var modules = RedisCacheHelper.AutoCache(ConstClass.RedisKey4MPrefix, "Key_Ticket", () =>
            {
                /// 获取ticket
                var responseResult = client.GetAsync(url).Result;
                if (!responseResult.IsSuccessStatusCode)
                {
                    return(string.Empty);
                }
                var result      = responseResult.Content.ReadAsStringAsync().Result;
                var parseResult = JObject.Parse(result.ToString());

                //var json = "{\"errcode\":0,\"errmsg\":\"ok\",\"ticket\":\"sM4AOVdWfPE4DxkXGEs8VBnCOGWyCh0yozn7VHLbWf0wR7SqMRVe-h4niB2YDaeVuDMBPYzyNoVJRY4ZZOab8Q\",\"expires_in\":7200}";
                //var parseResult = JObject.Parse(json);

                var errcode = parseResult["errcode"];
                //LogHelper.Info("------------Shared-----ticket-errorcode:" + errcode);
                var errmsg = parseResult["errmsg"];
                var ticket = parseResult["ticket"];
                //LogHelper.Info("------------Shared-----ticket:" + ticket);
                var expires_in = parseResult["expires_in"];
                //LogHelper.Info("------------Shared-----ticket-expires_in:" + expires_in);

                if (errcode != null && errmsg != null)
                {
                    if (Convert.ToInt32(errcode) == 0 && errmsg.ToString().Equals("ok"))
                    {
                        type = (int)ShareUtils.JsonType.typeSucc;
                        if (ticket != null)
                        {
                            ticket_str = ticket.ToString();
                        }
                    }
                    else
                    {
                        type       = (int)ShareUtils.JsonType.typeFailed;
                        content    = parseResult["errmsg"].ToString();
                        ticket_str = "";
                    }
                }

                var data = ticket_str;
                //LogHelper.Info("------------Shared-----ticket_str:" + ticket_str);
                return(data);
            }, 120);

            //LogHelper.Info("------------Shared-----:ticket缓存modules" + modules);
            JsapiTicketModel jsapiTicketModel = new JsapiTicketModel();


            if (modules == null || modules.Equals(""))
            {
                jsapiTicketModel.type    = type;
                jsapiTicketModel.content = content;
                jsapiTicketModel.ticket  = "";
            }
            else
            {
                jsapiTicketModel.type    = (int)ShareUtils.JsonType.typeSucc;
                jsapiTicketModel.content = "";
                jsapiTicketModel.ticket  = modules.ToString();
            }

            return(jsapiTicketModel);
        }
Example #3
0
        /// <summary>
        /// 获取jsapi_ticket
        /// jsapi_ticket是公众号用于调用微信JS接口的临时票据。
        /// 正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。
        /// 由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。
        /// </summary>
        /// <param name="access_token">BasicAPI获取的access_token,也可以通过TokenHelper获取</param>
        /// <returns></returns>
        public JsapiTicketModel GetTickect(string access_token)
        {
            /// 请求URL
            var url    = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", access_token);
            var client = new HttpClient();

            /// 声明变量
            string ticket_str       = "";
            int    expires_in_value = 7200;
            int    type             = 0;
            string content          = "";

            LogHelper.Info("------------TeamDetail-----执行autocach-ticket开始");
            /// 缓存
            var modules = RedisCacheHelper.AutoCache(ConstClass.RedisKey4MPrefix, "Key_Ticket", () =>
            {
                LogHelper.Info("------------TeamDetail-----进入autocach-ticket开始");
                LogHelper.Info("------------TeamDetail-----获取ticket开始");
                /// 获取ticket
                var responseResult = client.GetAsync(url).Result;
                LogHelper.Info("------------TeamDetail-----获取ticket开始");
                if (!responseResult.IsSuccessStatusCode)
                {
                    return(string.Empty);
                }
                var result      = responseResult.Content.ReadAsStringAsync().Result;
                var parseResult = JObject.Parse(result.ToString());

                //var json = "{\"errcode\":0,\"errmsg\":\"ok\",\"ticket\":\"sM4AOVdWfPE4DxkXGEs8VBnCOGWyCh0yozn7VHLbWf0wR7SqMRVe-h4niB2YDaeVuDMBPYzyNoVJRY4ZZOab8Q\",\"expires_in\":7200}";
                //var parseResult = JObject.Parse(json);

                var errcode = parseResult["errcode"];
                LogHelper.Info("------------TeamDetail-----ticket-errorcode:" + errcode);
                var errmsg = parseResult["errmsg"];
                var ticket = parseResult["ticket"];
                LogHelper.Info("------------TeamDetail-----ticket:" + ticket);
                var expires_in = parseResult["expires_in"];
                LogHelper.Info("------------TeamDetail-----ticket-expires_in:" + expires_in);

                if (errcode != null && errmsg != null)
                {
                    if (Convert.ToInt32(errcode) == 0 && errmsg.ToString().Equals("ok"))
                    {
                        type = 1;
                        if (ticket != null)
                        {
                            ticket_str = ticket.ToString();
                        }

                        if (expires_in != null)
                        {
                            expires_in_value = Convert.ToInt32(expires_in);
                        }
                    }
                    else
                    {
                        type       = 2;
                        content    = parseResult["errmsg"].ToString();
                        ticket_str = "";
                    }
                }

                var data = ticket_str;
                LogHelper.Info("------------TeamDetail-----ticket_str:" + ticket_str);
                LogHelper.Info("------------TeamDetail-----进入autocach-ticket结束");
                return(data);
            }, 7200);

            LogHelper.Info("------------TeamDetail-----执行autocach-ticket结束");
            LogHelper.Info("------------TeamDetail-----:ticket缓存modules" + modules);
            JsapiTicketModel jsapiTicketModel = new JsapiTicketModel();


            if (modules == null || modules.Equals(""))
            {
                jsapiTicketModel.type    = type;
                jsapiTicketModel.content = content;
                jsapiTicketModel.ticket  = "";
            }
            else
            {
                jsapiTicketModel.type    = 1;
                jsapiTicketModel.content = "";
                jsapiTicketModel.ticket  = modules.ToString();
            }

            return(jsapiTicketModel);
        }
Example #4
0
        public JsonResult GetSharedInfo(string TeamCode, string URL)
        {
            /// 获取团详情信息
            var teamDetailList = teamBll.GetTeamDetailList(TeamCode);

            if (teamDetailList.Count() == 0)
            {
                return(null);
            }

            LogHelper.Info("------------TeamDetail-----URL:" + URL);
            LogHelper.Info("------------TeamDetail-----ImagePath:" + teamDetailList.First().ImagePath);

            /// 团分享对象Model
            TeamSharedModel teamSharedModel = new TeamSharedModel();

            /// 登录用户ID
            int LoginUserId = 0;

            // 登录用户
            if (base.LoginUser != null)
            {
                LoginUserId = base.LoginUser.UserID;
            }

            teamSharedModel.RestTeamMemberNum = (teamDetailList.First().TeamNumbers - teamDetailList.Count());
            LogHelper.Info("------------RestTeamMemberNum-----RestTeamMemberNum1:" + teamSharedModel.RestTeamMemberNum);

            /// 用户已经登录
            if (LoginUserId > 0)
            {
                /// 团成员
                if (teamDetailList.Where(d => d.UserId == LoginUserId).Count() > 0)
                {
                    /// 标题
                    StringBuilder strbul = new StringBuilder();
                    strbul.Append("我参加了健康绿氧").Append(teamDetailList.First().ProductName)
                    .Append(teamDetailList.First().MainValue).Append(teamDetailList.First().SubValue)
                    .Append(teamDetailList.First().NetWeightUnit).Append("拼单!");

                    teamSharedModel.Title = strbul.ToString();

                    /// 第一张缩略图(180x180图)
                    teamSharedModel.ImagePath = PathHelper.GetImageSmallUrl(teamDetailList.First().ImagePath);

                    /// 描述
                    if (teamDetailList.Count() < teamDetailList.First().TeamNumbers)
                    {
                        teamSharedModel.Description = "【还差"
                                                      + (teamDetailList.First().TeamNumbers - teamDetailList.Count())
                                                      + "x人】健康绿氧,贵州茅台怀桥酒厂发货,全场包邮,一起实惠一起拼!";
                    }
                    else
                    {
                        teamSharedModel.Description = "团人数已经满了";
                    }

                    /// 团详情页链接

                    /*teamSharedModel.Url = System.Web.Configuration.WebConfigurationManager.AppSettings["sharedUrl"].ToString()
                     + teamDetailList.First().TeamCode + "&Flag=1";*/
                }
                /// 未参团
                else
                {
                    /// 标题
                    StringBuilder strbul = new StringBuilder();
                    strbul.Append(teamDetailList.First().ProductName).Append(teamDetailList.First().MainValue)
                    .Append(teamDetailList.First().SubValue).Append(teamDetailList.First().NetWeightUnit);

                    teamSharedModel.Title = strbul.ToString();

                    /// 第一张缩略图(180x180图)
                    teamSharedModel.ImagePath = PathHelper.GetImageSmallUrl(teamDetailList.First().ImagePath);

                    /// 描述
                    teamSharedModel.Description = "健康绿氧,贵州茅台怀桥酒厂发货,全场包邮,一起实惠一起拼!";

                    /// 团详情页链接

                    /*teamSharedModel.Url = System.Web.Configuration.WebConfigurationManager.AppSettings["sharedUrl"].ToString()
                     + teamDetailList.First().TeamCode + "&Flag=1";*/
                }
            }
            /// 未登录
            else
            {
                /// 标题
                StringBuilder strbul = new StringBuilder();
                strbul.Append(teamDetailList.First().ProductName).Append(teamDetailList.First().MainValue)
                .Append(teamDetailList.First().SubValue).Append(teamDetailList.First().NetWeightUnit);

                teamSharedModel.Title = strbul.ToString();

                /// 第一张缩略图(180x180图)
                teamSharedModel.ImagePath = PathHelper.GetImageSmallUrl(teamDetailList.First().ImagePath);

                /// 描述
                teamSharedModel.Description = "健康绿氧,贵州茅台怀桥酒厂发货,全场包邮,一起实惠一起拼!";

                /// 团详情页链接

                /*teamSharedModel.Url = System.Web.Configuration.WebConfigurationManager.AppSettings["sharedUrl"].ToString()
                 + teamDetailList.First().TeamCode + "&Flag=1";*/
            }

            /// 微信接口属性
            var appId    = System.Web.Configuration.WebConfigurationManager.AppSettings["appid"].ToString();
            var nonceStr = JsonHelper.CreatenNonce_str();

            LogHelper.Info("------------TeamDetail-----nonceStr:" + nonceStr);
            var timestamp = JsonHelper.CreatenTimestamp();

            LogHelper.Info("------------TeamDetail-----timestamp:" + timestamp);
            //var domain = System.Configuration.ConfigurationManager.AppSettings["MServer"];
            //var url = domain + Request.Url.PathAndQuery;
            //var url = Request.Url.AbsoluteUri;
            string realUrl = URL.Split(new char[] { '#' })[0];

            teamSharedModel.Url = realUrl;
            LogHelper.Info("------------TeamDetail-----realUrl:" + realUrl);
            // var url = Request.Url.AbsoluteUri;

            // LogHelper.Info("------------TeamDetail-----url:" + url);
            AccessTokenModel accessTokenModel = GetAccessToken();

            if (accessTokenModel.type == 2)
            {
                LogHelper.Info("------------TeamDetail-----token-error-logic:" + accessTokenModel.type);
                return(Json(new
                {
                    type = accessTokenModel.type,
                    content = accessTokenModel.content
                }, JsonRequestBehavior.AllowGet));
            }

            JsapiTicketModel jsapiTicketModel = GetTickect(accessTokenModel.access_token);

            if (jsapiTicketModel.type == 2)
            {
                LogHelper.Info("------------TeamDetail-----ticket-error-logic:" + jsapiTicketModel.type);
                return(Json(new
                {
                    type = jsapiTicketModel.type,
                    content = jsapiTicketModel.content
                }, JsonRequestBehavior.AllowGet));
            }

            var string1   = "";
            var signature = JsonHelper.GetSignature(jsapiTicketModel.ticket, nonceStr, timestamp, realUrl, out string1);

            LogHelper.Info("------------TeamDetail-----signature:" + signature);
            LogHelper.Info("------------TeamDetail-----string1:" + string1);
            string[] jsApiList = { "onMenuShareTimeline", "onMenuShareAppMessage" };/// 分享朋友和朋友圈

            /// 微信接口必填参数Model
            var model = new JSSDKModel
            {
                appId       = appId,
                nonceStr    = nonceStr,
                signature   = signature,
                timestamp   = timestamp,
                shareUrl    = realUrl,
                jsapiTicket = jsapiTicketModel.ticket,
                //shareImg = domain + Url.Content("/images/ad.jpg"),
                string1   = string1,
                jsApiList = jsApiList,
                type      = 1
            };

            LogHelper.Info("------------RestTeamMemberNum-----TeamCode:" + TeamCode);
            int value = teamSharedModel.RestTeamMemberNum;

            LogHelper.Info("------------RestTeamMemberNum-----RestTeamMemberNum2:" + value);


            LogHelper.Info("------------TeamDetil-----Title:" + teamSharedModel.Title);
            LogHelper.Info("------------TeamDetil-----ImagePath:" + teamSharedModel.ImagePath);
            LogHelper.Info("------------TeamDetil-----Description:" + teamSharedModel.Description);
            LogHelper.Info("------------TeamDetil-----Url:" + teamSharedModel.Url);

            return(Json(new
            {
                type = model.type,
                data = new
                {
                    appId = appId,
                    timestamp = timestamp,
                    nonceStr = nonceStr,
                    signature = signature,
                    jsApiList = jsApiList
                    ,
                    Title = teamSharedModel.Title,
                    ImagePath = teamSharedModel.ImagePath,

                    Description = teamSharedModel.Description
                    ,
                    RestTeamMemberNum = value,

                    Url = teamSharedModel.Url
                }
            }, JsonRequestBehavior.AllowGet));
        }