예제 #1
0
        /// <summary>
        /// 获取令牌
        /// </summary>
        /// <returns></returns>
        public OJsTicket GetJsTicket()
        {
            //检查缓存及过期时间
            TimeSpan ts = _timeTag - DateTime.Now;

            if (ts.TotalSeconds > 0)
            {
                return(_jsticket);
            }

            //获取访问令牌
            try {
                string url = _api + "?access_token=" + _accessToken + "&type=jsapi";

                //if (_accessToken.ErrorCode == 0 && !string.IsNullOrEmpty(_accessToken.AccessToken)) {
                //    //刷新令牌
                //}

                //重新获取令牌
                using (WebClient wc = new WebClient()) {
                    string result = wc.DownloadString(url);
                    var    token  = JsonKit.Deserialize <access_token_obj>(result);
                    if (token != null)
                    {
                        if (!string.IsNullOrEmpty(token.ticket))
                        {
                            //转换
                            OJsTicket at = new OJsTicket();
                            at.Ticket          = token.ticket;
                            at.ExpiresInterval = token.expires_in;
                            _jsticket          = at;

                            //时间戳
                            _timeTag = DateTime.Now.AddSeconds(token.expires_in - 120);

                            return(_jsticket);
                        }
                        else
                        {
                            _jsticket = new OJsTicket()
                            {
                                ErrorCode = token.errcode, ErrorMessage = token.errmsg
                            };
                            return(_jsticket);
                        }
                    }
                }
            } catch (Exception ex) {
                _jsticket = new OJsTicket()
                {
                    ErrorCode = -1, ErrorMessage = ex.Message
                };
                return(_jsticket);
            }

            return(new OJsTicket()
            {
                ErrorCode = -1, ErrorMessage = "接口没有获取到正确结果!"
            });
        }
        /// <summary>
        /// 发送短信
        /// </summary>
        /// <param name="verifyCode"></param>
        /// <returns></returns>
        public OVerifyCode Send(string phone, string verifyCode)
        {
            try {
                using (WebClient wc = new WebClient()) {
                    wc.Credentials = CredentialCache.DefaultCredentials;

                    string tk = new OTokenAPI(_appId, _accessToken).GetToken().Token;

                    SortedDictionary <string, string> args = new SortedDictionary <string, string>();
                    args.Add("app_id", _appId);
                    args.Add("access_token", _accessToken);
                    args.Add("token", tk);
                    args.Add("phone", phone);
                    args.Add("randcode", verifyCode);
                    args.Add("timestamp", OConfig189.GetTimeStamp());
                    args.Add("exp_time", "3");                     //可选

                    string sign = Utility189.DoSignature(args, OConfig189.AppSecret);

                    args.Add("sign", sign);

                    Logger.Debug("189 OVerifyCodeCustomAPI.Send:" + Utility189.GetUrlParameters(args));

                    string result = Utility189.PostWebRequest(_api, Utility189.GetUrlParameters(args), Encoding.UTF8);

                    Logger.Debug("189 OVerifyCodeCustomAPI.Result:" + result);

                    var verifyCodeObj = JsonKit.Deserialize <verify_code_obj>(result);
                    if (verifyCodeObj != null)
                    {
                        if (!string.IsNullOrEmpty(verifyCodeObj.identifier))
                        {
                            //转换
                            OVerifyCode verify = new OVerifyCode();
                            verify.Identifier = verifyCodeObj.identifier;
                            verify.CreateAt   = verifyCodeObj.create_at;

                            return(verify);
                        }
                        else
                        {
                            return(new OVerifyCode()
                            {
                                ResultCode = verifyCodeObj.res_code, ResultMessage = verifyCodeObj.res_message
                            });
                        }
                    }
                }
            } catch (Exception ex) {
                return(new OVerifyCode()
                {
                    ResultCode = -1, ResultMessage = ex.Message
                });
            }

            return(new OVerifyCode()
            {
                ResultCode = -1, ResultMessage = "接口没有获取到正确结果!"
            });
        }
예제 #3
0
        public OWebAccessToken GetWebAccessToken()
        {
            //获取网页访问令牌及OpenID
            string url = _api + "?appid=" + _appId;

            url += "&secret=" + _appSecret;
            url += "&code=" + _code;
            url += "&grant_type=authorization_code";

            //if (_accessToken.ErrorCode == 0 && !string.IsNullOrEmpty(_accessToken.AccessToken)) {
            //    //刷新令牌
            //}

            Logger.Debug("OWebAccessTokenAPI URL:" + url);

            //重新获取令牌
            try {
                using (WebClient wc = new WebClient()) {
                    string result = wc.DownloadString(url);

                    Logger.Debug("OWebAccessTokenAPI.GetWebAccessToken:" + result);

                    var token = JsonKit.Deserialize <access_token_obj>(result);
                    if (token != null)
                    {
                        if (!string.IsNullOrEmpty(token.access_token))
                        {
                            OWebAccessToken at = new OWebAccessToken();
                            at.ErrorCode       = token.errcode;
                            at.ErrorMessage    = token.errmsg;
                            at.AccessToken     = token.access_token;
                            at.ExpiresInterval = token.expires_in;
                            at.RefreshToken    = token.refresh_token;
                            at.OpenId          = token.openid;
                            at.Scope           = token.scope;

                            return(at);
                        }
                        else
                        {
                            return(new OWebAccessToken()
                            {
                                ErrorCode = token.errcode, ErrorMessage = token.errmsg
                            });
                        }
                    }
                }
            } catch (Exception ex) {
                Logger.Error("OWebAccessTokenAPI Error", ex);

                return(new OWebAccessToken()
                {
                    ErrorCode = -1, ErrorMessage = ex.Message
                });
            }
            return(new OWebAccessToken()
            {
                ErrorCode = -1, ErrorMessage = "接口没有获取到正确结果!"
            });
        }
예제 #4
0
        public OToken GetToken()
        {
            try {
                using (WebClient wc = new WebClient()) {
                    wc.Credentials = CredentialCache.DefaultCredentials;

                    SortedDictionary <string, string> args = new SortedDictionary <string, string>();
                    args.Add("app_id", _appId);
                    args.Add("access_token", _accessToken);
                    args.Add("timestamp", OConfig189.GetTimeStamp());

                    string sign = Utility189.DoSignature(args, OConfig189.AppSecret);

                    args.Add("sign", sign);

                    string result = wc.DownloadString(_api + "?" + Utility189.GetUrlParameters(args));

                    Logger.Debug("189 OTokenAPI.GetToken:" + result);

                    var token = JsonKit.Deserialize <token_obj>(result);
                    if (token != null)
                    {
                        if (!string.IsNullOrEmpty(token.token))
                        {
                            //转换
                            OToken at = new OToken();
                            at.ResultCode = token.res_code;
                            at.Token      = token.token;

                            return(at);
                        }
                        else
                        {
                            return(new OToken()
                            {
                                ResultCode = token.res_code, ResultMessage = token.res_message
                            });
                        }
                    }
                }
            } catch (Exception ex) {
                return(new OToken()
                {
                    ResultCode = -1, ResultMessage = ex.Message
                });
            }

            return(new OToken()
            {
                ResultCode = -1, ResultMessage = "接口没有获取到正确结果!"
            });
        }
예제 #5
0
        /// <summary>
        /// 获取令牌
        /// </summary>
        /// <returns></returns>
        public OAccessToken GetAccessToken()
        {
            //检查缓存及过期时间
            TimeSpan ts = _timeTag - DateTime.Now;

            if (ts.TotalSeconds > 0)
            {
                Logger.Debug("OAccessTokenAPI Cache:(" + ts.TotalSeconds + "s)" + JsonKit.Serialize(_accessToken));

                return(_accessToken);
            }

            //获取访问令牌
            try {
                string url = _api + "?grant_type=client_credential";
                url += "&appid=" + _appId;
                url += "&secret=" + _appSecret;

                //if (_accessToken.ErrorCode == 0 && !string.IsNullOrEmpty(_accessToken.AccessToken)) {
                //    //刷新令牌
                //}

                Logger.Debug("OAccessTokenAPI URL:" + url);

                //重新获取令牌
                using (WebClient wc = new WebClient()) {
                    string result = wc.DownloadString(url);

                    Logger.Debug("OAccessTokenAPI.GetAccessToken:" + result);

                    var token = JsonKit.Deserialize <access_token_obj>(result);
                    if (token != null)
                    {
                        if (!string.IsNullOrEmpty(token.access_token))
                        {
                            //转换
                            OAccessToken at = new OAccessToken();
                            at.AccessToken     = token.access_token;
                            at.ExpiresInterval = token.expires_in;
                            _accessToken       = at;

                            //时间戳
                            _timeTag = DateTime.Now.AddSeconds(token.expires_in - 120);

                            return(_accessToken);
                        }
                        else
                        {
                            _accessToken = new OAccessToken()
                            {
                                ErrorCode = token.errcode, ErrorMessage = token.errmsg
                            };
                            return(_accessToken);
                        }
                    }
                }
            } catch (Exception ex) {
                _accessToken = new OAccessToken()
                {
                    ErrorCode = -1, ErrorMessage = ex.Message
                };
                return(_accessToken);
            }

            return(new OAccessToken()
            {
                ErrorCode = -1, ErrorMessage = "接口没有获取到正确结果!"
            });
        }
예제 #6
0
        /// <summary>
        /// 获取令牌
        /// </summary>
        /// <returns></returns>
        public OAccessToken GetAccessToken()
        {
            //获取访问令牌
            try {
                using (WebClient wc = new WebClient()) {
                    wc.Credentials = CredentialCache.DefaultCredentials;

                    NameValueCollection args = new NameValueCollection();
                    args.Add("grant_type", "client_credentials");
                    args.Add("app_id", _appId);
                    args.Add("app_secret", _appSecret);

                    byte[] results = wc.UploadValues(_api, args);
                    string result  = Encoding.UTF8.GetString(results);

                    Logger.Debug("189 OAccessTokenAPI.GetAccessToken:" + result);

                    var token = JsonKit.Deserialize <access_token_obj>(result);
                    if (token != null)
                    {
                        if (!string.IsNullOrEmpty(token.access_token))
                        {
                            //转换
                            OAccessToken at = new OAccessToken();
                            at.ResultCode    = token.res_code;
                            at.ResultMessage = token.res_message;
                            at.State         = token.state;

                            at.AccessToken     = token.access_token;
                            at.ExpiresInterval = token.expires_in;

                            at.OpenId = token.open_id;
                            at.Scope  = token.scope;

                            _accessToken = at;

                            //时间戳
                            _timeTag = DateTime.Now.AddSeconds(token.expires_in - 120);

                            return(_accessToken);
                        }
                        else
                        {
                            _accessToken = new OAccessToken()
                            {
                                ResultCode = token.res_code, ResultMessage = token.res_message
                            };
                            return(_accessToken);
                        }
                    }
                }
            } catch (Exception ex) {
                _accessToken = new OAccessToken()
                {
                    ResultCode = -1, ResultMessage = ex.Message
                };
                return(_accessToken);
            }

            return(new OAccessToken()
            {
                ResultCode = -1, ResultMessage = "接口没有获取到正确结果!"
            });
        }