public async Task <HttpResponseMessage> GetTicket([FromUri] string code) { if (string.IsNullOrEmpty(code)) { return(Request.CreateResponse(HttpStatusCode.BadRequest, Error.LackInfo)); } string openid = await OpenIdHelper.GetOpenIdAsync(code); //string openid = "o5dhF1EKpj54qs6-GNoYtLPUSUOA"; if (string.IsNullOrEmpty(openid)) { return(Request.CreateResponse(HttpStatusCode.BadRequest, Error.LackInfo)); } EmployeeMap employeeMap = new EmployeeMap(); employeeMap.OpenId = openid; employeeMap.Code = code; string sql = @"select * from Employee where OpenId = @OpenId"; try { using (IDbConnection connection = new SqlConnection(DBHelper.GetConnectionString())) { var employeeMaps = connection.Query <EmployeeMap>(sql, employeeMap); if (employeeMaps == null || employeeMaps.Count() <= 0) { return(Request.CreateResponse(HttpStatusCode.NotFound, Error.NotFound)); } sql = @"select top 1 * from AccessToken order by ExpireTime desc"; var tickets = connection.Query <AccessToken>(sql); if (tickets == null || tickets.Count() <= 0) { return(Request.CreateResponse(HttpStatusCode.NotFound, Error.NotFound)); } string noncestr = ConfigurationManager.AppSettings["noncestr"].ToString(); string timestamp = ConfigurationManager.AppSettings["timestamp"].ToString(); string url = HttpContext.Current.Request.UrlReferrer.AbsoluteUri; string ticket = tickets.ToList()[0].Ticket; string signature = Sha1Helper.SHA1Encrypt($"jsapi_ticket={ticket}&noncestr={noncestr}×tamp={timestamp}&url={url}"); JObject result = new JObject(); result["sig"] = signature; result["openid"] = openid; return(Request.CreateResponse(HttpStatusCode.OK, result)); //HttpContext.Current.Response.Write(result); //HttpContext.Current.Response.End(); } } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.InternalServerError, Error.Server)); } }
private bool CheckSignature(Validation validation) { string token = ConfigurationManager.AppSettings["token"].ToString(); string[] arr = { token, validation.Timestamp, validation.Nonce }; Array.Sort(arr); string result = Sha1Helper.SHA1Encrypt(string.Join("", arr)); if (result == validation.Signature) { return(true); } else { return(false); } }