public static async Task <string> GetTokenAsync(APISettingsConfig apiSettingsConfig, HttpClient client, string code, string bankId) { var uriBuilder = new UriBuilder($"{apiSettingsConfig.SERVER_PATH}/{bankId}/{apiSettingsConfig.TOKEN_PATH}"); var query = HttpUtility.ParseQueryString(uriBuilder.Query); query["clientId"] = apiSettingsConfig.API_KEY; query["code"] = code; uriBuilder.Query = query.ToString(); var request = new HttpRequestMessage(HttpMethod.Get, uriBuilder.ToString()); request.Headers.Add("Accept-Encoding", "gzip"); request.Headers.Add("Accept-Charset", "utf-8"); var response = await client.SendAsync(request, HttpCompletionOption.ResponseContentRead); response.EnsureSuccessStatusCode(); var payload = JObject.Parse(await response.Content.ReadAsStringAsync()); if (payload["error"] != null) { throw new InvalidOperationException("An error occurred while retrieving an access token."); } return((string)payload["access_token"]); }
private static HttpRequestMessage GetCommonRequestMessage(APISettingsConfig apiSettingsConfig, string url, string token) { var request = new HttpRequestMessage(HttpMethod.Post, url); request.Headers.Add("Authorization", apiSettingsConfig.AUTH_BARERE_PREFIX + token); request.Headers.Add("Accept-Language", "en-US"); request.Headers.Add("Accept-Encoding", "gzip"); request.Headers.Add("Accept-Charset", "utf-8"); request.Headers.Add("X-JWS-SIGNATURE", apiSettingsConfig.X_JWS_SIGNATURE); return(request); }
public static async Task <List <Account> > GetAccountsAsync(APISettingsConfig apiSettingsConfig, HttpClient client, string token, string code, string bankId) { var uriBuilder = new UriBuilder($"{apiSettingsConfig.SERVER_PATH}/{bankId}/{apiSettingsConfig.ACCOUNTS_PATH}"); var query = HttpUtility.ParseQueryString(uriBuilder.Query); query["bankId"] = bankId; uriBuilder.Query = query.ToString(); var request = GetCommonRequestMessage(apiSettingsConfig, uriBuilder.ToString(), token); var requestHeaderInfo = new RequestHeaderInfo { requestHeader = new RequestHeader { requestId = Guid.NewGuid().ToString(), token = token, tppId = apiSettingsConfig.API_KEY, sendDate = DateTime.Now } }; var json = JsonConvert.SerializeObject(requestHeaderInfo); var content = new StringContent(json, Encoding.UTF8, "application/json"); request.Content = content; var response = await client.SendAsync(request, HttpCompletionOption.ResponseContentRead); response.EnsureSuccessStatusCode(); var payload = JObject.Parse(await response.Content.ReadAsStringAsync()); if (payload["error"] != null) { throw new InvalidOperationException("An error occurred while retrieving an access token."); } var ret = new List <Account>(); var accounts = payload["accounts"]; var count = accounts.Count(); if (count > 0) { var accountsArray = accounts.ToObject <Account[]>(); ret = accountsArray.ToList(); } return(ret); }