コード例 #1
0
        public void Add(JsApiTicket jsApiTicket)
        {
            if (jsApiTicket == null)
                return;

            _efRepository.Add(jsApiTicket);
        }
コード例 #2
0
        public JsApiTicket GetJsApiTicket(int wid, out string errorMessage)
        {
            lock (Obj)
            {
                try
                {
                    var appInfo = _appInfoRepository.GetAppInfo(wid);
                    if (appInfo == null)
                    {
                        errorMessage = string.Format("当前系统无wid为{0}相应公众号的配置", wid);
                        return null;
                    }
                    if (string.IsNullOrEmpty(appInfo.AppId) || string.IsNullOrEmpty(appInfo.AppSecret))
                    {
                        errorMessage = string.Format("当前系统wid为{0}相应公众号的配置不完整,AppId或者AppSecret未填写完全,请在[我的公众帐号]里补全信息!", wid);
                        return null;
                    }

                    var jsApiTicketFromDb = _jsApiTicketRepository.GetJsApiTicket(appInfo);

                    //判断是否存在或者是否过期
                    if (jsApiTicketFromDb == null || jsApiTicketFromDb.IsExpired())
                    {
                        //更改已过期的数据
                        _jsApiTicketRepository.SetJsApiTicketExpire(jsApiTicketFromDb);

                        //重新从微信申请ticket
                        string tokenErrorMessage;
                        var token = new AccessTokenService().GetAccessToken(wid, out tokenErrorMessage);
                        if (token == null || !string.IsNullOrEmpty(tokenErrorMessage))
                            throw new Exception(string.Format("获取JsApiTicket失败:{0}", tokenErrorMessage));

                        var result = OneGulp.WeChat.MP.CommonAPIs.CommonApi.GetTicket(token.Ticket);
                        var newJsApiTicket = new JsApiTicket()
                        {
                            Id = Guid.NewGuid(),
                            AppId = wid,
                            Ticket = result.ticket,
                            Expires = result.expires_in,
                            SysDateTime = DateTime.Now
                        };

                        _jsApiTicketRepository.Add(newJsApiTicket);

                        errorMessage = string.Empty;
                        return newJsApiTicket;
                    }

                    errorMessage = string.Empty;
                    return jsApiTicketFromDb;
                }
                catch (Exception exception)
                {
                    errorMessage = exception.Message;
                    return null;
                }
            }
        }
コード例 #3
0
        public void SetJsApiTicketExpire(JsApiTicket jsApiTicket)
        {
            if (jsApiTicket == null)
                return;

            jsApiTicket.Expired = true;
            jsApiTicket.ExpireDateTime = DateTime.Now;

            _efRepository.Update(jsApiTicket);
        }