Example #1
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "application/json";
            //数据验证

            //获取微信配置信息
            string    url      = context.Request.QueryString["url"];
            string    shareurl = context.Request.QueryString["shareurl"];
            JSSDK     sdk      = new JSSDK("wxf89835502774e9c2", "385fa8177eabd63abd74236ef9b1f684", "", false);
            var       qianming = HttpUtility.UrlDecode(url, System.Text.Encoding.GetEncoding(65001));
            shareinfo share    = new shareinfo();

            int            id = int.Parse(weitang.StringExtensions.GetNumber(url.Substring(url.LastIndexOf('/') + 1)).ToString());
            WechatEntities dc = new WechatEntities();
            var            v  = dc.ShareInfo.Where(a => a.Id == id).FirstOrDefault();

            share.url         = v.ShareURL;
            share.title       = v.Title;
            share.describtion = v.Description;
            share.imags       = "http://www.bbpdt.cn/" + v.Image;

            SignPackage config = sdk.GetSignPackage(qianming, JsApiEnum.chooseWXPay | JsApiEnum.onMenuShareTimeline | JsApiEnum.onMenuShareAppMessage | JsApiEnum.onMenuShareQQ | JsApiEnum.onMenuShareWeibo);

            // return new ApiResponse { r = "1", d = new { config = config }, m = "数据获取成功" };
            context.Response.Write(JsonConvert.SerializeObject(new ApiResponse {
                r = "1", d = new { config = config, share = share },
                m = "数据获取成功"
            }));
        }
Example #2
0
        /// <summary>
        /// 获取JS-SDK配置信息
        /// </summary>
        /// <param name="url">url(当前网页的URL,不包含#及其后面部分,要用Request.Url.AbsoluteUri,否则会存在编码问题)</param>
        /// <returns></returns>
        public static WeChatHelper4Net.Models.JSSDK.JSSDKConfig GetJSConfig(string url)
        {
            string appId = ConfigurationManager.AppSettings["WeChatAppId"].ToString(); //AppId为空时默认取配置文件appSettings节点key=WeChatAppId

            string jsapi_ticket = Models.WeChatTokenOrTicket.GetJSApiTicket().ticket;
            var    JsConfig     = JSSDK.GetConfig(appId, jsapi_ticket, url);

            return(JsConfig);
        }
Example #3
0
        public string weixintoken()
        {
            WinXinConfig config    = new WinXinConfig();
            string       appId     = System.Configuration.ConfigurationManager.AppSettings["WeChatAppId"];
            string       appSecret = System.Configuration.ConfigurationManager.AppSettings["WeChatAppSecret"];
            bool         debug     = System.Configuration.ConfigurationManager.AppSettings["WeChatAppDebug"].ToLower() == "true";
            JSSDK        sdk       = new JSSDK(appId, appSecret, debug);

            config = sdk.GetConfig();
            return(config.accesstoken);
        }
Example #4
0
        public ResponseModel <SignPackage> GetConfig(string Url = "")
        {
            JSSDK       sdk    = new JSSDK(appId, secret, false);
            SignPackage config = sdk.GetSignPackage(JsApiEnum.scanQRCode | JsApiEnum.onMenuShareQQ | JsApiEnum.onMenuShareTimeline | JsApiEnum.onMenuShareAppMessage, Url);
            var         result = new ResponseModel <SignPackage>();

            result.error_code  = Models.Result.SUCCESS;
            result.total_count = 1;
            result.data        = config;
            return(result);
        }
        public ActionResult Index()
        {
            JSSDK     sdk       = new JSSDK(WechatParamList.APP_ID, WechatParamList.APP_SECRET, true);
            JsApiEnum jsApilist = (JsApiEnum)0x3ffffffff;

            SignPackage          config     = sdk.GetSignPackage(jsApilist);
            JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();

            ViewBag.config = serializer.Serialize(config);
            return(View());
        }
Example #6
0
        // public SignPackage config;

        public string GetWchatConfig()
        {
            string      appId     = System.Configuration.ConfigurationManager.AppSettings["WeChatAppId"];
            string      appSecret = System.Configuration.ConfigurationManager.AppSettings["WeChatAppSecret"];
            bool        debug     = System.Configuration.ConfigurationManager.AppSettings["WeChatJsDebug"].ToLower() == "true";
            JSSDK       sdk       = new JSSDK(appId, appSecret, debug);
            SignPackage config    = sdk.GetSignPackage(JsApiEnum.onMenuShareAppMessage | JsApiEnum.scanQRCode | JsApiEnum.onMenuShareQQ | JsApiEnum.onMenuShareTimeline);

            System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            config.jsApiList = new string[] { "checkJsApi", "onMenuShareTimeline", "onMenuShareAppMessage", "onMenuShareQQ", "onMenuShareWeibo", "onMenuShareQZone", "hideMenuItems", "showMenuItems", "hideAllNonBaseMenuItem", "showAllNonBaseMenuItem", "translateVoice", "startRecord", "stopRecord", "onVoiceRecordEnd", "playVoice", "onVoicePlayEnd", "pauseVoice", "stopVoice", "uploadVoice", "downloadVoice", "chooseImage", "previewImage", "uploadImage", "downloadImage", "getNetworkType", "openLocation", "getLocation", "hideOptionMenu", "showOptionMenu", "closeWindow", "scanQRCode", "chooseWXPay", "openProductSpecificView", "addCard", "chooseCard", "openCard" };
            return(serializer.Serialize(config));
        }
Example #7
0
        //
        // GET: /index/

        public ActionResult index()
        {
            /*
             * wx.config({
             *  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
             *  appId: '', // 必填,公众号的唯一标识
             *  timestamp: , // 必填,生成签名的时间戳
             *  nonceStr: '', // 必填,生成签名的随机串
             *  signature: '',// 必填,签名,见附录1
             *  jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
             * });
             */
            /* web.config 设置appid,appsecret,dubug
             * <appSettings>
             *  <add key="WeChatAppId" value="your appid here"/>
             *  <add key="WeChatAppSecret" value="your appsecret here"/>
             *  <add key="WeChatJsDebug" value="true"/>
             * </appSettings>
             */
            string appId     = System.Configuration.ConfigurationManager.AppSettings["WeChatAppId"];
            string appSecret = System.Configuration.ConfigurationManager.AppSettings["WeChatAppSecret"];
            bool   debug     = System.Configuration.ConfigurationManager.AppSettings["WeChatJsDebug"].ToLower() == "true";
            JSSDK  sdk       = new JSSDK(appId, appSecret, debug);

            //JsApiEnum使用方法
            //JsApiEnum jsApilist = JsApiEnum.onMenuShareQQ | JsApiEnum.chooseImage;
            //0x3ffffffff 是使用全部接口
            JsApiEnum jsApilist = (JsApiEnum)0x3ffffffff;

            SignPackage config = sdk.GetSignPackage(jsApilist);

            System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
            ViewBag.config = serializer.Serialize(config);
            //string str_config = "{";
            //str_config += string.Format("debug:{0},", config.debug ? "true" : "false");
            //str_config += string.Format("appId:'{0}',", config.appId);
            //str_config += string.Format("timestamp:{0},", config.timestamp);
            //str_config += string.Format("nonceStr:'{0}',", config.nonceStr);
            //str_config += string.Format("signature:'{0}',", config.signature);
            //str_config += "jsApiList:[";
            //for (int i = 0; i < config.jsApiList.Length; i++)
            //{
            //    if (i > 0)
            //        str_config += ",";
            //    str_config += string.Format("'{0}'", config.jsApiList[i]);
            //}
            //str_config += "]}";
            //ViewBag.config = str_config;


            return(View());
        }
Example #8
0
 public IHttpActionResult GetWechatConfig([FromBody] UrlPost post)
 {
     try {
         if (string.IsNullOrEmpty(post.url))
         {
             throw new ArgumentNullException("url");
         }
         return(Ok(JSSDK.GetWxConfig(post.url)));
     }
     catch (Exception ex) {
         log.Error(ex);
         return(InternalServerError(ex));
     }
 }
Example #9
0
        /// <summary>
        /// 用户自定义获取JSApiTicket
        /// </summary>
        /// <returns></returns>
        private static JSApiTicketCacheModel GetJSApiTicket()
        {
            JSSDK.GetJSApiTicketFromStorage get = delegate(DateTime Now, string AppId)
            {
                //根据AppId从自定义存储库(接入者的DB、Cache、仓储源)获取JSApiTicket

                /*
                 * return GetJSApiTicketByCache(AppId);
                 * return GetJSApiTicketByRedis(AppId);
                 * return GetJSApiTicketByMemcache(AppId);
                 * return GetJSApiTicketByMongodb(AppId);
                 * return GetJSApiTicketByDB(AppId);
                 * ……
                 */

                return(null);
            };
            JSSDK.UpdateJSApiTicketToStorage update = delegate(DateTime now, JSApiTicketCacheModel Ticket)
            {
                //根据Ticket.appid将JSApiTicket插入或更新到自定义存储库(接入者的DB、Cache、仓储源)

                /*
                 * return UpdateJSApiTicketToCache(Ticket.appid, Ticket);
                 * return UpdateJSApiTicketToRedis(Ticket.appid, Ticket);
                 * return UpdateJSApiTicketToMemcache(Ticket.appid, Ticket);
                 * return UpdateJSApiTicketToMongodb(Ticket.appid, Ticket);
                 * return UpdateJSApiTicketToDB(Ticket.appid, Ticket);
                 * ……
                 */

                return(true);
            };


            string appId        = ConfigurationManager.AppSettings["WeChatAppId"].ToString(); //AppId为空时默认取配置文件appSettings节点key=WeChatAppId
            string access_token = TokenOrTicket.GetAccessToken().access_token;

            var ticket = JSSDK.GetJSApiTicket(DateTime.Now, appId, access_token, get, update);

            if (null != ticket)
            {
                return(ticket);
            }
            else
            {
                return(default(JSApiTicketCacheModel));
            }
        }
Example #10
0
        public void GetWeiXinMsg()
        {
            WinXinConfig config    = new WinXinConfig();
            string       appId     = System.Configuration.ConfigurationManager.AppSettings["WeChatAppId"];
            string       appSecret = System.Configuration.ConfigurationManager.AppSettings["WeChatAppSecret"];
            bool         debug     = System.Configuration.ConfigurationManager.AppSettings["WeChatAppDebug"].ToLower() == "true";
            JSSDK        sdk       = new JSSDK(appId, appSecret, debug);

            config = sdk.GetConfig();
            if (config != null)
            {
                LogUtil.Log("获取微信Config出错", "appid:" + appId + ",appSecret:" + appSecret + ",debug:" + debug + ",token:");

                ViewBag.WeiXinConfig = config;
            }
            else
            {
                ViewBag.WeiXinConfig = new WinXinConfig();
            }
        }
Example #11
0
        /// <summary>
        /// 用户自定义获取JSApiTicket
        /// </summary>
        /// <returns></returns>
        private static JSApiTicketCacheModel GetJSApiTicket()
        {
            JSSDK.GetJSApiTicketFromStorage get = delegate(DateTime Now, string AppId)
            {
                //根据AppId从自定义存储库(接入者的DB、Cache、仓储源)获取JSApiTicket

                /*
                 * return GetJSApiTicketByCache(AppId);
                 * return GetJSApiTicketByRedis(AppId);
                 * return GetJSApiTicketByMemcache(AppId);
                 * return GetJSApiTicketByMongodb(AppId);
                 * return GetJSApiTicketByDB(AppId);
                 * ……
                 */

                /***** 示例·开始 *****/
                JSApiTicketCacheModel Ticket = null;
                /* 先从自己系统的快速获取已存在的票据(Cache、Redis,Memcache等)*/
                object TokenFromCache = CacheHelper.GetCache("WeChatJSApiTicket_" + AppId);
                Ticket = null != TokenFromCache ? (JSApiTicketCacheModel)TokenFromCache : null;
                if (WeChatHelper4Net.JSSDK.CheckTicket(Now, Ticket))
                {
                    return(Ticket);
                }
                /* 如果快速数据没有,再从自己系统的稳定数据库获取已存在的票据(MySQL,SQLServer,Oracle等)*/
                //var TokenFromDB = BLLRepository.wechatManageBLL.GetTokenOrTicket(AppId, "JSApiTicket");
                //if(null != TokenFromDB)
                //{
                //    Ticket = new JSApiTicketCacheModel()
                //    {
                //        appid = TokenFromDB.appid,
                //        ticket = TokenFromDB.access_token,
                //        expires_in = TokenFromDB.expires_in,
                //        expires_time = TokenFromDB.expires_time,
                //        errcode = TokenFromDB.errcode,
                //        errmsg = TokenFromDB.errmsg
                //    };
                //    if(WeChatHelper4Net.JSSDK.CheckTicket(Now, Ticket))
                //    {
                //        CacheHelper.SetCache("WeChatJSApiTicket_" + Ticket.appid, Ticket, Ticket.expires_in / 60);
                //        return Ticket;
                //    }
                //}
                /***** 示例·结束 *****/

                return(null);
            };
            JSSDK.UpdateJSApiTicketToStorage update = delegate(DateTime now, JSApiTicketCacheModel Ticket)
            {
                bool result = false;

                //根据Ticket.appid将JSApiTicket插入或更新到自定义存储库(接入者的DB、Cache、仓储源)

                /*
                 * result = UpdateJSApiTicketToCache(Ticket.appid, Ticket);
                 * result = UpdateJSApiTicketToRedis(Ticket.appid, Ticket);
                 * result = UpdateJSApiTicketToMemcache(Ticket.appid, Ticket);
                 * result = UpdateJSApiTicketToMongodb(Ticket.appid, Ticket);
                 * result = UpdateJSApiTicketToDB(Ticket.appid, Ticket);
                 * ……
                 */

                /***** 示例·开始 *****/
                if (null != Ticket && !string.IsNullOrWhiteSpace(Ticket.appid) && Ticket.expires_in > 60)
                {
                    /* 先将票据存到自己系统的快速获取已存在的票据(Cache、Redis,Memcache等)*/
                    CacheHelper.SetCache("WeChatJSApiTicket_" + Ticket.appid, Ticket, Ticket.expires_in / 60);

                    //var entity = new TbWeChatTokenOrTicketModel()
                    //{
                    //    appid = Ticket.appid,
                    //    access_token = Ticket.ticket,
                    //    expires_in = Ticket.expires_in,
                    //    expires_time = Ticket.expires_time,
                    //    errcode = Ticket.errcode,
                    //    errmsg = Ticket.errmsg,
                    //    type = "JSApiTicket",
                    //    UpdateTime = DateTime.Now
                    //};
                    /* 为了避免快速数据丢失,再将票据存到自己系统的稳定数据库获取已存在的票据(MySQL,SQLServer,Oracle等)*/
                    //result = BLLRepository.wechatManageBLL.UpdateTokenOrTicket(entity);
                }
                /***** 示例·结束 *****/

                return(result);
            };


            string appId        = ConfigurationManager.AppSettings["WeChatAppId"].ToString(); //AppId为空时默认取配置文件appSettings节点key=WeChatAppId
            string access_token = WeChatTokenOrTicket.GetAccessToken().access_token;

            var ticket = JSSDK.GetJSApiTicket(DateTime.Now, appId, access_token, get, update);

            if (null != ticket)
            {
                return(ticket);
            }
            else
            {
                return(default(JSApiTicketCacheModel));
            }
        }