public async Task <BaseResponse <TransferResponse> > Transfer(TransferRequest request) { request.ValidateRequest(); var jsonRequest = JsonConvert.SerializeObject(request); var signature = Helper.EncryptData(jsonRequest, _privateKey); _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", signature); var response = await _httpClient.SendAsync(new HttpRequestMessage { RequestUri = new Uri(TransferPath, UriKind.Relative), Method = HttpMethod.Post, Content = new StringContent(jsonRequest, Encoding.UTF8, JsonMediaType) }); var jsonResponse = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { throw new OpayCashierHttpException(response.StatusCode, jsonResponse); } return(JsonConvert.DeserializeObject <BaseResponse <TransferResponse> >(jsonResponse)); }