Esempio n. 1
0
        /// <summary>
        /// 获取口令(公众号)
        /// </summary>
        /// <param name="trans">事物</param>
        /// <param name="conn">连接</param>
        /// <param name="grant_Type">grant_Type</param>
        /// <returns></returns>
        public List <MAccess_Token> GetAccess_Token(IDbTransaction trans, IDbConnection conn, string grant_Type)
        {
            string          sqlText           = @"select KeyID,AppID,WeixinID,AppSecret,Access_Token,Grant_Type,AddTime,OutTime,ModifyTime,IsDelete  from Access_Token WHERE  Grant_Type=@Grant_Type and IsDelete = 0 ";
            MySqlParameters destionParameters = new MySqlParameters();

            destionParameters.Add(new MySqlParameter()
            {
                ParameterName = "@Grant_Type", MySqlDbType = MySqlDbType.VarChar, Value = grant_Type
            });

            List <MAccess_Token> access_TokenList = new List <MAccess_Token>();

            using (MySqlDataReader reader = Common.DBUtility.MySqlHelper.ExecuteReader(trans, conn, sqlText, destionParameters.ToArray()))
            {
                MAccess_Token access_Token = null;
                while (reader.Read())
                {
                    access_Token              = new MAccess_Token();
                    access_Token.KeyID        = reader["KeyID"] == DBNull.Value ? string.Empty : reader["KeyID"].ToString();
                    access_Token.AppID        = reader["AppID"] == DBNull.Value ? string.Empty : reader["AppID"].ToString();
                    access_Token.WeixinID     = reader["WeixinID"] == DBNull.Value ? string.Empty : reader["WeixinID"].ToString();
                    access_Token.AppSecret    = reader["AppSecret"] == DBNull.Value ? string.Empty : reader["AppSecret"].ToString();
                    access_Token.Access_Token = reader["Access_Token"] == DBNull.Value ? string.Empty : SecurityUtility.DecryptString(reader["Access_Token"].ToString());
                    access_Token.Grant_Type   = reader["Grant_Type"] == DBNull.Value ? string.Empty : reader["Grant_Type"].ToString();
                    access_Token.AddTime      = reader["AddTime"] == DBNull.Value ? new DateTime(1990, 1, 1) : Convert.ToDateTime(reader["AddTime"]);
                    access_Token.OutTime      = reader["OutTime"] == DBNull.Value ? new DateTime(1990, 1, 1) : Convert.ToDateTime(reader["OutTime"]);
                    access_TokenList.Add(access_Token);
                }
            }

            return(access_TokenList);
        }
 /// <summary>
 /// 插入token
 /// </summary>
 public BInsertAccess_Token(MAccess_Token access_Token)
 {
     this.access_TokenInfo   = access_Token;
     this.Connection         = ConnectionFactory.WeChatDBWrite;
     this.IsBeginTransaction = false;
     this.access_TokenDal    = new DAccess_Token();
 }
        /// <summary>
        /// 根据微信ID获取ticket
        /// </summary>
        /// <param name="weixinID"></param>
        /// <returns></returns>
        public string GetTicketByWeixinID(string weixinID)
        {
            Dictionary <string, object> bugobjd = new Dictionary <string, object>();
            string ticket = string.Empty;

            try
            {
                bugobjd.Add("根据微信ID获取ticket", "根据微信ID获取ticket");
                bugobjd.Add("WeixinAppInfoDic", WeixinAppInfoDic);
                if (WeixinAppInfoDic.ContainsKey(weixinID))
                {
                    MWeixinParam weixinParam = WeixinAppInfoDic[weixinID];

                    bugobjd.Add("weixinParam", weixinParam);

                    if (Access_TokenInfoDic.ContainsKey(weixinParam.AppID))
                    {
                        MAccess_Token access_Token = Access_TokenInfoDic[weixinParam.AppID];

                        if (String.IsNullOrEmpty(access_Token.Access_Token) || DateTime.Now >= access_Token.OutTime)
                        {
                            RefeshToken(weixinParam.AppID);
                            access_Token = Access_TokenInfoDic[weixinParam.AppID];
                        }

                        if (WeixinTicketDic.ContainsKey(access_Token.Access_Token))
                        {
                            if (String.IsNullOrEmpty(WeixinTicketDic[access_Token.Access_Token].Ticket) || DateTime.Now >= WeixinTicketDic[access_Token.Access_Token].OutTime)
                            {
                                RefeshTicket(Access_TokenInfoDic[weixinParam.AppID].Access_Token);
                            }
                        }
                        else
                        {
                            RefeshTicket(Access_TokenInfoDic[weixinParam.AppID].Access_Token);
                        }

                        bugobjd.Add(" Access_TokenInfo", Access_TokenInfoDic[weixinParam.AppID]);
                        bugobjd.Add(" WeixinTicket", WeixinTicketDic[Access_TokenInfoDic[weixinParam.AppID].Access_Token]);
                        ticket = WeixinTicketDic[Access_TokenInfoDic[weixinParam.AppID].Access_Token].Ticket;
                    }
                }
            }
            catch (Exception ex)
            {
                TxtLogHelper.WriteLog_Day(new TxtLogInfoObject()
                {
                    LogType    = EnumLogType.Error,
                    LogMessage = string.Format(" 根据微信ID获取ticket错误信息{0};堆栈信息{1}", ex.Message, ex.StackTrace),
                });
                throw;
            }
            finally
            {
                TxtLogHelper.WriteDebugLog(bugobjd);
            }

            return(ticket);
        }
Esempio n. 4
0
        /// <summary>
        /// 记录token
        /// </summary>
        /// <param name="trans">事物</param>
        /// <param name="conn">连接</param>
        /// <param name="access_Token">令牌</param>
        /// <returns>是否成功</returns>
        public bool InsertAccess_Token(IDbTransaction trans, IDbConnection conn, MAccess_Token access_Token)
        {
            string          insertsql  = @"Insert into  Access_Token(KeyID,AppID,WeixinID,AppSecret,Access_Token,RefreshToken,Grant_Type,OpenID,Scope,UnionID,AddTime,OutTime,ModifyTime,IsDelete
                                            )VALUES(@KeyID,@AppID,@WeixinID,@AppSecret,@Access_Token,@RefreshToken,@Grant_Type,@OpenID,@Scope,@UnionID,now(),@OutTime,now(),0);";
            MySqlParameters parameters = new MySqlParameters();

            parameters.Add(new MySqlParameter()
            {
                ParameterName = "@KeyID", MySqlDbType = MySqlDbType.VarChar, Value = access_Token.KeyID
            });
            parameters.Add(new MySqlParameter()
            {
                ParameterName = "@AppID", MySqlDbType = MySqlDbType.VarChar, Value = access_Token.AppID
            });
            parameters.Add(new MySqlParameter()
            {
                ParameterName = "@WeixinID", MySqlDbType = MySqlDbType.VarChar, Value = access_Token.WeixinID
            });
            parameters.Add(new MySqlParameter()
            {
                ParameterName = "@AppSecret", MySqlDbType = MySqlDbType.VarChar, Value = access_Token.AppSecret
            });
            parameters.Add(new MySqlParameter()
            {
                ParameterName = "@Access_Token", MySqlDbType = MySqlDbType.VarChar, Value = access_Token.Access_Token
            });
            parameters.Add(new MySqlParameter()
            {
                ParameterName = "@RefreshToken", MySqlDbType = MySqlDbType.VarChar, Value = access_Token.RefreshToken
            });
            parameters.Add(new MySqlParameter()
            {
                ParameterName = "@Grant_Type", MySqlDbType = MySqlDbType.VarChar, Value = access_Token.Grant_Type
            });
            parameters.Add(new MySqlParameter()
            {
                ParameterName = "@OpenID", MySqlDbType = MySqlDbType.VarChar, Value = access_Token.OpenID
            });
            parameters.Add(new MySqlParameter()
            {
                ParameterName = "@Scope", MySqlDbType = MySqlDbType.VarChar, Value = access_Token.Scope
            });
            parameters.Add(new MySqlParameter()
            {
                ParameterName = "@UnionID", MySqlDbType = MySqlDbType.VarChar, Value = access_Token.UnionID
            });
            parameters.Add(new MySqlParameter()
            {
                ParameterName = "@OutTime", MySqlDbType = MySqlDbType.DateTime, Value = access_Token.OutTime
            });
            return(Common.DBUtility.MySqlHelper.ExecuteSql(trans, conn, insertsql, parameters.ToArray()) == 1);
        }
Esempio n. 5
0
        /// <summary>
        /// 获取口令(用户的)
        /// </summary>
        /// <param name="trans">事物</param>
        /// <param name="conn">连接</param>
        /// <param name="appid">appid</param>
        /// <param name="appSecret">appSecret</param>
        /// <param name="openID">OpendID</param>
        /// <param name="scope">Scope</param>
        /// <returns>用户令牌</returns>
        public MAccess_Token GetAccess_Token(IDbTransaction trans, IDbConnection conn, string appid, string appSecret, string openID, string scope)
        {
            string          sqlText           = @"select KeyID,AppID,AppSecret,WeixinID,Access_Token, RefreshToken,Grant_Type,OpenID,Scope,UnionID,AddTime,OutTime,ModifyTime,IsDelete from Access_Token 
WHERE AppID = @AppID and  AppSecret= @AppSecret and OpenID=@OpenID and Scope=@Scope and IsDelete = 0 limit 1";
            MySqlParameters destionParameters = new MySqlParameters();

            destionParameters.Add(new MySqlParameter()
            {
                ParameterName = "@AppID", MySqlDbType = MySqlDbType.VarChar, Value = appid
            });
            destionParameters.Add(new MySqlParameter()
            {
                ParameterName = "@AppSecret", MySqlDbType = MySqlDbType.VarChar, Value = appSecret
            });
            destionParameters.Add(new MySqlParameter()
            {
                ParameterName = "@OpenID", MySqlDbType = MySqlDbType.VarChar, Value = openID
            });
            destionParameters.Add(new MySqlParameter()
            {
                ParameterName = "@Scope", MySqlDbType = MySqlDbType.VarChar, Value = scope
            });

            MAccess_Token access_Token = null;

            using (MySqlDataReader reader = Common.DBUtility.MySqlHelper.ExecuteReader(trans, conn, sqlText, destionParameters.ToArray()))
            {
                while (reader.Read())
                {
                    access_Token              = new MAccess_Token();
                    access_Token.KeyID        = reader["KeyID"] == DBNull.Value ? string.Empty : reader["KeyID"].ToString();
                    access_Token.AppID        = reader["AppID"] == DBNull.Value ? string.Empty : reader["AppID"].ToString();
                    access_Token.AppSecret    = reader["AppSecret"] == DBNull.Value ? string.Empty : reader["AppSecret"].ToString();
                    access_Token.WeixinID     = reader["WeixinID"] == DBNull.Value ? string.Empty : reader["WeixinID"].ToString();
                    access_Token.Access_Token = reader["Access_Token"] == DBNull.Value ? string.Empty : SecurityUtility.DecryptString(reader["Access_Token"].ToString());
                    access_Token.RefreshToken = reader["RefreshToken"] == DBNull.Value ? string.Empty : SecurityUtility.DecryptString(reader["RefreshToken"].ToString());
                    access_Token.Grant_Type   = reader["Grant_Type"] == DBNull.Value ? string.Empty : reader["Grant_Type"].ToString();
                    access_Token.OpenID       = reader["OpenID"] == DBNull.Value ? string.Empty : reader["OpenID"].ToString();
                    access_Token.Scope        = reader["Scope"] == DBNull.Value ? string.Empty : reader["Scope"].ToString();
                    access_Token.UnionID      = reader["UnionID"] == DBNull.Value ? string.Empty : reader["UnionID"].ToString();
                    access_Token.AddTime      = reader["AddTime"] == DBNull.Value ? new DateTime(1990, 1, 1) : Convert.ToDateTime(reader["AddTime"]);
                    access_Token.OutTime      = reader["OutTime"] == DBNull.Value ? new DateTime(1990, 1, 1) : Convert.ToDateTime(reader["OutTime"]);
                }
            }

            return(access_Token);
        }