public async Task <PayPalToken> AuthorizeAsync() { var clientId = _configurationProvider.ClientId; var secret = _configurationProvider.ClientSecret; byte[] credentials = Encoding.GetEncoding("iso-8859-1").GetBytes($"{clientId}:{secret}"); var authRequest = new HttpRequestMessage(HttpMethod.Post, AuthUrl); authRequest.Headers.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(credentials)); authRequest.Content = new FormUrlEncodedContent(new Dictionary <string, string>() { { "grant_type", "client_credentials" } }); var response = await _http.SendAsync(authRequest); var content = await response.Content.ReadAsStringAsync(); var token = JsonConvert.DeserializeObject <PayPalToken>(content); _token = token; _lastAuthDate = DateTime.UtcNow; return(_token); }
private PayPalToken GetAuthorizationToken() { PayPalDetails details = db.PayPalDetails.First(); PayPalToken token = null; if (details.Expires < DateTime.Now) { token = GetSetPayPalToken(); } else { token = new PayPalToken() { Access_Token = details.Token }; } return(token); }
public PayPalToken GetSetPayPalToken() { PayPalDetails details = db.PayPalDetails.First(); string ClientID = details.ClientID; string Secret = details.Secret; HttpClient client = new HttpClient(); StringContent content = new StringContent("grant_type=client_credentials", Encoding.UTF8, "application/x-www-form-urlencoded"); var bytes = Encoding.UTF8.GetBytes(ClientID + ":" + Secret); client.DefaultRequestHeaders.Add("Authorization", "Basic " + Convert.ToBase64String(bytes)); HttpResponseMessage response = client.PostAsync("https://api.paypal.com/v1/oauth2/token", content).Result; if (response.IsSuccessStatusCode) { string json = response.Content.ReadAsStringAsync().Result; PayPalToken token = JsonConvert.DeserializeObject <PayPalToken>(json); int seconds = int.Parse(token.Expires_In); details.Token = token.Access_Token; details.Expires = DateTime.Now.AddSeconds(seconds); db.SaveChanges(); return(token); } else { return(new PayPalToken() { Access_Token = "Failed" }); } }
public async Task <ActionResult> BookFilm(int id) { var mf = db.MemberFilms.Where(m => m.FilmID == id && m.MemberID == CurrentMember.MemberID && m.Token != null).Any(); if (mf) { return(RedirectToAction("AlreadyBooked", "Members")); } bool blocked = await IsBlocked(id); if (blocked) { return(RedirectToAction("GeoBlocked")); } Film film = db.Films.Find(id); PayPalToken authToken = GetAuthorizationToken(); PayPalClientToken clientToken = null; PayPalDetails details = db.PayPalDetails.First(); if (authToken.Access_Token == "Failed") { clientToken = new PayPalClientToken() { client_id = details.ClientID, client_token = "FailedAuthorization" }; } else { clientToken = GetClientToken(authToken.Access_Token); clientToken.client_id = details.ClientID; } BookFilmViewModel vm = new BookFilmViewModel() { FilmID = id, ClientID = clientToken.client_id, ClientToken = clientToken.client_token }; if (film != null) { ViewBag.ShowingTime = film.Showing; } ViewBag.CurrentTime = await GetLocationTime(); if (film.FilmID == 242 || film.FilmID == 244 || film.FilmID == 245 || film.FilmID == 248) { ViewBag.Fiver = true; } else { ViewBag.Fiver = false; } return(View(vm)); }