コード例 #1
0
        public void ContainerTest()
        {
            //注册
            AccessTokenContainer.Register(base._appId, base._appSecret);

            //获取Ticket完整结果(包括当前过期秒数)
            var ticketResult = JsApiTicketContainer.GetJsApiTicketResult(base._appId);

            Assert.IsNotNull(ticketResult);

            //只获取Ticket字符串
            var ticket = JsApiTicketContainer.GetJsApiTicket(base._appId);

            Assert.AreEqual(ticketResult.ticket, ticket);
            Console.WriteLine(ticket);

            //getNewTicket
            {
                ticket = JsApiTicketContainer.TryGetJsApiTicket(base._appId, base._appSecret, false);
                Assert.AreEqual(ticketResult.ticket, ticket);

                ticket = JsApiTicketContainer.TryGetJsApiTicket(base._appId, base._appSecret, true);
                //Assert.AreNotEqual(ticketResult.ticket, ticket);//如果微信服务器缓存,此处会相同

                Console.WriteLine(ticket);
            }
        }
コード例 #2
0
        public async Task <ActionResult> Test()
        {
            //注册
            await AccessTokenContainer.RegisterAsync(TenPayV3Info.AppId, TenPayV3Info.Sub_AppSecret);

            var accessToken = AccessTokenContainer.TryGetAccessToken("wx4b58f9e96371d9ff", "43c5c4d9b8207634eb293a72ddad5bb1", true);

            var token = await AccessTokenContainer.TryGetAccessTokenAsync(TenPayV3Info.AppId, TenPayV3Info.Sub_AppSecret, false);

            //获取Ticket完整结果(包括当前过期秒数)
            var ticketResult = JsApiTicketContainer.GetJsApiTicketResult(TenPayV3Info.AppId);

            // //只获取Ticket字符串
            var ticket = JsApiTicketContainer.GetJsApiTicket(TenPayV3Info.AppId);

            //getNewTicket
            {
                ticket = JsApiTicketContainer.TryGetJsApiTicket(TenPayV3Info.AppId, TenPayV3Info.Sub_AppSecret, false);


                ticket = JsApiTicketContainer.TryGetJsApiTicket(TenPayV3Info.AppId, TenPayV3Info.Sub_AppSecret, true);
                //Assert.AreNotEqual(ticketResult.ticket, ticket);//如果微信服务器缓存,此处会相同
            }
            return(Content(token));
        }
コード例 #3
0
        public static ShareInfo GetPayInfo(string prepayid)
        {
            var shareInfo = new ShareInfo();

            //检查是否已经注册jssdk
            if (!JsApiTicketContainer.CheckRegistered(ConfigHelper.WeChatAppId))
            {
                JsApiTicketContainer.Register(ConfigHelper.WeChatAppId, ConfigHelper.WeChatSecret);
            }
            JsApiTicketResult jsApiTicket = JsApiTicketContainer.GetJsApiTicketResult(ConfigHelper.WeChatAppId);
            JSSDKHelper       jssdkHelper = new JSSDKHelper();

            shareInfo.Ticket    = jsApiTicket.ticket;
            shareInfo.CorpId    = ConfigHelper.WeChatAppId.ToLower();
            shareInfo.Noncestr  = JSSDKHelper.GetNoncestr().ToLower();
            shareInfo.Timestamp = JSSDKHelper.GetTimestamp().ToLower();
            shareInfo.Package   = "prepay_id=" + prepayid.ToLower();

            RequestHandler requestHandler = new RequestHandler(HttpContext.Current);

            requestHandler.SetParameter("appId", shareInfo.CorpId);
            requestHandler.SetParameter("timeStamp", shareInfo.Timestamp);
            requestHandler.SetParameter("nonceStr", shareInfo.Noncestr);
            requestHandler.SetParameter("package", shareInfo.Package);
            requestHandler.SetParameter("signType", "MD5");

            requestHandler.SetKey(tenPayV3Info.Key);
            requestHandler.CreateMd5Sign();
            requestHandler.GetRequestURL();
            requestHandler.CreateSHA1Sign();
            shareInfo.PaySign = (requestHandler.GetAllParameters()["sign"]).ToString();
            return(shareInfo);
        }
コード例 #4
0
        public object GetToken(Wx_App app, string secret)
        {
            Acesoft.Check.Require(secret == app.Secret, "传入的AppId与Secret不匹配!");

            var accessTokenResult = AccessTokenContainer.GetAccessTokenResult(app.AppId);
            var accessTokenBag    = BaseContainer <AccessTokenBag> .TryGetItem(app.AppId);

            var jsApiTicketResult = JsApiTicketContainer.GetJsApiTicketResult(app.AppId);
            var jsApiTicketBag    = BaseContainer <JsApiTicketBag> .TryGetItem(app.AppId);

            return(new
            {
                appid = app.AppId,
                token = accessTokenResult.access_token,
                token_expired = accessTokenBag.AccessTokenExpireTime.ToUnixTimeSeconds(),
                ticket = jsApiTicketResult.ticket,
                ticket_expired = jsApiTicketBag.JsApiTicketExpireTime.ToUnixTimeSeconds()
            });
        }
コード例 #5
0
        public static T TryCommonTicketApi <T>(Func <string, T> fun, string AppId, string strSecret, bool retryIfFaild = true) where T : WxJsonResult
        {
            string appId  = null;
            string ticket = null;

            if (AppId == null)
            {
                //appId = AccessTokenContainer.GetFirstOrDefaultAppId();
                if (appId == null)
                {
                    throw new UnRegisterAppIdException(null,
                                                       "尚无已经注册的AppId,请先使用AccessTokenContainer.Register完成注册(全局执行一次即可)!");
                }
            }
            else if (ApiUtility.IsAppId(AppId))
            {
                //if (!AccessTokenContainer.CheckRegistered(AppId))
                //{
                //    throw new UnRegisterAppIdException(AppId, string.Format("此appId({0})尚未注册,请先使用AccessTokenContainer.Register完成注册(全局执行一次即可)!", AppId));
                //}

                appId = AppId;
            }
            else
            {
                //accessToken
                ticket = AppId;
            }


            T result = null;

            try
            {
                if (ticket == null)
                {
                    var accessTokenResult = JsApiTicketContainer.GetJsApiTicketResult(appId, strSecret, Innocellence.Weixin.MP.CommonAPIs.CommonApi.GetTicket, false);
                    ticket = accessTokenResult.ticket;
                }
                result = fun(ticket);
            }
            catch (ErrorJsonResultException ex)
            {
                if (retryIfFaild &&
                    appId != null &&
                    ex.JsonResult.errcode == ReturnCode.Ticket不合法)
                {
                    JsApiTicketContainer.UpdateNull(appId, strSecret);

                    //尝试重新验证
                    var accessTokenResult = JsApiTicketContainer.GetJsApiTicketResult(appId, strSecret, Innocellence.Weixin.MP.CommonAPIs.CommonApi.GetTicket, false);//强制获取并刷新最新的AccessToken

                    if (ticket == accessTokenResult.ticket)
                    {
                        accessTokenResult = JsApiTicketContainer.GetJsApiTicketResult(appId, strSecret, Innocellence.Weixin.MP.CommonAPIs.CommonApi.GetTicket, true);
                    }


                    ticket = accessTokenResult.ticket;


                    result = fun(ticket);
                    //result = TryCommonApi(fun, appId,strSecret, false);
                }
                else
                {
                    throw;
                }
            }

            return(result);
        }